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

github.com/jgraph/drawio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benson <david@draw.io>2022-06-12 23:12:59 +0300
committerDavid Benson <david@draw.io>2022-06-12 23:12:59 +0300
commit6765eadf11eae8eb5c07708577071f801316658c (patch)
tree739a5d05c78f78bf68d23fbd6dbbf396277095a7
parentd8f93553513290c21c8356ae04dca4c84120f06b (diff)
20.0.1 releasev20.0.1
-rw-r--r--ChangeLog7
-rw-r--r--VERSION2
-rw-r--r--src/main/webapp/export3.html2
-rw-r--r--src/main/webapp/js/app.min.js1763
-rw-r--r--src/main/webapp/js/diagramly/Editor.js21
-rw-r--r--src/main/webapp/js/export.js10
-rw-r--r--src/main/webapp/js/grapheditor/EditorUi.js16
-rw-r--r--src/main/webapp/js/integrate.min.js1680
-rw-r--r--src/main/webapp/js/viewer-static.min.js2424
-rw-r--r--src/main/webapp/js/viewer.min.js2424
-rw-r--r--src/main/webapp/mxgraph/mxClient.js2
-rw-r--r--src/main/webapp/resources/dia_pt-br.txt40
-rw-r--r--src/main/webapp/service-worker.js2
-rw-r--r--src/main/webapp/service-worker.js.map2
14 files changed, 4223 insertions, 4172 deletions
diff --git a/ChangeLog b/ChangeLog
index 5aad51b8..2ef65cdb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+12-JUN-2022: 20.0.1
+
+- Fixes bold math in print output for Chrome [2873]
+- Disables MathJax for Internet Explorer
+- Adds MathJax callback, fixes math in PDF export
+- Fixes style changes override default style [2164]
+
11-JUN-2022: 20.0.0
- Fixes font style button state before typing [2398]
diff --git a/VERSION b/VERSION
index 54954dc9..27155f75 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-20.0.0 \ No newline at end of file
+20.0.1 \ No newline at end of file
diff --git a/src/main/webapp/export3.html b/src/main/webapp/export3.html
index 6304b808..0dce16f1 100644
--- a/src/main/webapp/export3.html
+++ b/src/main/webapp/export3.html
@@ -5,7 +5,7 @@
<script src="js/export-init.js"></script>
<!-- CSS for print output is needed for using current window -->
<style type="text/css">
- span.MathJax_SVG svg { shape-rendering: crispEdges; }
+ .MathJax svg { shape-rendering: crispEdges; }
table.mxPageSelector { display: none; }
hr.mxPageBreak { display: none; }
</style>
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index e771804c..b870582f 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -469,7 +469,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.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/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.1",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]"!==
@@ -2348,54 +2348,54 @@ Editor.prototype.setFilename=function(a){this.filename=a};
Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(d,g){b.undoableEditHappened(g.getProperty("edit"))};var f=mxUtils.bind(this,function(d,g){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(d,g){d=a.getSelectionCellsForChanges(g.getProperty("edit").changes,function(k){return!(k instanceof mxChildChange)});if(0<d.length){a.getModel();g=[];for(var e=0;e<d.length;e++)null!=
a.view.getState(d[e])&&g.push(d[e]);a.setSelectionCells(g)}};b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);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,f,d,g,e,k,n,u,m,r){var x=u?57:0,A=f,C=d,F=u?0:64,K=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(K.height=window.innerHeight);var D=K.height,O=Math.max(1,Math.round((K.width-f-F)/2)),Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));b.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-F):f;d=Math.min(d,D-F);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=D+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));K=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=K.x+"px";this.bg.style.top=K.y+"px";O+=K.x;Q+=K.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-Q+=a.embedViewport.y,O+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var R=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(O,Q,f,d);O=g.x;Q=g.y;R.style.width=f+"px";R.style.height=d+"px";R.style.left=O+"px";R.style.top=Q+"px";R.style.zIndex=this.zIndex;R.appendChild(b);document.body.appendChild(R);!n&&b.clientHeight>R.clientHeight-F&&(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=Q+14+"px",e.style.left=O+f+38-x+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!r)){var P=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(Z){P=!0}),null,mxUtils.bind(this,function(Z){P&&(a.hideDialog(!0),P=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=m){var Z=m();
-null!=Z&&(A=f=Z.w,C=d=Z.h)}Z=mxUtils.getDocumentSize();D=Z.height;this.bg.style.height=D+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");O=Math.max(1,Math.round((Z.width-f-F)/2));Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));f=null!=document.body?Math.min(A,document.body.scrollWidth-F):A;d=Math.min(C,D-F);Z=this.getPosition(O,Q,f,d);O=Z.x;Q=Z.y;R.style.left=O+"px";R.style.top=Q+"px";R.style.width=f+"px";R.style.height=d+"px";!n&&
-b.clientHeight>R.clientHeight-F&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=Q+14+"px",this.dialogImg.style.left=O+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=R;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+function Dialog(a,b,f,d,g,e,k,n,u,m,r){var x=u?57:0,B=f,C=d,G=u?0:64,J=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(J.height=window.innerHeight);var D=J.height,N=Math.max(1,Math.round((J.width-f-G)/2)),Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));b.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-G):f;d=Math.min(d,D-G);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=D+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));J=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=J.x+"px";this.bg.style.top=J.y+"px";N+=J.x;Q+=J.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
+Q+=a.embedViewport.y,N+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var R=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(N,Q,f,d);N=g.x;Q=g.y;R.style.width=f+"px";R.style.height=d+"px";R.style.left=N+"px";R.style.top=Q+"px";R.style.zIndex=this.zIndex;R.appendChild(b);document.body.appendChild(R);!n&&b.clientHeight>R.clientHeight-G&&(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=Q+14+"px",e.style.left=N+f+38-x+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!r)){var P=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(Z){P=!0}),null,mxUtils.bind(this,function(Z){P&&(a.hideDialog(!0),P=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=m){var Z=m();
+null!=Z&&(B=f=Z.w,C=d=Z.h)}Z=mxUtils.getDocumentSize();D=Z.height;this.bg.style.height=D+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");N=Math.max(1,Math.round((Z.width-f-G)/2));Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));f=null!=document.body?Math.min(B,document.body.scrollWidth-G):B;d=Math.min(C,D-G);Z=this.getPosition(N,Q,f,d);N=Z.x;Q=Z.y;R.style.left=N+"px";R.style.top=Q+"px";R.style.width=f+"px";R.style.height=d+"px";!n&&
+b.clientHeight>R.clientHeight-G&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=Q+14+"px",this.dialogImg.style.left=N+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=R;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+
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
-var ErrorDialog=function(a,b,f,d,g,e,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=b){var A=document.createElement("div");A.style.padding="0px";A.style.margin="0px";A.style.fontSize="18px";A.style.paddingBottom="16px";A.style.marginBottom="10px";A.style.borderBottom="1px solid #c0c0c0";A.style.color="gray";A.style.whiteSpace="nowrap";A.style.textOverflow="ellipsis";A.style.overflow="hidden";mxUtils.write(A,b);A.setAttribute("title",b);x.appendChild(A)}b=
+var ErrorDialog=function(a,b,f,d,g,e,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=b){var B=document.createElement("div");B.style.padding="0px";B.style.margin="0px";B.style.fontSize="18px";B.style.paddingBottom="16px";B.style.marginBottom="10px";B.style.borderBottom="1px solid #c0c0c0";B.style.color="gray";B.style.whiteSpace="nowrap";B.style.textOverflow="ellipsis";B.style.overflow="hidden";mxUtils.write(B,b);B.setAttribute("title",b);x.appendChild(B)}b=
document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;x.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=e&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();e()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=r&&r()}),m.className="geBtn",f.appendChild(m));var C=mxUtils.button(d,function(){u&&a.hideDialog();null!=g&&g()});
C.className="geBtn";f.appendChild(C);null!=k&&(d=mxUtils.button(k,function(){u&&a.hideDialog();null!=n&&n()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){C.focus()};x.appendChild(f);this.container=x},PrintDialog=function(a,b){this.create(a,b)};
-PrintDialog.prototype.create=function(a){function b(C){var F=k.checked||m.checked,K=parseInt(x.value)/100;isNaN(K)&&(K=1,x.value="100%");K*=.75;var D=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,O=1/f.pageScale;if(F){var Q=k.checked?1:parseInt(r.value);isNaN(Q)||(O=mxUtils.getScaleForPageCount(Q,f,D))}f.getGraphBounds();var R=Q=0;D=mxRectangle.fromRectangle(D);D.width=Math.ceil(D.width*K);D.height=Math.ceil(D.height*K);O*=K;!F&&f.pageVisible?(K=f.getPageLayout(),Q-=K.x*D.width,R-=K.y*D.height):
-F=!0;F=PrintDialog.createPrintPreview(f,O,D,0,Q,R,F);F.open();C&&PrintDialog.printPreview(F)}var f=a.editor.graph,d=document.createElement("table");d.style.width="100%";d.style.height="100%";var g=document.createElement("tbody");var e=document.createElement("tr");var k=document.createElement("input");k.setAttribute("type","checkbox");var n=document.createElement("td");n.setAttribute("colspan","2");n.style.fontSize="10pt";n.appendChild(k);var u=document.createElement("span");mxUtils.write(u," "+mxResources.get("fitPage"));
+PrintDialog.prototype.create=function(a){function b(C){var G=k.checked||m.checked,J=parseInt(x.value)/100;isNaN(J)&&(J=1,x.value="100%");J*=.75;var D=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,N=1/f.pageScale;if(G){var Q=k.checked?1:parseInt(r.value);isNaN(Q)||(N=mxUtils.getScaleForPageCount(Q,f,D))}f.getGraphBounds();var R=Q=0;D=mxRectangle.fromRectangle(D);D.width=Math.ceil(D.width*J);D.height=Math.ceil(D.height*J);N*=J;!G&&f.pageVisible?(J=f.getPageLayout(),Q-=J.x*D.width,R-=J.y*D.height):
+G=!0;G=PrintDialog.createPrintPreview(f,N,D,0,Q,R,G);G.open();C&&PrintDialog.printPreview(G)}var f=a.editor.graph,d=document.createElement("table");d.style.width="100%";d.style.height="100%";var g=document.createElement("tbody");var e=document.createElement("tr");var k=document.createElement("input");k.setAttribute("type","checkbox");var n=document.createElement("td");n.setAttribute("colspan","2");n.style.fontSize="10pt";n.appendChild(k);var u=document.createElement("span");mxUtils.write(u," "+mxResources.get("fitPage"));
n.appendChild(u);mxEvent.addListener(u,"click",function(C){k.checked=!k.checked;m.checked=!k.checked;mxEvent.consume(C)});mxEvent.addListener(k,"change",function(){m.checked=!k.checked});e.appendChild(n);g.appendChild(e);e=e.cloneNode(!1);var m=document.createElement("input");m.setAttribute("type","checkbox");n=document.createElement("td");n.style.fontSize="10pt";n.appendChild(m);u=document.createElement("span");mxUtils.write(u," "+mxResources.get("posterPrint")+":");n.appendChild(u);mxEvent.addListener(u,
"click",function(C){m.checked=!m.checked;k.checked=!m.checked;mxEvent.consume(C)});e.appendChild(n);var r=document.createElement("input");r.setAttribute("value","1");r.setAttribute("type","number");r.setAttribute("min","1");r.setAttribute("size","4");r.setAttribute("disabled","disabled");r.style.width="50px";n=document.createElement("td");n.style.fontSize="10pt";n.appendChild(r);mxUtils.write(n," "+mxResources.get("pages")+" (max)");e.appendChild(n);g.appendChild(e);mxEvent.addListener(m,"change",
function(){m.checked?r.removeAttribute("disabled"):r.setAttribute("disabled","disabled");k.checked=!m.checked});e=e.cloneNode(!1);n=document.createElement("td");mxUtils.write(n,mxResources.get("pageScale")+":");e.appendChild(n);n=document.createElement("td");var x=document.createElement("input");x.setAttribute("value","100 %");x.setAttribute("size","5");x.style.width="50px";n.appendChild(x);e.appendChild(n);g.appendChild(e);e=document.createElement("tr");n=document.createElement("td");n.colSpan=2;
-n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});A.className="geBtn";n.appendChild(A)}A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});A.className="geBtn gePrimaryBtn";n.appendChild(A);a.editor.cancelFirst||
+n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var B=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});B.className="geBtn";n.appendChild(B)}B=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});B.className="geBtn gePrimaryBtn";n.appendChild(B);a.editor.cancelFirst||
n.appendChild(u);e.appendChild(n);g.appendChild(e);d.appendChild(g);this.container=d};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(f){}};
PrintDialog.createPrintPreview=function(a,b,f,d,g,e,k){b=new mxPrintPreview(a,b,f,d,g,e);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var n=b.writeHead;b.writeHead=function(u){n.apply(this,arguments);u.writeln('<style type="text/css">');u.writeln("@media screen {");u.writeln(" body > div { padding:30px;box-sizing:content-box; }");u.writeln("}");u.writeln("</style>")};return b};
PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(a){function b(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var D=F;null!=D&&Graph.isPageLink(D.src)&&(D=a.createImageForPageLink(D.src,null));null!=D&&null!=D.src?(C.setAttribute("src",D.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var d=a.editor.graph,g=document.createElement("table");g.style.width=
+var PageSetupDialog=function(a){function b(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var D=G;null!=D&&Graph.isPageLink(D.src)&&(D=a.createImageForPageLink(D.src,null));null!=D&&null!=D.src?(C.setAttribute("src",D.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var d=a.editor.graph,g=document.createElement("table");g.style.width=
"100%";g.style.height="100%";var e=document.createElement("tbody");var k=document.createElement("tr");var n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";mxUtils.write(n,mxResources.get("paperSize")+":");k.appendChild(n);n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";var u=PageSetupDialog.addPageFormatPanel(n,"pagesetupdialog",d.pageFormat);k.appendChild(n);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");
mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var r=d.background;b();mxEvent.addListener(m,
-"click",function(D){a.pickColor(r||"none",function(O){r=O;b()});mxEvent.consume(D)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=d.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var D=parseInt(x.value);x.value=Math.max(1,isNaN(D)?d.getGridSize():D)});k.appendChild(n);e.appendChild(k);k=document.createElement("tr");
-n=document.createElement("td");mxUtils.write(n,mxResources.get("image")+":");k.appendChild(n);n=document.createElement("td");var A=document.createElement("button");A.className="geBtn";A.style.margin="0px";mxUtils.write(A,mxResources.get("change")+"...");var C=document.createElement("img");C.setAttribute("valign","middle");C.style.verticalAlign="middle";C.style.border="1px solid lightGray";C.style.borderRadius="4px";C.style.marginRight="14px";C.style.maxWidth="100px";C.style.cursor="pointer";C.style.height=
-"60px";C.style.padding="4px";var F=d.backgroundImage,K=function(D){a.showBackgroundImageDialog(function(O,Q){Q||(F=O,f())},F);mxEvent.consume(D)};mxEvent.addListener(A,"click",K);mxEvent.addListener(C,"click",K);f();n.appendChild(C);n.appendChild(A);k.appendChild(n);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.paddingTop="16px";n.setAttribute("align","right");A=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});A.className="geBtn";
-a.editor.cancelFirst&&n.appendChild(A);K=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var D=parseInt(x.value);isNaN(D)||d.gridSize===D||d.setGridSize(D);D=new ChangePageSetup(a,r,F,u.get());D.ignoreColor=d.background==r;D.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=F?F.src:null);d.pageFormat.width==D.previousFormat.width&&d.pageFormat.height==D.previousFormat.height&&D.ignoreColor&&D.ignoreImage||d.model.execute(D)});K.className="geBtn gePrimaryBtn";
-n.appendChild(K);a.editor.cancelFirst||n.appendChild(A);k.appendChild(n);e.appendChild(k);g.appendChild(e);this.container=g};
-PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function g(Z,T,U){if(U||x!=document.activeElement&&A!=document.activeElement){Z=!1;for(T=0;T<F.length;T++)U=F[T],Q?"custom"==U.key&&(n.value=U.key,Q=!1):null!=U.format&&("a4"==U.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==U.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==U.format.width&&
-f.height==U.format.height?(n.value=U.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1,Z=!0):f.width==U.format.height&&f.height==U.format.width&&(n.value=U.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,k.setAttribute("checked","checked"),k.defaultChecked=!0,Z=k.checked=!0));Z?(u.style.display="",r.style.display="none"):(x.value=f.width/100,A.value=f.height/100,e.setAttribute("checked","checked"),
+"click",function(D){a.pickColor(r||"none",function(N){r=N;b()});mxEvent.consume(D)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=d.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var D=parseInt(x.value);x.value=Math.max(1,isNaN(D)?d.getGridSize():D)});k.appendChild(n);e.appendChild(k);k=document.createElement("tr");
+n=document.createElement("td");mxUtils.write(n,mxResources.get("image")+":");k.appendChild(n);n=document.createElement("td");var B=document.createElement("button");B.className="geBtn";B.style.margin="0px";mxUtils.write(B,mxResources.get("change")+"...");var C=document.createElement("img");C.setAttribute("valign","middle");C.style.verticalAlign="middle";C.style.border="1px solid lightGray";C.style.borderRadius="4px";C.style.marginRight="14px";C.style.maxWidth="100px";C.style.cursor="pointer";C.style.height=
+"60px";C.style.padding="4px";var G=d.backgroundImage,J=function(D){a.showBackgroundImageDialog(function(N,Q){Q||(G=N,f())},G);mxEvent.consume(D)};mxEvent.addListener(B,"click",J);mxEvent.addListener(C,"click",J);f();n.appendChild(C);n.appendChild(B);k.appendChild(n);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.paddingTop="16px";n.setAttribute("align","right");B=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});B.className="geBtn";
+a.editor.cancelFirst&&n.appendChild(B);J=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var D=parseInt(x.value);isNaN(D)||d.gridSize===D||d.setGridSize(D);D=new ChangePageSetup(a,r,G,u.get());D.ignoreColor=d.background==r;D.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=G?G.src:null);d.pageFormat.width==D.previousFormat.width&&d.pageFormat.height==D.previousFormat.height&&D.ignoreColor&&D.ignoreImage||d.model.execute(D)});J.className="geBtn gePrimaryBtn";
+n.appendChild(J);a.editor.cancelFirst||n.appendChild(B);k.appendChild(n);e.appendChild(k);g.appendChild(e);this.container=g};
+PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function g(Z,U,V){if(V||x!=document.activeElement&&B!=document.activeElement){Z=!1;for(U=0;U<G.length;U++)V=G[U],Q?"custom"==V.key&&(n.value=V.key,Q=!1):null!=V.format&&("a4"==V.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==V.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==V.format.width&&
+f.height==V.format.height?(n.value=V.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1,Z=!0):f.width==V.format.height&&f.height==V.format.width&&(n.value=V.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,k.setAttribute("checked","checked"),k.defaultChecked=!0,Z=k.checked=!0));Z?(u.style.display="",r.style.display="none"):(x.value=f.width/100,B.value=f.height/100,e.setAttribute("checked","checked"),
n.value="custom",u.style.display="none",r.style.display="")}}b="format-"+b;var e=document.createElement("input");e.setAttribute("name",b);e.setAttribute("type","radio");e.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",b);k.setAttribute("type","radio");k.setAttribute("value","landscape");var n=document.createElement("select");n.style.marginBottom="8px";n.style.borderRadius="4px";n.style.border="1px solid rgb(160, 160, 160)";n.style.width="206px";var u=
document.createElement("div");u.style.marginLeft="4px";u.style.width="210px";u.style.height="24px";e.style.marginRight="6px";u.appendChild(e);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));u.appendChild(b);k.style.marginLeft="10px";k.style.marginRight="6px";u.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));u.appendChild(m);var r=document.createElement("div");r.style.marginLeft=
-"4px";r.style.width="210px";r.style.height="24px";var x=document.createElement("input");x.setAttribute("size","7");x.style.textAlign="right";r.appendChild(x);mxUtils.write(r," in x ");var A=document.createElement("input");A.setAttribute("size","7");A.style.textAlign="right";r.appendChild(A);mxUtils.write(r," in");u.style.display="none";r.style.display="none";for(var C={},F=PageSetupDialog.getFormats(),K=0;K<F.length;K++){var D=F[K];C[D.key]=D;var O=document.createElement("option");O.setAttribute("value",
-D.key);mxUtils.write(O,D.title);n.appendChild(O)}var Q=!1;g();a.appendChild(n);mxUtils.br(a);a.appendChild(u);a.appendChild(r);var R=f,P=function(Z,T){Z=C[n.value];null!=Z.format?(x.value=Z.format.width/100,A.value=Z.format.height/100,r.style.display="none",u.style.display=""):(u.style.display="none",r.style.display="");Z=parseFloat(x.value);if(isNaN(Z)||0>=Z)x.value=f.width/100;Z=parseFloat(A.value);if(isNaN(Z)||0>=Z)A.value=f.height/100;Z=new mxRectangle(0,0,Math.floor(100*parseFloat(x.value)),
-Math.floor(100*parseFloat(A.value)));"custom"!=n.value&&k.checked&&(Z=new mxRectangle(0,0,Z.height,Z.width));T&&Q||Z.width==R.width&&Z.height==R.height||(R=Z,null!=d&&d(R))};mxEvent.addListener(b,"click",function(Z){e.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(m,"click",function(Z){k.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(A,"blur",P);mxEvent.addListener(A,"click",P);mxEvent.addListener(k,"change",P);mxEvent.addListener(e,
-"change",P);mxEvent.addListener(n,"change",function(Z){Q="custom"==n.value;P(Z,!0)});P();return{set:function(Z){f=Z;g(null,null,!0)},get:function(){return R},widthInput:x,heightInput:A}};
+"4px";r.style.width="210px";r.style.height="24px";var x=document.createElement("input");x.setAttribute("size","7");x.style.textAlign="right";r.appendChild(x);mxUtils.write(r," in x ");var B=document.createElement("input");B.setAttribute("size","7");B.style.textAlign="right";r.appendChild(B);mxUtils.write(r," in");u.style.display="none";r.style.display="none";for(var C={},G=PageSetupDialog.getFormats(),J=0;J<G.length;J++){var D=G[J];C[D.key]=D;var N=document.createElement("option");N.setAttribute("value",
+D.key);mxUtils.write(N,D.title);n.appendChild(N)}var Q=!1;g();a.appendChild(n);mxUtils.br(a);a.appendChild(u);a.appendChild(r);var R=f,P=function(Z,U){Z=C[n.value];null!=Z.format?(x.value=Z.format.width/100,B.value=Z.format.height/100,r.style.display="none",u.style.display=""):(u.style.display="none",r.style.display="");Z=parseFloat(x.value);if(isNaN(Z)||0>=Z)x.value=f.width/100;Z=parseFloat(B.value);if(isNaN(Z)||0>=Z)B.value=f.height/100;Z=new mxRectangle(0,0,Math.floor(100*parseFloat(x.value)),
+Math.floor(100*parseFloat(B.value)));"custom"!=n.value&&k.checked&&(Z=new mxRectangle(0,0,Z.height,Z.width));U&&Q||Z.width==R.width&&Z.height==R.height||(R=Z,null!=d&&d(R))};mxEvent.addListener(b,"click",function(Z){e.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(m,"click",function(Z){k.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(B,"blur",P);mxEvent.addListener(B,"click",P);mxEvent.addListener(k,"change",P);mxEvent.addListener(e,
+"change",P);mxEvent.addListener(n,"change",function(Z){Q="custom"==n.value;P(Z,!0)});P();return{set:function(Z){f=Z;g(null,null,!0)},get:function(){return R},widthInput:x,heightInput:B}};
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,f,d,g,e,k,n,u,m,r,x,A){u=null!=u?u:!0;var C=document.createElement("table"),F=document.createElement("tbody");C.style.position="absolute";C.style.top="30px";C.style.left="20px";var K=document.createElement("tr");var D=document.createElement("td");D.style.textOverflow="ellipsis";D.style.textAlign="right";D.style.maxWidth=(A?A+15:100)+"px";D.style.fontSize="10pt";D.style.width=(A?A:84)+"px";mxUtils.write(D,(g||mxResources.get("filename"))+":");K.appendChild(D);var O=
-document.createElement("input");O.setAttribute("value",b||"");O.style.marginLeft="4px";O.style.width=null!=x?x+"px":"180px";var Q=mxUtils.button(f,function(){if(null==e||e(O.value))u&&a.hideDialog(),d(O.value)});Q.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(O.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?O.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=C.parentNode;if(null!=R){var P=null;mxEvent.addListener(R,"dragleave",
-function(Z){null!=P&&(P.style.backgroundColor="",P=null);Z.stopPropagation();Z.preventDefault()});mxEvent.addListener(R,"dragover",mxUtils.bind(this,function(Z){null==P&&(!mxClient.IS_IE||10<document.documentMode)&&(P=O,P.style.backgroundColor="#ebf2f9");Z.stopPropagation();Z.preventDefault()}));mxEvent.addListener(R,"drop",mxUtils.bind(this,function(Z){null!=P&&(P.style.backgroundColor="",P=null);0<=mxUtils.indexOf(Z.dataTransfer.types,"text/uri-list")&&(O.value=decodeURIComponent(Z.dataTransfer.getData("text/uri-list")),
-Q.click());Z.stopPropagation();Z.preventDefault()}))}}};D=document.createElement("td");D.style.whiteSpace="nowrap";D.appendChild(O);K.appendChild(D);if(null!=g||null==k)F.appendChild(K),null!=r&&(D.appendChild(FilenameDialog.createTypeHint(a,O,r)),null!=a.editor.diagramFileTypes&&(K=document.createElement("tr"),D=document.createElement("td"),D.style.textOverflow="ellipsis",D.style.textAlign="right",D.style.maxWidth="100px",D.style.fontSize="10pt",D.style.width="84px",mxUtils.write(D,mxResources.get("type")+
-":"),K.appendChild(D),D=document.createElement("td"),D.style.whiteSpace="nowrap",K.appendChild(D),b=FilenameDialog.createFileTypes(a,O,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",D.appendChild(b),O.style.width=null!=x?x-40+"px":"190px",K.appendChild(D),F.appendChild(K)));null!=k&&(K=document.createElement("tr"),D=document.createElement("td"),D.colSpan=2,D.appendChild(k),K.appendChild(D),F.appendChild(K));K=document.createElement("tr");D=document.createElement("td");D.colSpan=
-2;D.style.paddingTop=null!=r?"12px":"20px";D.style.whiteSpace="nowrap";D.setAttribute("align","right");r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=m&&m()});r.className="geBtn";a.editor.cancelFirst&&D.appendChild(r);null!=n&&(x=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(n)}),x.className="geBtn",D.appendChild(x));mxEvent.addListener(O,"keypress",function(R){13==R.keyCode&&Q.click()});D.appendChild(Q);a.editor.cancelFirst||D.appendChild(r);
-K.appendChild(D);F.appendChild(K);C.appendChild(F);this.container=C};FilenameDialog.filenameHelpLink=null;
+var FilenameDialog=function(a,b,f,d,g,e,k,n,u,m,r,x,B){u=null!=u?u:!0;var C=document.createElement("table"),G=document.createElement("tbody");C.style.position="absolute";C.style.top="30px";C.style.left="20px";var J=document.createElement("tr");var D=document.createElement("td");D.style.textOverflow="ellipsis";D.style.textAlign="right";D.style.maxWidth=(B?B+15:100)+"px";D.style.fontSize="10pt";D.style.width=(B?B:84)+"px";mxUtils.write(D,(g||mxResources.get("filename"))+":");J.appendChild(D);var N=
+document.createElement("input");N.setAttribute("value",b||"");N.style.marginLeft="4px";N.style.width=null!=x?x+"px":"180px";var Q=mxUtils.button(f,function(){if(null==e||e(N.value))u&&a.hideDialog(),d(N.value)});Q.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(N.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?N.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=C.parentNode;if(null!=R){var P=null;mxEvent.addListener(R,"dragleave",
+function(Z){null!=P&&(P.style.backgroundColor="",P=null);Z.stopPropagation();Z.preventDefault()});mxEvent.addListener(R,"dragover",mxUtils.bind(this,function(Z){null==P&&(!mxClient.IS_IE||10<document.documentMode)&&(P=N,P.style.backgroundColor="#ebf2f9");Z.stopPropagation();Z.preventDefault()}));mxEvent.addListener(R,"drop",mxUtils.bind(this,function(Z){null!=P&&(P.style.backgroundColor="",P=null);0<=mxUtils.indexOf(Z.dataTransfer.types,"text/uri-list")&&(N.value=decodeURIComponent(Z.dataTransfer.getData("text/uri-list")),
+Q.click());Z.stopPropagation();Z.preventDefault()}))}}};D=document.createElement("td");D.style.whiteSpace="nowrap";D.appendChild(N);J.appendChild(D);if(null!=g||null==k)G.appendChild(J),null!=r&&(D.appendChild(FilenameDialog.createTypeHint(a,N,r)),null!=a.editor.diagramFileTypes&&(J=document.createElement("tr"),D=document.createElement("td"),D.style.textOverflow="ellipsis",D.style.textAlign="right",D.style.maxWidth="100px",D.style.fontSize="10pt",D.style.width="84px",mxUtils.write(D,mxResources.get("type")+
+":"),J.appendChild(D),D=document.createElement("td"),D.style.whiteSpace="nowrap",J.appendChild(D),b=FilenameDialog.createFileTypes(a,N,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",D.appendChild(b),N.style.width=null!=x?x-40+"px":"190px",J.appendChild(D),G.appendChild(J)));null!=k&&(J=document.createElement("tr"),D=document.createElement("td"),D.colSpan=2,D.appendChild(k),J.appendChild(D),G.appendChild(J));J=document.createElement("tr");D=document.createElement("td");D.colSpan=
+2;D.style.paddingTop=null!=r?"12px":"20px";D.style.whiteSpace="nowrap";D.setAttribute("align","right");r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=m&&m()});r.className="geBtn";a.editor.cancelFirst&&D.appendChild(r);null!=n&&(x=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(n)}),x.className="geBtn",D.appendChild(x));mxEvent.addListener(N,"keypress",function(R){13==R.keyCode&&Q.click()});D.appendChild(Q);a.editor.cancelFirst||D.appendChild(r);
+J.appendChild(D);G.appendChild(J);C.appendChild(G);this.container=C};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,b,f){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 g=function(){d.setAttribute("src",Editor.helpImage);d.setAttribute("title",mxResources.get("help"));for(var e=0;e<f.length;e++)if(0<f[e].ext.length&&b.value.toLowerCase().substring(b.value.length-
f[e].ext.length-1)=="."+f[e].ext){d.setAttribute("title",mxResources.get(f[e].title));break}};mxEvent.addListener(b,"keyup",g);mxEvent.addListener(b,"change",g);mxEvent.addListener(d,"click",function(e){var k=d.getAttribute("title");d.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=k&&a.showError(null,k,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(e)});
g();return d};
@@ -2408,42 +2408,42 @@ mxGraphView.prototype.validateBackgroundStyles=function(){var k=this.graph,n=nul
")";var x=u=0;null!=k.view.backgroundPageShape&&(x=this.getBackgroundPageBounds(),u=1+x.x,x=1+x.y);r=-Math.round(r-mxUtils.mod(this.translate.x*this.scale-u,r))+"px "+-Math.round(r-mxUtils.mod(this.translate.y*this.scale-x,r))+"px"}u=k.view.canvas;null!=u.ownerSVGElement&&(u=u.ownerSVGElement);null!=k.view.backgroundPageShape?(k.view.backgroundPageShape.node.style.backgroundPosition=r,k.view.backgroundPageShape.node.style.backgroundImage=m,k.view.backgroundPageShape.node.style.backgroundColor=n,k.view.backgroundPageShape.node.style.borderColor=
k.defaultPageBorderColor,k.container.className="geDiagramContainer geDiagramBackdrop",u.style.backgroundImage="none",u.style.backgroundColor=""):(k.container.className="geDiagramContainer",u.style.backgroundPosition=r,u.style.backgroundColor=n,u.style.backgroundImage=m)};mxGraphView.prototype.createSvgGrid=function(k){for(var n=this.graph.gridSize*this.scale;n<this.minGridSize;)n*=2;for(var u=this.gridSteps*n,m=[],r=1;r<this.gridSteps;r++){var x=r*n;m.push("M 0 "+x+" L "+u+" "+x+" M "+x+" 0 L "+x+
" "+u)}return'<svg width="'+u+'" height="'+u+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+u+'" height="'+u+'" patternUnits="userSpaceOnUse"><path d="'+m.join(" ")+'" fill="none" stroke="'+k+'" opacity="0.2" stroke-width="1"/><path d="M '+u+" 0 L 0 0 0 "+u+'" fill="none" stroke="'+k+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(k,n){a.apply(this,arguments);
-if(null!=this.shiftPreview1){var u=this.view.canvas;null!=u.ownerSVGElement&&(u=u.ownerSVGElement);var m=this.gridSize*this.view.scale*this.view.gridSteps;m=-Math.round(m-mxUtils.mod(this.view.translate.x*this.view.scale+k,m))+"px "+-Math.round(m-mxUtils.mod(this.view.translate.y*this.view.scale+n,m))+"px";u.style.backgroundPosition=m}};mxGraph.prototype.updatePageBreaks=function(k,n,u){var m=this.view.scale,r=this.view.translate,x=this.pageFormat,A=m*this.pageScale,C=this.view.getBackgroundPageBounds();
-n=C.width;u=C.height;var F=new mxRectangle(m*r.x,m*r.y,x.width*A,x.height*A),K=(k=k&&Math.min(F.width,F.height)>this.minPageBreakDist)?Math.ceil(u/F.height)-1:0,D=k?Math.ceil(n/F.width)-1:0,O=C.x+n,Q=C.y+u;null==this.horizontalPageBreaks&&0<K&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<D&&(this.verticalPageBreaks=[]);k=mxUtils.bind(this,function(R){if(null!=R){for(var P=R==this.horizontalPageBreaks?K:D,Z=0;Z<=P;Z++){var T=R==this.horizontalPageBreaks?[new mxPoint(Math.round(C.x),
-Math.round(C.y+(Z+1)*F.height)),new mxPoint(Math.round(O),Math.round(C.y+(Z+1)*F.height))]:[new mxPoint(Math.round(C.x+(Z+1)*F.width),Math.round(C.y)),new mxPoint(Math.round(C.x+(Z+1)*F.width),Math.round(Q))];null!=R[Z]?(R[Z].points=T,R[Z].redraw()):(T=new mxPolyline(T,this.pageBreakColor),T.dialect=this.dialect,T.isDashed=this.pageBreakDashed,T.pointerEvents=!1,T.init(this.view.backgroundPane),T.redraw(),R[Z]=T)}for(Z=P;Z<R.length;Z++)R[Z].destroy();R.splice(P,R.length-P)}});k(this.horizontalPageBreaks);
+if(null!=this.shiftPreview1){var u=this.view.canvas;null!=u.ownerSVGElement&&(u=u.ownerSVGElement);var m=this.gridSize*this.view.scale*this.view.gridSteps;m=-Math.round(m-mxUtils.mod(this.view.translate.x*this.view.scale+k,m))+"px "+-Math.round(m-mxUtils.mod(this.view.translate.y*this.view.scale+n,m))+"px";u.style.backgroundPosition=m}};mxGraph.prototype.updatePageBreaks=function(k,n,u){var m=this.view.scale,r=this.view.translate,x=this.pageFormat,B=m*this.pageScale,C=this.view.getBackgroundPageBounds();
+n=C.width;u=C.height;var G=new mxRectangle(m*r.x,m*r.y,x.width*B,x.height*B),J=(k=k&&Math.min(G.width,G.height)>this.minPageBreakDist)?Math.ceil(u/G.height)-1:0,D=k?Math.ceil(n/G.width)-1:0,N=C.x+n,Q=C.y+u;null==this.horizontalPageBreaks&&0<J&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<D&&(this.verticalPageBreaks=[]);k=mxUtils.bind(this,function(R){if(null!=R){for(var P=R==this.horizontalPageBreaks?J:D,Z=0;Z<=P;Z++){var U=R==this.horizontalPageBreaks?[new mxPoint(Math.round(C.x),
+Math.round(C.y+(Z+1)*G.height)),new mxPoint(Math.round(N),Math.round(C.y+(Z+1)*G.height))]:[new mxPoint(Math.round(C.x+(Z+1)*G.width),Math.round(C.y)),new mxPoint(Math.round(C.x+(Z+1)*G.width),Math.round(Q))];null!=R[Z]?(R[Z].points=U,R[Z].redraw()):(U=new mxPolyline(U,this.pageBreakColor),U.dialect=this.dialect,U.isDashed=this.pageBreakDashed,U.pointerEvents=!1,U.init(this.view.backgroundPane),U.redraw(),R[Z]=U)}for(Z=P;Z<R.length;Z++)R[Z].destroy();R.splice(P,R.length-P)}});k(this.horizontalPageBreaks);
k(this.verticalPageBreaks)};var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(k,n,u){for(var m=0;m<n.length;m++){if(this.graph.isTableCell(n[m])||this.graph.isTableRow(n[m]))return!1;if(this.graph.getModel().isVertex(n[m])){var r=this.graph.getCellGeometry(n[m]);if(null!=r&&r.relative)return!1}}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var k=
f.apply(this,arguments);k.intersects=mxUtils.bind(this,function(n,u){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(k,arguments)});return k};mxGraphView.prototype.createBackgroundPageShape=function(k){return new mxRectangleShape(k,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var k=this.getGraphBounds(),n=0<k.width?k.x/this.scale-this.translate.x:0,u=0<k.height?k.y/this.scale-this.translate.y:0,m=this.graph.pageFormat,
-r=this.graph.pageScale,x=m.width*r;m=m.height*r;r=Math.floor(Math.min(0,n)/x);var A=Math.floor(Math.min(0,u)/m);return new mxRectangle(this.scale*(this.translate.x+r*x),this.scale*(this.translate.y+A*m),this.scale*(Math.ceil(Math.max(1,n+k.width/this.scale)/x)-r)*x,this.scale*(Math.ceil(Math.max(1,u+k.height/this.scale)/m)-A)*m)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(k,n){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
-this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=k+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var g=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(k,n,u,m,r,x){var A=g.apply(this,arguments);null==x||x||mxEvent.addListener(A,"mousedown",function(C){mxEvent.consume(C)});return A};var e=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
+r=this.graph.pageScale,x=m.width*r;m=m.height*r;r=Math.floor(Math.min(0,n)/x);var B=Math.floor(Math.min(0,u)/m);return new mxRectangle(this.scale*(this.translate.x+r*x),this.scale*(this.translate.y+B*m),this.scale*(Math.ceil(Math.max(1,n+k.width/this.scale)/x)-r)*x,this.scale*(Math.ceil(Math.max(1,u+k.height/this.scale)/m)-B)*m)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(k,n){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
+this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=k+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var g=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(k,n,u,m,r,x){var B=g.apply(this,arguments);null==x||x||mxEvent.addListener(B,"mousedown",function(C){mxEvent.consume(C)});return B};var e=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(k,n,u){var m=this.graph.model.getParent(k);if(n){var r=this.graph.model.isEdge(k)?null:this.graph.getCellGeometry(k);r=!this.graph.model.isEdge(m)&&!this.graph.isSiblingSelected(k)&&(null!=r&&r.relative||!this.graph.isContainer(m)||this.graph.isPart(k))}else if(r=e.apply(this,arguments),this.graph.isTableCell(k)||this.graph.isTableRow(k))r=m,this.graph.isTable(r)||(r=this.graph.model.getParent(r)),r=!this.graph.selectionCellsHandler.isHandled(r)||this.graph.isCellSelected(r)&&this.graph.isToggleEvent(u.getEvent())||
-this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;var g=d.getGraphBounds;d.getGraphBounds=function(){var I=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var H=this.view.translate,S=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((H.x+L.x)*S,(H.y+L.y)*S,L.width*S,L.height*S))}return I};d.useCssTransforms&&(this.lazyZoomDelay=
-0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(I,L){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(I){return!mxEvent.isPopupTrigger(I.getEvent())});this.actions=new Actions(this);this.menus=
+this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;var g=d.getGraphBounds;d.getGraphBounds=function(){var F=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var T=this.view.translate,ca=this.view.scale;F=mxRectangle.fromRectangle(F);F.add(new mxRectangle((T.x+L.x)*ca,(T.y+L.y)*ca,L.width*ca,L.height*ca))}return F};d.useCssTransforms&&(this.lazyZoomDelay=
+0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(F,L){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(F){return!mxEvent.isPopupTrigger(F.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(" "),k="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-n="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(I){try{var L=d.getCellStyle(I,!1),H=[],S=[],V;for(V in L)H.push(L[V]),S.push(V);d.getModel().isEdge(I)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",S,"values",H,"cells",[I]))}catch(ea){this.handleError(ea)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);
-d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<u.length;b++)0>mxUtils.indexOf(e,u[b])&&e.push(u[b]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),r=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<r.length;b++)for(f=0;f<r[b].length;f++)e.push(r[b][f]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(e,k[b])&&e.push(k[b]);var x=function(I,L,H,S,V,ea,ka){S=null!=S?S:d.currentVertexStyle;V=null!=V?V:d.currentEdgeStyle;ea=null!=ea?ea:!0;H=null!=H?H:d.getModel();if(ka){ka=[];for(var wa=0;wa<I.length;wa++)ka=ka.concat(H.getDescendants(I[wa]));I=ka}H.beginUpdate();try{for(wa=0;wa<I.length;wa++){var W=I[wa];if(L)var aa=["fontSize",
-"fontFamily","fontColor"];else{var oa=H.getStyle(W),ua=null!=oa?oa.split(";"):[];aa=e.slice();for(var Ja=0;Ja<ua.length;Ja++){var Ga=ua[Ja],va=Ga.indexOf("=");if(0<=va){var za=Ga.substring(0,va),ra=mxUtils.indexOf(aa,za);0<=ra&&aa.splice(ra,1);for(ka=0;ka<r.length;ka++){var Ha=r[ka];if(0<=mxUtils.indexOf(Ha,za))for(var Ta=0;Ta<Ha.length;Ta++){var db=mxUtils.indexOf(aa,Ha[Ta]);0<=db&&aa.splice(db,1)}}}}}var Ua=H.isEdge(W);ka=Ua?V:S;var Va=H.getStyle(W);for(Ja=0;Ja<aa.length;Ja++){za=aa[Ja];var Ya=
-ka[za];null!=Ya&&"edgeStyle"!=za&&("shape"!=za||Ua)&&(!Ua||ea||0>mxUtils.indexOf(n,za))&&(Va=mxUtils.setStyle(Va,za,Ya))}Editor.simpleLabels&&(Va=mxUtils.setStyle(mxUtils.setStyle(Va,"html",null),"whiteSpace",null));H.setStyle(W,Va)}}finally{H.endUpdate()}return I};d.addListener("cellsInserted",function(I,L){x(L.getProperty("cells"),null,null,null,null,!0,!0)});d.addListener("textInserted",function(I,L){x(L.getProperty("cells"),!0)});this.insertHandler=x;this.createDivs();this.createUi();this.refresh();
-var A=mxUtils.bind(this,function(I){null==I&&(I=window.event);return d.isEditing()||null!=I&&this.isSelectionAllowed(I)});this.container==document.body&&(this.menubarContainer.onselectstart=A,this.menubarContainer.onmousedown=A,this.toolbarContainer.onselectstart=A,this.toolbarContainer.onmousedown=A,this.diagramContainer.onselectstart=A,this.diagramContainer.onmousedown=A,this.sidebarContainer.onselectstart=A,this.sidebarContainer.onmousedown=A,this.formatContainer.onselectstart=A,this.formatContainer.onmousedown=
-A,this.footerContainer.onselectstart=A,this.footerContainer.onmousedown=A,null!=this.tabContainer&&(this.tabContainer.onselectstart=A));!this.editor.chromeless||this.editor.editable?(b=function(I){if(null!=I){var L=mxEvent.getSource(I);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return A(I)},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 C=d.graphHandler.start;d.graphHandler.start=function(){null!=fa.hoverIcons&&fa.hoverIcons.reset();C.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(I){var L=mxUtils.getOffset(this.diagramContainer);
-0<mxEvent.getClientX(I)-L.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(I)-L.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var F=!1,K=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(I,L){return F||K.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(I){32!=I.which||d.isEditing()?mxEvent.isConsumed(I)||27!=I.keyCode||this.hideDialog(null,
-!0):(F=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(I)!=d.container||mxEvent.consume(I))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(I){d.container.style.cursor="";F=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var D=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(I){return D.apply(this,arguments)||F||mxEvent.isMouseEvent(I.getEvent())&&(this.usePopupTrigger||
-!mxEvent.isPopupTrigger(I.getEvent()))&&(!mxEvent.isControlDown(I.getEvent())&&mxEvent.isRightMouseButton(I.getEvent())||mxEvent.isMiddleMouseButton(I.getEvent()))};var O=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(I){return O.apply(this,arguments)||13==I.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(I)||mxClient.IS_MAC&&mxEvent.isMetaDown(I)||mxClient.IS_SF&&mxEvent.isShiftDown(I))};var Q=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return F||Q.apply(this,arguments)};
-var R=!1,P=null,Z=null,T=null,U=mxUtils.bind(this,function(){if(null!=this.toolbar&&R!=d.cellEditor.isContentEditing()){for(var I=this.toolbar.container.firstChild,L=[];null!=I;){var H=I.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,I)&&(I.parentNode.removeChild(I),L.push(I));I=H}I=this.toolbar.fontMenu;H=this.toolbar.sizeMenu;if(null==T)this.toolbar.createTextToolbar();else{for(var S=0;S<T.length;S++)this.toolbar.container.appendChild(T[S]);this.toolbar.fontMenu=P;this.toolbar.sizeMenu=
-Z}R=d.cellEditor.isContentEditing();P=I;Z=H;T=L}}),fa=this,ha=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){ha.apply(this,arguments);U();if(d.cellEditor.isContentEditing()){var I=!1,L=function(){I||(I=!0,window.setTimeout(function(){var H=d.getSelectedEditingElement();null!=H&&(H=mxUtils.getCurrentStyle(H),null!=H&&null!=fa.toolbar&&(fa.toolbar.setFontName(Graph.stripQuotes(H.fontFamily)),fa.toolbar.setFontSize(parseInt(H.fontSize))));I=!1},0))};mxEvent.addListener(d.cellEditor.textarea,
-"input",L);mxEvent.addListener(d.cellEditor.textarea,"touchend",L);mxEvent.addListener(d.cellEditor.textarea,"mouseup",L);mxEvent.addListener(d.cellEditor.textarea,"keyup",L);L()}};var ba=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(I,L){try{ba.apply(this,arguments),U()}catch(H){fa.handleError(H)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(I){}var qa=d.fireMouseEvent;
-d.fireMouseEvent=function(I,L,H){I==mxEvent.MOUSE_DOWN&&this.container.focus();qa.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(I,L,H){this.menus.createPopupMenu(I,L,H)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(I){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};d.connectionHandler.addListener(mxEvent.CONNECT,function(I,
-L){var H=[L.getProperty("cell")];L.getProperty("terminalInserted")&&(H.push(L.getProperty("terminal")),window.setTimeout(function(){null!=fa.hoverIcons&&fa.hoverIcons.update(d.view.getState(H[H.length-1]))},0));x(H)});this.addListener("styleChanged",mxUtils.bind(this,function(I,L){var H=L.getProperty("cells"),S=I=!1;if(0<H.length)for(var V=0;V<H.length&&(I=d.getModel().isVertex(H[V])||I,!(S=d.getModel().isEdge(H[V])||S)||!I);V++);else S=I=!0;H=L.getProperty("keys");L=L.getProperty("values");for(V=
-0;V<H.length;V++){var ea=0<=mxUtils.indexOf(u,H[V]);if("strokeColor"!=H[V]||null!=L[V]&&"none"!=L[V])if(0<=mxUtils.indexOf(k,H[V]))S||0<=mxUtils.indexOf(m,H[V])?null==L[V]?delete d.currentEdgeStyle[H[V]]:d.currentEdgeStyle[H[V]]=L[V]:I&&0<=mxUtils.indexOf(e,H[V])&&(null==L[V]?delete d.currentVertexStyle[H[V]]:d.currentVertexStyle[H[V]]=L[V]);else if(0<=mxUtils.indexOf(e,H[V])){if(I||ea)null==L[V]?delete d.currentVertexStyle[H[V]]:d.currentVertexStyle[H[V]]=L[V];if(S||ea||0<=mxUtils.indexOf(m,H[V]))null==
-L[V]?delete d.currentEdgeStyle[H[V]]:d.currentEdgeStyle[H[V]]=L[V]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==d.currentEdgeStyle.edgeStyle||
-"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),
-null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var I=d.currentVertexStyle.fontFamily||"Helvetica",L=String(d.currentVertexStyle.fontSize||"12"),H=d.getView().getState(d.getSelectionCell());
-null!=H&&(I=H.style[mxConstants.STYLE_FONTFAMILY]||I,L=H.style[mxConstants.STYLE_FONTSIZE]||L,10<I.length&&(I=I.substring(0,8)+"..."));this.toolbar.setFontName(I);this.toolbar.setFontSize(L)}),d.getSelectionModel().addListener(mxEvent.CHANGE,a),d.getModel().addListener(mxEvent.CHANGE,a));d.addListener(mxEvent.CELLS_ADDED,function(I,L){I=L.getProperty("cells");L=L.getProperty("parent");null!=L&&d.getModel().isLayer(L)&&!d.isCellVisible(L)&&null!=I&&0<I.length&&d.getModel().setVisible(L,!0)});this.gestureHandler=
-mxUtils.bind(this,function(I){null!=this.currentMenu&&mxEvent.getSource(I)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
-this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));
-d.addListener("gridSizeChanged",mxUtils.bind(this,function(){d.isGridEnabled()&&d.view.validateBackground()}));this.editor.resetGraph()}this.init();d.standalone||this.open()};EditorUi.compactUi=!0;
+n="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" "),u=!1,m=!1;this.setDefaultStyle=function(F){try{var L=d.getCellStyle(F,!1),T=[],ca=[],fa;for(fa in L)T.push(L[fa]),ca.push(fa);d.getModel().isEdge(F)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",ca,"values",T,"cells",[F]));d.getModel().isEdge(F)?m=!0:u=!0}catch(wa){this.handleError(wa)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=
+mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);u=m=!1;this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var r=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<r.length;b++)0>mxUtils.indexOf(e,r[b])&&e.push(r[b]);var x="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),B=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],
+["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<B.length;b++)for(f=0;f<B[b].length;f++)e.push(B[b][f]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(e,k[b])&&e.push(k[b]);var C=function(F,L,T,ca,fa,wa,W){ca=null!=ca?ca:d.currentVertexStyle;fa=null!=fa?fa:d.currentEdgeStyle;wa=null!=wa?wa:!0;T=null!=T?T:d.getModel();if(W){W=[];for(var aa=0;aa<F.length;aa++)W=W.concat(T.getDescendants(F[aa]));F=W}T.beginUpdate();try{for(aa=0;aa<F.length;aa++){var oa=
+F[aa];if(L)var sa=["fontSize","fontFamily","fontColor"];else{var Ka=T.getStyle(oa),Ha=null!=Ka?Ka.split(";"):[];sa=e.slice();for(var ua=0;ua<Ha.length;ua++){var Ca=Ha[ua],ra=Ca.indexOf("=");if(0<=ra){var Da=Ca.substring(0,ra),Ua=mxUtils.indexOf(sa,Da);0<=Ua&&sa.splice(Ua,1);for(W=0;W<B.length;W++){var db=B[W];if(0<=mxUtils.indexOf(db,Da))for(var Ta=0;Ta<db.length;Ta++){var $a=mxUtils.indexOf(sa,db[Ta]);0<=$a&&sa.splice($a,1)}}}}}var Xa=T.isEdge(oa);W=Xa?fa:ca;var Va=T.getStyle(oa);for(ua=0;ua<sa.length;ua++){Da=
+sa[ua];var Ya=W[Da];null!=Ya&&"edgeStyle"!=Da&&("shape"!=Da||Xa)&&(!Xa||wa||0>mxUtils.indexOf(n,Da))&&(Va=mxUtils.setStyle(Va,Da,Ya))}Editor.simpleLabels&&(Va=mxUtils.setStyle(mxUtils.setStyle(Va,"html",null),"whiteSpace",null));T.setStyle(oa,Va)}}finally{T.endUpdate()}return F};d.addListener("cellsInserted",function(F,L){C(L.getProperty("cells"),null,null,null,null,!0,!0)});d.addListener("textInserted",function(F,L){C(L.getProperty("cells"),!0)});this.insertHandler=C;this.createDivs();this.createUi();
+this.refresh();var G=mxUtils.bind(this,function(F){null==F&&(F=window.event);return d.isEditing()||null!=F&&this.isSelectionAllowed(F)});this.container==document.body&&(this.menubarContainer.onselectstart=G,this.menubarContainer.onmousedown=G,this.toolbarContainer.onselectstart=G,this.toolbarContainer.onmousedown=G,this.diagramContainer.onselectstart=G,this.diagramContainer.onmousedown=G,this.sidebarContainer.onselectstart=G,this.sidebarContainer.onmousedown=G,this.formatContainer.onselectstart=G,
+this.formatContainer.onmousedown=G,this.footerContainer.onselectstart=G,this.footerContainer.onmousedown=G,null!=this.tabContainer&&(this.tabContainer.onselectstart=G));!this.editor.chromeless||this.editor.editable?(b=function(F){if(null!=F){var L=mxEvent.getSource(F);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return G(F)},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 J=d.graphHandler.start;d.graphHandler.start=function(){null!=ba.hoverIcons&&ba.hoverIcons.reset();J.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(F){var L=
+mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(F)-L.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(F)-L.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var D=!1,N=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(F,L){return D||N.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(F){32!=F.which||d.isEditing()?mxEvent.isConsumed(F)||
+27!=F.keyCode||this.hideDialog(null,!0):(D=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(F)!=d.container||mxEvent.consume(F))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(F){d.container.style.cursor="";D=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var Q=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(F){return Q.apply(this,arguments)||D||mxEvent.isMouseEvent(F.getEvent())&&
+(this.usePopupTrigger||!mxEvent.isPopupTrigger(F.getEvent()))&&(!mxEvent.isControlDown(F.getEvent())&&mxEvent.isRightMouseButton(F.getEvent())||mxEvent.isMiddleMouseButton(F.getEvent()))};var R=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(F){return R.apply(this,arguments)||13==F.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(F)||mxClient.IS_MAC&&mxEvent.isMetaDown(F)||mxClient.IS_SF&&mxEvent.isShiftDown(F))};var P=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return D||
+P.apply(this,arguments)};var Z=!1,U=null,V=null,ia=null,ha=mxUtils.bind(this,function(){if(null!=this.toolbar&&Z!=d.cellEditor.isContentEditing()){for(var F=this.toolbar.container.firstChild,L=[];null!=F;){var T=F.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,F)&&(F.parentNode.removeChild(F),L.push(F));F=T}F=this.toolbar.fontMenu;T=this.toolbar.sizeMenu;if(null==ia)this.toolbar.createTextToolbar();else{for(var ca=0;ca<ia.length;ca++)this.toolbar.container.appendChild(ia[ca]);this.toolbar.fontMenu=
+U;this.toolbar.sizeMenu=V}Z=d.cellEditor.isContentEditing();U=F;V=T;ia=L}}),ba=this,qa=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){qa.apply(this,arguments);ha();if(d.cellEditor.isContentEditing()){var F=!1,L=function(){F||(F=!0,window.setTimeout(function(){var T=d.getSelectedEditingElement();null!=T&&(T=mxUtils.getCurrentStyle(T),null!=T&&null!=ba.toolbar&&(ba.toolbar.setFontName(Graph.stripQuotes(T.fontFamily)),ba.toolbar.setFontSize(parseInt(T.fontSize))));F=!1},0))};mxEvent.addListener(d.cellEditor.textarea,
+"input",L);mxEvent.addListener(d.cellEditor.textarea,"touchend",L);mxEvent.addListener(d.cellEditor.textarea,"mouseup",L);mxEvent.addListener(d.cellEditor.textarea,"keyup",L);L()}};var O=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(F,L){try{O.apply(this,arguments),ha()}catch(T){ba.handleError(T)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(F){}var S=d.fireMouseEvent;
+d.fireMouseEvent=function(F,L,T){F==mxEvent.MOUSE_DOWN&&this.container.focus();S.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(F,L,T){this.menus.createPopupMenu(F,L,T)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(F){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};d.connectionHandler.addListener(mxEvent.CONNECT,function(F,
+L){var T=[L.getProperty("cell")];L.getProperty("terminalInserted")&&(T.push(L.getProperty("terminal")),window.setTimeout(function(){null!=ba.hoverIcons&&ba.hoverIcons.update(d.view.getState(T[T.length-1]))},0));C(T)});this.addListener("styleChanged",mxUtils.bind(this,function(F,L){var T=L.getProperty("cells"),ca=F=!1;if(0<T.length)for(var fa=0;fa<T.length&&(F=d.getModel().isVertex(T[fa])||F,!(ca=d.getModel().isEdge(T[fa])||ca)||!F);fa++);else ca=F=!0;F=F&&!u;ca=ca&&!m;T=L.getProperty("keys");L=L.getProperty("values");
+for(fa=0;fa<T.length;fa++){var wa=0<=mxUtils.indexOf(r,T[fa]);if("strokeColor"!=T[fa]||null!=L[fa]&&"none"!=L[fa])if(0<=mxUtils.indexOf(k,T[fa]))ca||0<=mxUtils.indexOf(x,T[fa])?null==L[fa]?delete d.currentEdgeStyle[T[fa]]:d.currentEdgeStyle[T[fa]]=L[fa]:F&&0<=mxUtils.indexOf(e,T[fa])&&(null==L[fa]?delete d.currentVertexStyle[T[fa]]:d.currentVertexStyle[T[fa]]=L[fa]);else if(0<=mxUtils.indexOf(e,T[fa])){if(F||wa)null==L[fa]?delete d.currentVertexStyle[T[fa]]:d.currentVertexStyle[T[fa]]=L[fa];if(ca||
+wa||0<=mxUtils.indexOf(x,T[fa]))null==L[fa]?delete d.currentEdgeStyle[T[fa]]:d.currentEdgeStyle[T[fa]]=L[fa]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":
+"straight"==d.currentEdgeStyle.edgeStyle||"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):
+"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var F=d.currentVertexStyle.fontFamily||"Helvetica",L=String(d.currentVertexStyle.fontSize||
+"12"),T=d.getView().getState(d.getSelectionCell());null!=T&&(F=T.style[mxConstants.STYLE_FONTFAMILY]||F,L=T.style[mxConstants.STYLE_FONTSIZE]||L,10<F.length&&(F=F.substring(0,8)+"..."));this.toolbar.setFontName(F);this.toolbar.setFontSize(L)}),d.getSelectionModel().addListener(mxEvent.CHANGE,a),d.getModel().addListener(mxEvent.CHANGE,a));d.addListener(mxEvent.CELLS_ADDED,function(F,L){F=L.getProperty("cells");L=L.getProperty("parent");null!=L&&d.getModel().isLayer(L)&&!d.isCellVisible(L)&&null!=F&&
+0<F.length&&d.getModel().setVisible(L,!0)});this.gestureHandler=mxUtils.bind(this,function(F){null!=this.currentMenu&&mxEvent.getSource(F)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});
+mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));this.addListener("backgroundColorChanged",
+mxUtils.bind(this,function(){d.view.validateBackground()}));d.addListener("gridSizeChanged",mxUtils.bind(this,function(){d.isGridEnabled()&&d.view.validateBackground()}));this.editor.resetGraph()}this.init();d.standalone||this.open()};EditorUi.compactUi=!0;
EditorUi.parsePng=function(a,b,f){function d(n,u){var m=e;e+=u;return n.substring(m,e)}function g(n){n=d(n,4);return n.charCodeAt(3)+(n.charCodeAt(2)<<8)+(n.charCodeAt(1)<<16)+(n.charCodeAt(0)<<24)}var e=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(d(a,4),"IHDR"!=d(a,4))null!=f&&f();else{d(a,17);do{f=g(a);var k=d(a,4);if(null!=b&&b(e-8,k,f))break;value=d(a,f);d(a,4);if("IEND"==k)break}while(f)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
@@ -2452,23 +2452,23 @@ EditorUi.prototype.init=function(){var a=this.editor.graph;if(!a.standalone){"0"
arguments);f.updateActionStates()};a.editLink=f.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};EditorUi.prototype.clearSelectionState=function(){this.selectionState=null};EditorUi.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};
EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,b=a.getSelectionCells(),f=this.initSelectionState(),d=!0,g=0;g<b.length;g++){var e=a.getCurrentCellStyle(b[g]);"0"!=mxUtils.getValue(e,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(f,b[g],b,d),d=!1)}this.updateSelectionStateForTableCells(f);return f};
EditorUi.prototype.initSelectionState=function(){return{vertices:[],edges:[],cells:[],x:null,y:null,width:null,height:null,style:{},containsImage:!1,containsLabel:!1,fill:!0,glass:!0,rounded:!0,autoSize:!1,image:!0,shadow:!0,lineJumps:!0,resizable:!0,table:!1,cell:!1,row:!1,movable:!0,rotatable:!0,stroke:!0,swimlane:!1,unlocked:this.editor.graph.isEnabled(),connections:!1}};
-EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var b=mxUtils.sortCells(a.cells),f=this.editor.graph.model,d=f.getParent(b[0]),g=f.getParent(d),e=d.getIndex(b[0]),k=g.getIndex(d),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),e):null;r<b.length-1;){var A=b[++r];null==x||x!=A||null!=n&&u!=n||(n=u,u=0,m++,d=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),e):null);var C=this.editor.graph.view.getState(A);
-if(A==f.getChildAt(d,e+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=b[0],a.colspan=u,a.rowspan=m)}};
+EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var b=mxUtils.sortCells(a.cells),f=this.editor.graph.model,d=f.getParent(b[0]),g=f.getParent(d),e=d.getIndex(b[0]),k=g.getIndex(d),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),e):null;r<b.length-1;){var B=b[++r];null==x||x!=B||null!=n&&u!=n||(n=u,u=0,m++,d=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),e):null);var C=this.editor.graph.view.getState(B);
+if(B==f.getChildAt(d,e+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=b[0],a.colspan=u,a.rowspan=m)}};
EditorUi.prototype.updateSelectionStateForCell=function(a,b,f,d){f=this.editor.graph;a.cells.push(b);if(f.getModel().isVertex(b)){a.connections=0<f.model.getEdgeCount(b);a.unlocked=a.unlocked&&!f.isCellLocked(b);a.resizable=a.resizable&&f.isCellResizable(b);a.rotatable=a.rotatable&&f.isCellRotatable(b);a.movable=a.movable&&f.isCellMovable(b)&&!f.isTableRow(b)&&!f.isTableCell(b);a.swimlane=a.swimlane||f.isSwimlane(b);a.table=a.table||f.isTable(b);a.cell=a.cell||f.isTableCell(b);a.row=a.row||f.isTableRow(b);
a.vertices.push(b);var g=f.getCellGeometry(b);if(null!=g&&(0<g.width?null==a.width?a.width=g.width:a.width!=g.width&&(a.width=""):a.containsLabel=!0,0<g.height?null==a.height?a.height=g.height:a.height!=g.height&&(a.height=""):a.containsLabel=!0,!g.relative||null!=g.offset)){var e=g.relative?g.offset.x:g.x;g=g.relative?g.offset.y:g.y;null==a.x?a.x=e:a.x!=e&&(a.x="");null==a.y?a.y=g:a.y!=g&&(a.y="")}}else f.getModel().isEdge(b)&&(a.edges.push(b),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=
!1);b=f.view.getState(b);null!=b&&(a.autoSize=a.autoSize||f.isAutoSizeState(b),a.glass=a.glass&&f.isGlassState(b),a.rounded=a.rounded&&f.isRoundedState(b),a.lineJumps=a.lineJumps&&f.isLineJumpState(b),a.image=a.image&&f.isImageState(b),a.shadow=a.shadow&&f.isShadowState(b),a.fill=a.fill&&f.isFillState(b),a.stroke=a.stroke&&f.isStrokeState(b),e=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==e,f.mergeStyle(b.style,a.style,d))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,b=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(u,m){"mouseDown"==m.getProperty("eventName")&&b.hideShapePicker()}));var f=mxUtils.bind(this,function(){b.hideShapePicker(!0)});a.addListener("wheel",f);a.addListener(mxEvent.ESCAPE,f);a.view.addListener(mxEvent.SCALE,f);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,f);a.getSelectionModel().addListener(mxEvent.CHANGE,f);var d=a.popupMenuHandler.isMenuShowing;
a.popupMenuHandler.isMenuShowing=function(){return d.apply(this,arguments)||null!=b.shapePicker};var g=a.dblClick;a.dblClick=function(u,m){if(this.isEnabled())if(null!=m||null==b.sidebar||mxEvent.isShiftDown(u)||a.isCellLocked(a.getDefaultParent()))g.apply(this,arguments);else{var r=mxUtils.convertPoint(this.container,mxEvent.getClientX(u),mxEvent.getClientY(u));mxEvent.consume(u);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.x,r.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
-f);var e=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();e.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(A,C,F){var K=a.getCompositeParent(u.cell);A=a.getCellGeometry(K);for(r.consume();null!=K&&a.model.isVertex(K)&&null!=A&&A.relative;)cell=
-K,K=a.model.getParent(cell),A=a.getCellGeometry(K);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.getGraphX(),r.getGraphY(),K,mxUtils.bind(this,function(D){F(D);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(D))}),m)}),30)}),mxUtils.bind(this,function(A){this.graph.selectCellsForConnectVertex(A,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
-m.getProperty("arrow"),x=m.getProperty("direction"),A=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),F=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var K=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),D=b.showShapePicker(F,C,K,mxUtils.bind(this,function(O){null!=O&&a.connectVertex(K,x,a.defaultEdgeLength,A,!0,!0,function(Q,R,P){P(O);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(O))},
-function(Q){a.selectCellsForConnectVertex(Q)},A,this.hoverIcons)}),x,!0);this.centerShapePicker(D,r,F,C,x);mxUtils.setOpacity(D,30);mxEvent.addListener(D,"mouseenter",function(){mxUtils.setOpacity(D,100)});mxEvent.addListener(D,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
+f);var e=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();e.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(B,C,G){var J=a.getCompositeParent(u.cell);B=a.getCellGeometry(J);for(r.consume();null!=J&&a.model.isVertex(J)&&null!=B&&B.relative;)cell=
+J,J=a.model.getParent(cell),B=a.getCellGeometry(J);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.getGraphX(),r.getGraphY(),J,mxUtils.bind(this,function(D){G(D);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(D))}),m)}),30)}),mxUtils.bind(this,function(B){this.graph.selectCellsForConnectVertex(B,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
+m.getProperty("arrow"),x=m.getProperty("direction"),B=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),G=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var J=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),D=b.showShapePicker(G,C,J,mxUtils.bind(this,function(N){null!=N&&a.connectVertex(J,x,a.defaultEdgeLength,B,!0,!0,function(Q,R,P){P(N);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(N))},
+function(Q){a.selectCellsForConnectVertex(Q)},B,this.hoverIcons)}),x,!0);this.centerShapePicker(D,r,G,C,x);mxUtils.setOpacity(D,30);mxEvent.addListener(D,"mouseenter",function(){mxUtils.setOpacity(D,100)});mxEvent.addListener(D,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
EditorUi.prototype.centerShapePicker=function(a,b,f,d,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)a.style.width="40px";var e=a.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(f-=e.width/2-10,d-=e.height+6):g==mxConstants.DIRECTION_SOUTH?(f-=e.width/2-10,d+=b.height+6):g==mxConstants.DIRECTION_WEST?(f-=e.width+6,d-=e.height/2-10):g==mxConstants.DIRECTION_EAST&&(f+=b.width+6,d-=e.height/2-10);a.style.left=f+"px";a.style.top=d+"px"};
EditorUi.prototype.showShapePicker=function(a,b,f,d,g,e){a=this.createShapePicker(a,b,f,d,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(f,e),e);null!=a&&(null==this.hoverIcons||e||this.hoverIcons.reset(),e=this.editor.graph,e.popupMenuHandler.hideMenu(),e.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=d,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,b,f,d,g,e,k,n){var u=null;if(null!=k&&0<k.length){var m=this,r=this.editor.graph;u=document.createElement("div");g=r.view.getState(f);var x=null==f||null!=g&&r.isTransparentState(g)?null:r.copyStyle(f);f=6>k.length?35*k.length:140;u.className="geToolbarContainer geSidebarContainer";u.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+f+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
-mxPopupMenu.prototype.zIndex+1+";";n||mxUtils.setPrefixedStyle(u.style,"transform","translate(-22px,-22px)");null!=r.background&&r.background!=mxConstants.NONE&&(u.style.backgroundColor=r.background);r.container.appendChild(u);f=mxUtils.bind(this,function(A){var C=document.createElement("a");C.className="geItem";C.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";u.appendChild(C);null!=x&&"1"!=urlParams.sketch?
-this.sidebar.graph.pasteStyle(x,[A]):m.insertHandler([A],""!=A.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([A],25,25,C,null,!0,!1,A.geometry.width,A.geometry.height);mxEvent.addListener(C,"click",function(){var F=r.cloneCell(A);if(null!=d)d(F);else{F.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-A.geometry.width/2);F.geometry.y=r.snap(Math.round(b/r.view.scale)-r.view.translate.y-A.geometry.height/2);r.model.beginUpdate();try{r.addCell(F)}finally{r.model.endUpdate()}r.setSelectionCell(F);
-r.scrollCellToVisible(F);r.startEditingAtCell(F);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(F))}null!=e&&e()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,b-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
+mxPopupMenu.prototype.zIndex+1+";";n||mxUtils.setPrefixedStyle(u.style,"transform","translate(-22px,-22px)");null!=r.background&&r.background!=mxConstants.NONE&&(u.style.backgroundColor=r.background);r.container.appendChild(u);f=mxUtils.bind(this,function(B){var C=document.createElement("a");C.className="geItem";C.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";u.appendChild(C);null!=x&&"1"!=urlParams.sketch?
+this.sidebar.graph.pasteStyle(x,[B]):m.insertHandler([B],""!=B.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([B],25,25,C,null,!0,!1,B.geometry.width,B.geometry.height);mxEvent.addListener(C,"click",function(){var G=r.cloneCell(B);if(null!=d)d(G);else{G.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-B.geometry.width/2);G.geometry.y=r.snap(Math.round(b/r.view.scale)-r.view.translate.y-B.geometry.height/2);r.model.beginUpdate();try{r.addCell(G)}finally{r.model.endUpdate()}r.setSelectionCell(G);
+r.scrollCellToVisible(G);r.startEditingAtCell(G);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(G))}null!=e&&e()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,b-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
EditorUi.prototype.getCellsForShapePicker=function(a,b){b=mxUtils.bind(this,function(f,d,g,e){return this.editor.graph.createVertex(null,null,e||"",0,0,d||120,g||60,f,!1)});return[null!=a?this.editor.graph.cloneCell(a):b("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),b("whiteSpace=wrap;html=1;"),b("ellipse;whiteSpace=wrap;html=1;"),b("rhombus;whiteSpace=wrap;html=1;",80,80),b("rounded=1;whiteSpace=wrap;html=1;"),b("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),
b("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),b("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),b("triangle;whiteSpace=wrap;html=1;",60,80),b("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),b("shape=tape;whiteSpace=wrap;html=1;",120,100),b("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80),b("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),b("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
@@ -2484,43 +2484,43 @@ a==mxConstants.ARROW_BLOCK_THIN?f="1"!=b?Format.blockThinMarkerImage.src:Format.
f=Format.ERmandOneMarkerImage.src:"ERmany"==a?f=Format.ERmanyMarkerImage.src:"ERoneToMany"==a?f=Format.ERoneToManyMarkerImage.src:"ERzeroToOne"==a?f=Format.ERzeroToOneMarkerImage.src:"ERzeroToMany"==a&&(f=Format.ERzeroToManyMarkerImage.src);return f};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=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()));f.setEnabled(b.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(e){var k=null;if(e.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{k=k||e.getSelectionCells();k=e.getExportableCells(e.model.getTopmostCells(k));for(var n={},u=e.createCellLookup(k),m=e.cloneCells(k,null,n),r=new mxGraphModel,x=r.getChildAt(r.getRoot(),
-0),A=0;A<m.length;A++){r.add(x,m[A]);var C=e.view.getState(k[A]);if(null!=C){var F=e.getCellGeometry(m[A]);null!=F&&F.relative&&!r.isEdge(k[A])&&null==u[mxObjectIdentity.get(r.getParent(k[A]))]&&(F.offset=null,F.relative=!1,F.x=C.x/C.view.scale-C.view.translate.x,F.y=C.y/C.view.scale-C.view.translate.y)}}e.updateCustomLinks(e.createCellMapping(n,u),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return k};var f=mxClipboard.paste;mxClipboard.paste=function(e){var k=
+0),B=0;B<m.length;B++){r.add(x,m[B]);var C=e.view.getState(k[B]);if(null!=C){var G=e.getCellGeometry(m[B]);null!=G&&G.relative&&!r.isEdge(k[B])&&null==u[mxObjectIdentity.get(r.getParent(k[B]))]&&(G.offset=null,G.relative=!1,G.x=C.x/C.view.scale-C.view.translate.x,G.y=C.y/C.view.scale-C.view.translate.y)}}e.updateCustomLinks(e.createCellMapping(n,u),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return k};var f=mxClipboard.paste;mxClipboard.paste=function(e){var k=
null;e.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):k=f.apply(this,arguments);a.updatePasteActionStates();return k};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};var g=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(e,k){g.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 H=this.graph.getPageLayout(),S=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+H.x*S.width),this.scale*(this.translate.y+H.y*S.height),this.scale*H.width*S.width,
-this.scale*H.height*S.height)};a.getPreferredPageSize=function(H,S,V){H=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,H.width*S.width,H.height*S.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(H,S,V,ea){if(null!=a.container&&!a.isViewer()){V=null!=V?V:0;ea=null!=ea?ea:0;var ka=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,aa=a.view.scale,
-oa=mxRectangle.fromRectangle(ka);oa.x=oa.x/aa-W.x;oa.y=oa.y/aa-W.y;oa.width/=aa;oa.height/=aa;W=a.container.scrollTop;var ua=a.container.scrollLeft,Ja=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)Ja+=3;var Ga=a.container.offsetWidth-Ja;Ja=a.container.offsetHeight-Ja;H=H?Math.max(.3,Math.min(S||1,Ga/oa.width)):aa;S=(Ga-H*oa.width)/2/H;var va=0==this.lightboxVerticalDivider?0:(Ja-H*oa.height)/this.lightboxVerticalDivider/H;wa&&(S=Math.max(S,0),va=Math.max(va,
-0));if(wa||ka.width<Ga||ka.height<Ja)a.view.scaleAndTranslate(H,Math.floor(S-oa.x),Math.floor(va-oa.y)),a.container.scrollTop=W*H/aa,a.container.scrollLeft=ua*H/aa;else if(0!=V||0!=ea)ka=a.view.translate,a.view.setTranslate(Math.floor(ka.x+V/aa),Math.floor(ka.y+ea/aa))}});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(H){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(H){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var g=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position=
+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 F=this.graph.getPageLayout(),L=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+F.x*L.width),this.scale*(this.translate.y+F.y*L.height),this.scale*F.width*L.width,
+this.scale*F.height*L.height)};a.getPreferredPageSize=function(F,L,T){F=this.getPageLayout();L=this.getPageSize();return new mxRectangle(0,0,F.width*L.width,F.height*L.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(F,L,T,ca){if(null!=a.container&&!a.isViewer()){T=null!=T?T:0;ca=null!=ca?ca:0;var fa=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,aa=a.view.scale,
+oa=mxRectangle.fromRectangle(fa);oa.x=oa.x/aa-W.x;oa.y=oa.y/aa-W.y;oa.width/=aa;oa.height/=aa;W=a.container.scrollTop;var sa=a.container.scrollLeft,Ka=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)Ka+=3;var Ha=a.container.offsetWidth-Ka;Ka=a.container.offsetHeight-Ka;F=F?Math.max(.3,Math.min(L||1,Ha/oa.width)):aa;L=(Ha-F*oa.width)/2/F;var ua=0==this.lightboxVerticalDivider?0:(Ka-F*oa.height)/this.lightboxVerticalDivider/F;wa&&(L=Math.max(L,0),ua=Math.max(ua,
+0));if(wa||fa.width<Ha||fa.height<Ka)a.view.scaleAndTranslate(F,Math.floor(L-oa.x),Math.floor(ua-oa.y)),a.container.scrollTop=W*F/aa,a.container.scrollLeft=sa*F/aa;else if(0!=T||0!=ca)fa=a.view.translate,a.view.setTranslate(Math.floor(fa.x+T/aa),Math.floor(fa.y+ca/aa))}});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(F){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(F){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var g=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 H=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=H?parseInt(H["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var k=0;e=mxUtils.bind(this,function(H,S,V){k++;
-var ea=document.createElement("span");ea.style.paddingLeft="8px";ea.style.paddingRight="8px";ea.style.cursor="pointer";mxEvent.addListener(ea,"click",H);null!=V&&ea.setAttribute("title",V);H=document.createElement("img");H.setAttribute("border","0");H.setAttribute("src",S);H.style.width="36px";H.style.filter="invert(100%)";ea.appendChild(H);this.chromelessToolbar.appendChild(ea);return ea});null!=g.backBtn&&e(mxUtils.bind(this,function(H){window.location.href=g.backBtn.url;mxEvent.consume(H)}),Editor.backImage,
-mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var n=e(mxUtils.bind(this,function(H){this.actions.get("previousPage").funct();mxEvent.consume(H)}),Editor.previousImage,mxResources.get("previousPage")),u=document.createElement("div");u.style.fontFamily=Editor.defaultHtmlFont;u.style.display="inline-block";u.style.verticalAlign="top";u.style.fontWeight="bold";u.style.marginTop="8px";u.style.fontSize="14px";u.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(u);
-var m=e(mxUtils.bind(this,function(H){this.actions.get("nextPage").funct();mxEvent.consume(H)}),Editor.nextImage,mxResources.get("nextPage")),r=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(u.innerText="",mxUtils.write(u,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});n.style.paddingLeft="0px";n.style.paddingRight="4px";m.style.paddingLeft="4px";m.style.paddingRight="0px";var x=mxUtils.bind(this,function(){null!=this.pages&&
-1<this.pages.length&&null!=this.currentPage?(m.style.display="",n.style.display="",u.style.display="inline-block"):(m.style.display="none",n.style.display="none",u.style.display="none");r()});this.editor.addListener("resetGraphView",x);this.editor.addListener("pageSelected",r)}e(mxUtils.bind(this,function(H){this.actions.get("zoomOut").funct();mxEvent.consume(H)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(H){this.actions.get("zoomIn").funct();
-mxEvent.consume(H)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(H){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(H)}),Editor.zoomFitImage,mxResources.get("fit"));var A=null,C=null,F=mxUtils.bind(this,function(H){null!=A&&(window.clearTimeout(A),A=null);null!=C&&(window.clearTimeout(C),C=null);A=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
-0);A=null;C=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";C=null}),600)}),H||200)}),K=mxUtils.bind(this,function(H){null!=A&&(window.clearTimeout(A),A=null);null!=C&&(window.clearTimeout(C),C=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,H||30)});if("1"==urlParams.layers){this.layersDialog=null;var D=e(mxUtils.bind(this,function(H){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 S=D.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=S.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));S=mxUtils.getCurrentStyle(this.editor.graph.container);
-this.layersDialog.style.zIndex=S.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(H)}),Editor.layersImage,mxResources.get("layers")),O=a.getModel();O.addListener(mxEvent.CHANGE,function(){D.style.display=1<O.getChildCount(O.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(H){null!=
-this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(H)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(x=0;x<this.lightboxToolbarActions.length;x++){var Q=this.lightboxToolbarActions[x];Q.elem=e(Q.fn,Q.icon,Q.tooltip)}null!=g.refreshBtn&&e(mxUtils.bind(this,function(H){g.refreshBtn.url?window.location.href=g.refreshBtn.url:
-window.location.reload();mxEvent.consume(H)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=g.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,function(H){g.fullscreenBtn.url?a.openLink(g.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(H)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(g.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&e(mxUtils.bind(this,
-function(H){"1"==urlParams.close||g.closeBtn?window.close():(this.destroy(),mxEvent.consume(H))}),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(H){mxEvent.isTouchEvent(H)||(mxEvent.isShiftDown(H)||
-K(30),F())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(H){mxEvent.consume(H)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(H){a.tooltipHandler.resetTimer();a.tooltipHandler.hideTooltip();mxEvent.isShiftDown(H)?F():K(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(H){mxEvent.isShiftDown(H)?F():K(100);mxEvent.consume(H)}));mxEvent.addListener(this.chromelessToolbar,
-"mouseleave",mxUtils.bind(this,function(H){mxEvent.isTouchEvent(H)||K(30)}));var R=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(H,S){this.startX=S.getGraphX();this.startY=S.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(H,S){},mouseUp:function(H,S){mxEvent.isTouchEvent(S.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<R&&Math.abs(this.scrollTop-a.container.scrollTop)<R&&
-Math.abs(this.startX-S.getGraphX())<R&&Math.abs(this.startY-S.getGraphY())<R&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?F():K(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var P=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var H=this.graph.getPagePadding(),S=this.graph.getPageSize();this.translate.x=H.x-(this.x0||0)*S.width;this.translate.y=H.y-(this.y0||0)*S.height}P.apply(this,
-arguments)};if(!a.isViewer()){var Z=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var H=this.getPageLayout(),S=this.getPagePadding(),V=this.getPageSize(),ea=Math.ceil(2*S.x+H.width*V.width),ka=Math.ceil(2*S.y+H.height*V.height),wa=a.minimumGraphSize;if(null==wa||wa.width!=ea||wa.height!=ka)a.minimumGraphSize=new mxRectangle(0,0,ea,ka);ea=S.x-H.x*V.width;S=S.y-H.y*V.height;this.autoTranslate||this.view.translate.x==ea&&this.view.translate.y==
-S?Z.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=H.x,this.view.y0=H.y,H=a.view.translate.x,V=a.view.translate.y,a.view.setTranslate(ea,S),a.container.scrollLeft+=Math.round((ea-H)*a.view.scale),a.container.scrollTop+=Math.round((S-V)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var T=a.view.getBackgroundPane(),U=a.view.getDrawPane();a.cumulativeZoomFactor=1;var fa=null,ha=null,ba=null,qa=null,I=null,L=function(H){null!=
-fa&&window.clearTimeout(fa);0<=H&&window.setTimeout(function(){if(!a.isMouseDown||qa)fa=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)),U.style.transformOrigin="",T.style.transformOrigin="",mxClient.IS_SF?(U.style.transform="scale(1)",
-T.style.transform="scale(1)",window.setTimeout(function(){U.style.transform="";T.style.transform=""},0)):(U.style.transform="",T.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var S=new mxPoint(a.container.scrollLeft,a.container.scrollTop),V=mxUtils.getOffset(a.container),ea=a.view.scale,ka=0,wa=0;null!=ha&&(ka=a.container.offsetWidth/2-ha.x+V.x,wa=a.container.offsetHeight/2-ha.y+V.y);a.zoom(a.cumulativeZoomFactor,null,a.isFastZoomEnabled()?
-20:null);a.view.scale!=ea&&(null!=ba&&(ka+=S.x-ba.x,wa+=S.y-ba.y),null!=b&&f.chromelessResize(!1,null,ka*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==ka&&0==wa||(a.container.scrollLeft-=ka*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=I&&U.setAttribute("filter",I);a.cumulativeZoomFactor=1;I=qa=ha=ba=fa=null}),null!=H?H:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(H,S,
-V,ea){ea=null!=ea?ea:this.zoomFactor;(S=S||!a.scrollbars)&&(ha=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));H?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=ea,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/=ea,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==I&&""!=U.getAttribute("filter")&&(I=U.getAttribute("filter"),U.removeAttribute("filter")),ba=new mxPoint(a.container.scrollLeft,a.container.scrollTop),H=S||null==ha?a.container.scrollLeft+a.container.clientWidth/
-2:ha.x+a.container.scrollLeft-a.container.offsetLeft,ea=S||null==ha?a.container.scrollTop+a.container.clientHeight/2:ha.y+a.container.scrollTop-a.container.offsetTop,U.style.transformOrigin=H+"px "+ea+"px",U.style.transform="scale("+this.cumulativeZoomFactor+")",T.style.transformOrigin=H+"px "+ea+"px",T.style.transform="scale("+this.cumulativeZoomFactor+")",null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(H=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(H.style,
-"transform-origin",(S||null==ha?a.container.clientWidth/2+a.container.scrollLeft-H.offsetLeft+"px":ha.x+a.container.scrollLeft-H.offsetLeft-a.container.offsetLeft+"px")+" "+(S||null==ha?a.container.clientHeight/2+a.container.scrollTop-H.offsetTop+"px":ha.y+a.container.scrollTop-H.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(H.style,"transform","scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=f.hoverIcons&&
-f.hoverIcons.reset());L(a.isFastZoomEnabled()?V:0)};mxEvent.addGestureListeners(a.container,function(H){null!=fa&&window.clearTimeout(fa)},null,function(H){1!=a.cumulativeZoomFactor&&L(0)});mxEvent.addListener(a.container,"scroll",function(H){null==fa||a.isMouseDown||1==a.cumulativeZoomFactor||L(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(H,S,V,ea,ka){a.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!V&&a.isScrollWheelEvent(H))V=
-a.view.getTranslate(),ea=40/a.view.scale,mxEvent.isShiftDown(H)?a.view.setTranslate(V.x+(S?-ea:ea),V.y):a.view.setTranslate(V.x,V.y+(S?ea:-ea));else if(V||a.isZoomWheelEvent(H))for(var wa=mxEvent.getSource(H);null!=wa;){if(wa==a.container)return a.tooltipHandler.hideTooltip(),ha=null!=ea&&null!=ka?new mxPoint(ea,ka):new mxPoint(mxEvent.getClientX(H),mxEvent.getClientY(H)),qa=V,V=a.zoomFactor,ea=null,H.ctrlKey&&null!=H.deltaY&&40>Math.abs(H.deltaY)&&Math.round(H.deltaY)!=H.deltaY?V=1+Math.abs(H.deltaY)/
-20*(V-1):null!=H.movementY&&"pointermove"==H.type&&(V=1+Math.max(1,Math.abs(H.movementY))/20*(V-1),ea=-1),a.lazyZoom(S,null,ea,V),mxEvent.consume(H),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(H){a.cumulativeZoomFactor=H.scale;a.lazyZoom(0<H.scale,!0);mxEvent.consume(H)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
+"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var e=mxUtils.bind(this,function(){var F=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=F?parseInt(F["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var k=0;e=mxUtils.bind(this,function(F,L,T){k++;
+var ca=document.createElement("span");ca.style.paddingLeft="8px";ca.style.paddingRight="8px";ca.style.cursor="pointer";mxEvent.addListener(ca,"click",F);null!=T&&ca.setAttribute("title",T);F=document.createElement("img");F.setAttribute("border","0");F.setAttribute("src",L);F.style.width="36px";F.style.filter="invert(100%)";ca.appendChild(F);this.chromelessToolbar.appendChild(ca);return ca});null!=g.backBtn&&e(mxUtils.bind(this,function(F){window.location.href=g.backBtn.url;mxEvent.consume(F)}),Editor.backImage,
+mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var n=e(mxUtils.bind(this,function(F){this.actions.get("previousPage").funct();mxEvent.consume(F)}),Editor.previousImage,mxResources.get("previousPage")),u=document.createElement("div");u.style.fontFamily=Editor.defaultHtmlFont;u.style.display="inline-block";u.style.verticalAlign="top";u.style.fontWeight="bold";u.style.marginTop="8px";u.style.fontSize="14px";u.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(u);
+var m=e(mxUtils.bind(this,function(F){this.actions.get("nextPage").funct();mxEvent.consume(F)}),Editor.nextImage,mxResources.get("nextPage")),r=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(u.innerText="",mxUtils.write(u,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});n.style.paddingLeft="0px";n.style.paddingRight="4px";m.style.paddingLeft="4px";m.style.paddingRight="0px";var x=mxUtils.bind(this,function(){null!=this.pages&&
+1<this.pages.length&&null!=this.currentPage?(m.style.display="",n.style.display="",u.style.display="inline-block"):(m.style.display="none",n.style.display="none",u.style.display="none");r()});this.editor.addListener("resetGraphView",x);this.editor.addListener("pageSelected",r)}e(mxUtils.bind(this,function(F){this.actions.get("zoomOut").funct();mxEvent.consume(F)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(F){this.actions.get("zoomIn").funct();
+mxEvent.consume(F)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(F){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(F)}),Editor.zoomFitImage,mxResources.get("fit"));var B=null,C=null,G=mxUtils.bind(this,function(F){null!=B&&(window.clearTimeout(B),B=null);null!=C&&(window.clearTimeout(C),C=null);B=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
+0);B=null;C=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";C=null}),600)}),F||200)}),J=mxUtils.bind(this,function(F){null!=B&&(window.clearTimeout(B),B=null);null!=C&&(window.clearTimeout(C),C=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,F||30)});if("1"==urlParams.layers){this.layersDialog=null;var D=e(mxUtils.bind(this,function(F){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 L=D.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=L.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));L=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=L.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(F)}),Editor.layersImage,mxResources.get("layers")),N=a.getModel();N.addListener(mxEvent.CHANGE,function(){D.style.display=1<N.getChildCount(N.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(F){null!=
+this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(F)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(x=0;x<this.lightboxToolbarActions.length;x++){var Q=this.lightboxToolbarActions[x];Q.elem=e(Q.fn,Q.icon,Q.tooltip)}null!=g.refreshBtn&&e(mxUtils.bind(this,function(F){g.refreshBtn.url?window.location.href=g.refreshBtn.url:
+window.location.reload();mxEvent.consume(F)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=g.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,function(F){g.fullscreenBtn.url?a.openLink(g.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(F)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(g.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&e(mxUtils.bind(this,
+function(F){"1"==urlParams.close||g.closeBtn?window.close():(this.destroy(),mxEvent.consume(F))}),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(F){mxEvent.isTouchEvent(F)||(mxEvent.isShiftDown(F)||
+J(30),G())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(F){mxEvent.consume(F)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(F){a.tooltipHandler.resetTimer();a.tooltipHandler.hideTooltip();mxEvent.isShiftDown(F)?G():J(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(F){mxEvent.isShiftDown(F)?G():J(100);mxEvent.consume(F)}));mxEvent.addListener(this.chromelessToolbar,
+"mouseleave",mxUtils.bind(this,function(F){mxEvent.isTouchEvent(F)||J(30)}));var R=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(F,L){this.startX=L.getGraphX();this.startY=L.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(F,L){},mouseUp:function(F,L){mxEvent.isTouchEvent(L.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<R&&Math.abs(this.scrollTop-a.container.scrollTop)<R&&
+Math.abs(this.startX-L.getGraphX())<R&&Math.abs(this.startY-L.getGraphY())<R&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?G():J(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var P=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var F=this.graph.getPagePadding(),L=this.graph.getPageSize();this.translate.x=F.x-(this.x0||0)*L.width;this.translate.y=F.y-(this.y0||0)*L.height}P.apply(this,
+arguments)};if(!a.isViewer()){var Z=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var F=this.getPageLayout(),L=this.getPagePadding(),T=this.getPageSize(),ca=Math.ceil(2*L.x+F.width*T.width),fa=Math.ceil(2*L.y+F.height*T.height),wa=a.minimumGraphSize;if(null==wa||wa.width!=ca||wa.height!=fa)a.minimumGraphSize=new mxRectangle(0,0,ca,fa);ca=L.x-F.x*T.width;L=L.y-F.y*T.height;this.autoTranslate||this.view.translate.x==ca&&this.view.translate.y==
+L?Z.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=F.x,this.view.y0=F.y,F=a.view.translate.x,T=a.view.translate.y,a.view.setTranslate(ca,L),a.container.scrollLeft+=Math.round((ca-F)*a.view.scale),a.container.scrollTop+=Math.round((L-T)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var U=a.view.getBackgroundPane(),V=a.view.getDrawPane();a.cumulativeZoomFactor=1;var ia=null,ha=null,ba=null,qa=null,O=null,S=function(F){null!=
+ia&&window.clearTimeout(ia);0<=F&&window.setTimeout(function(){if(!a.isMouseDown||qa)ia=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)),V.style.transformOrigin="",U.style.transformOrigin="",mxClient.IS_SF?(V.style.transform="scale(1)",
+U.style.transform="scale(1)",window.setTimeout(function(){V.style.transform="";U.style.transform=""},0)):(V.style.transform="",U.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var L=new mxPoint(a.container.scrollLeft,a.container.scrollTop),T=mxUtils.getOffset(a.container),ca=a.view.scale,fa=0,wa=0;null!=ha&&(fa=a.container.offsetWidth/2-ha.x+T.x,wa=a.container.offsetHeight/2-ha.y+T.y);a.zoom(a.cumulativeZoomFactor,null,a.isFastZoomEnabled()?
+20:null);a.view.scale!=ca&&(null!=ba&&(fa+=L.x-ba.x,wa+=L.y-ba.y),null!=b&&f.chromelessResize(!1,null,fa*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==fa&&0==wa||(a.container.scrollLeft-=fa*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=O&&V.setAttribute("filter",O);a.cumulativeZoomFactor=1;O=qa=ha=ba=ia=null}),null!=F?F:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(F,L,
+T,ca){ca=null!=ca?ca:this.zoomFactor;(L=L||!a.scrollbars)&&(ha=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));F?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=ca,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/=ca,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&&""!=V.getAttribute("filter")&&(O=V.getAttribute("filter"),V.removeAttribute("filter")),ba=new mxPoint(a.container.scrollLeft,a.container.scrollTop),F=L||null==ha?a.container.scrollLeft+a.container.clientWidth/
+2:ha.x+a.container.scrollLeft-a.container.offsetLeft,ca=L||null==ha?a.container.scrollTop+a.container.clientHeight/2:ha.y+a.container.scrollTop-a.container.offsetTop,V.style.transformOrigin=F+"px "+ca+"px",V.style.transform="scale("+this.cumulativeZoomFactor+")",U.style.transformOrigin=F+"px "+ca+"px",U.style.transform="scale("+this.cumulativeZoomFactor+")",null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(F=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(F.style,
+"transform-origin",(L||null==ha?a.container.clientWidth/2+a.container.scrollLeft-F.offsetLeft+"px":ha.x+a.container.scrollLeft-F.offsetLeft-a.container.offsetLeft+"px")+" "+(L||null==ha?a.container.clientHeight/2+a.container.scrollTop-F.offsetTop+"px":ha.y+a.container.scrollTop-F.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(F.style,"transform","scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=f.hoverIcons&&
+f.hoverIcons.reset());S(a.isFastZoomEnabled()?T:0)};mxEvent.addGestureListeners(a.container,function(F){null!=ia&&window.clearTimeout(ia)},null,function(F){1!=a.cumulativeZoomFactor&&S(0)});mxEvent.addListener(a.container,"scroll",function(F){null==ia||a.isMouseDown||1==a.cumulativeZoomFactor||S(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(F,L,T,ca,fa){a.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!T&&a.isScrollWheelEvent(F))T=
+a.view.getTranslate(),ca=40/a.view.scale,mxEvent.isShiftDown(F)?a.view.setTranslate(T.x+(L?-ca:ca),T.y):a.view.setTranslate(T.x,T.y+(L?ca:-ca));else if(T||a.isZoomWheelEvent(F))for(var wa=mxEvent.getSource(F);null!=wa;){if(wa==a.container)return a.tooltipHandler.hideTooltip(),ha=null!=ca&&null!=fa?new mxPoint(ca,fa):new mxPoint(mxEvent.getClientX(F),mxEvent.getClientY(F)),qa=T,T=a.zoomFactor,ca=null,F.ctrlKey&&null!=F.deltaY&&40>Math.abs(F.deltaY)&&Math.round(F.deltaY)!=F.deltaY?T=1+Math.abs(F.deltaY)/
+20*(T-1):null!=F.movementY&&"pointermove"==F.type&&(T=1+Math.max(1,Math.abs(F.movementY))/20*(T-1),ca=-1),a.lazyZoom(L,null,ca,T),mxEvent.consume(F),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(F){a.cumulativeZoomFactor=F.scale;a.lazyZoom(0<F.scale,!0);mxEvent.consume(F)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(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(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,f=60;null!=b&&(f=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,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))};
@@ -2566,11 +2566,11 @@ this.container.appendChild(this.sidebarFooterContainer);this.container.appendChi
!0,0,mxUtils.bind(this,function(b){this.hsplitPosition=b;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a;0==this.statusContainer.getElementsByTagName("div").length&&(this.statusContainer.innerText="",a=this.createStatusDiv(a),this.statusContainer.appendChild(a))};
EditorUi.prototype.createStatusDiv=function(a){var b=document.createElement("div");b.setAttribute("title",a);b.innerHTML=a;return b};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};
EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b};
-EditorUi.prototype.addSplitHandler=function(a,b,f,d){function g(x){if(null!=k){var A=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));d(Math.max(0,n+(b?A.x-k.x:k.y-A.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function e(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(b?a.style.left:a.style.bottom);b||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
-mxEvent.getClientY(x));n=r();u=!1;mxEvent.consume(x)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(x){if(!u&&this.hsplitClickEnabled){var A=null!=m?m-f:0;m=r();d(A);mxEvent.consume(x)}}));mxEvent.addGestureListeners(document,null,g,e);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,g,e)})};
+EditorUi.prototype.addSplitHandler=function(a,b,f,d){function g(x){if(null!=k){var B=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));d(Math.max(0,n+(b?B.x-k.x:k.y-B.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function e(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(b?a.style.left:a.style.bottom);b||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
+mxEvent.getClientY(x));n=r();u=!1;mxEvent.consume(x)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(x){if(!u&&this.hsplitClickEnabled){var B=null!=m?m-f:0;m=r();d(B);mxEvent.consume(x)}}));mxEvent.addGestureListeners(document,null,g,e);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,g,e)})};
EditorUi.prototype.prompt=function(a,b,f){a=new FilenameDialog(this,b,mxResources.get("apply"),function(d){f(parseFloat(d))},a);this.showDialog(a.container,300,80,!0,!0);a.init()};
EditorUi.prototype.handleError=function(a,b,f,d,g){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var e=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(g=mxUtils.htmlEntities(a.message));this.showError(b,g,e,f,null,null,null,null,null,null,null,null,d?f:null)}else null!=f&&f()};
-EditorUi.prototype.showError=function(a,b,f,d,g,e,k,n,u,m,r,x,A){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,g,e,k,x,n,u);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,r||100+20*b,!0,!1,A);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,g,e,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,g,e,k,n,u,m);this.dialogs.push(this.dialog)};
+EditorUi.prototype.showError=function(a,b,f,d,g,e,k,n,u,m,r,x,B){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,g,e,k,x,n,u);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,r||100+20*b,!0,!1,B);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,g,e,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,g,e,k,n,u,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,b,f){null!=this.dialogs&&0<this.dialogs.length&&(null==f||f==this.dialog.container.firstChild)&&(f=this.dialogs.pop(),0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var b=a.getSelectionCells(),f=new mxDictionary,d=[],g=0;g<b.length;g++){var e=a.isTableCell(b[g])?a.model.getParent(b[g]):b[g];null==e||f.get(e)||(f.put(e,!0),d.push(e))}a.setSelectionCells(a.duplicateCells(d,!1))}catch(k){this.handleError(k)}};
EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));a=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(e){f.cellEditor.restoreSelection(d);b(e)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(a.container,230,g,!0,!1);a.init()};
@@ -2594,13 +2594,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(d){d=new ChangePageSetup(this,null,d);d.ignoreColor=!0;this.editor.graph.model.execute(d)});var f=mxUtils.prompt(mxResources.get("backgroundImage"),null!=b?b.src:"");null!=f&&0<f.length?(b=new Image,b.onload=function(){a(new mxImage(f,b.width,b.height),!1)},b.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},b.src=f):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,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()};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(x,A,C){if(!d.isSelectionEmpty()&&d.isEnabled()){A=null!=A?A:1;var F=d.getCompositeParents(d.getSelectionCells()),K=0<F.length?F[0]:null;if(null!=K)if(C){d.getModel().beginUpdate();try{for(K=0;K<F.length;K++)if(d.getModel().isVertex(F[K])&&d.isCellResizable(F[K])){var D=d.getCellGeometry(F[K]);null!=D&&(D=D.clone(),37==x?D.width=Math.max(0,D.width-A):38==x?D.height=Math.max(0,D.height-A):39==x?D.width+=A:40==x&&(D.height+=A),d.getModel().setGeometry(F[K],
-D))}}finally{d.getModel().endUpdate()}}else{D=d.model.getParent(K);var O=d.getView().scale;C=null;1==d.getSelectionCount()&&d.model.isVertex(K)&&null!=d.layoutManager&&!d.isCellLocked(K)&&(C=d.layoutManager.getLayout(D));if(null!=C&&C.constructor==mxStackLayout)A=D.getIndex(K),37==x||38==x?d.model.add(D,K,Math.max(0,A-1)):(39==x||40==x)&&d.model.add(D,K,Math.min(d.model.getChildCount(D),A+1));else{var Q=d.graphHandler;null!=Q&&(null==Q.first&&Q.start(K,0,0,F),null!=Q.first&&(K=F=0,37==x?F=-A:38==
-x?K=-A:39==x?F=A:40==x&&(K=A),Q.currentDx+=F*O,Q.currentDy+=K*O,Q.checkPreview(),Q.updatePreview()),null!=k&&window.clearTimeout(k),k=window.setTimeout(function(){if(null!=Q.first){var R=Q.roundLength(Q.currentDx/O),P=Q.roundLength(Q.currentDy/O);Q.moveCells(Q.cells,R,P);Q.reset()}},400))}}}}var f=this,d=this.editor.graph,g=new mxKeyHandler(d),e=g.isEventIgnored;g.isEventIgnored=function(x){return!(mxEvent.isShiftDown(x)&&9==x.keyCode)&&(!this.isControlDown(x)||mxEvent.isShiftDown(x)||90!=x.keyCode&&
+EditorUi.prototype.createKeyHandler=function(a){function b(x,B,C){if(!d.isSelectionEmpty()&&d.isEnabled()){B=null!=B?B:1;var G=d.getCompositeParents(d.getSelectionCells()),J=0<G.length?G[0]:null;if(null!=J)if(C){d.getModel().beginUpdate();try{for(J=0;J<G.length;J++)if(d.getModel().isVertex(G[J])&&d.isCellResizable(G[J])){var D=d.getCellGeometry(G[J]);null!=D&&(D=D.clone(),37==x?D.width=Math.max(0,D.width-B):38==x?D.height=Math.max(0,D.height-B):39==x?D.width+=B:40==x&&(D.height+=B),d.getModel().setGeometry(G[J],
+D))}}finally{d.getModel().endUpdate()}}else{D=d.model.getParent(J);var N=d.getView().scale;C=null;1==d.getSelectionCount()&&d.model.isVertex(J)&&null!=d.layoutManager&&!d.isCellLocked(J)&&(C=d.layoutManager.getLayout(D));if(null!=C&&C.constructor==mxStackLayout)B=D.getIndex(J),37==x||38==x?d.model.add(D,J,Math.max(0,B-1)):(39==x||40==x)&&d.model.add(D,J,Math.min(d.model.getChildCount(D),B+1));else{var Q=d.graphHandler;null!=Q&&(null==Q.first&&Q.start(J,0,0,G),null!=Q.first&&(J=G=0,37==x?G=-B:38==
+x?J=-B:39==x?G=B:40==x&&(J=B),Q.currentDx+=G*N,Q.currentDy+=J*N,Q.checkPreview(),Q.updatePreview()),null!=k&&window.clearTimeout(k),k=window.setTimeout(function(){if(null!=Q.first){var R=Q.roundLength(Q.currentDx/N),P=Q.roundLength(Q.currentDy/N);Q.moveCells(Q.cells,R,P);Q.reset()}},400))}}}}var f=this,d=this.editor.graph,g=new mxKeyHandler(d),e=g.isEventIgnored;g.isEventIgnored=function(x){return!(mxEvent.isShiftDown(x)&&9==x.keyCode)&&(!this.isControlDown(x)||mxEvent.isShiftDown(x)||90!=x.keyCode&&
89!=x.keyCode&&188!=x.keyCode&&190!=x.keyCode&&85!=x.keyCode)&&(66!=x.keyCode&&73!=x.keyCode||!this.isControlDown(x)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&e.apply(this,arguments)};g.isEnabledForEvent=function(x){return!mxEvent.isConsumed(x)&&this.isGraphEvent(x)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};g.isControlDown=function(x){return mxEvent.isControlDown(x)||mxClient.IS_MAC&&x.metaKey};var k=null,n={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,
-39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},u=g.getFunction;mxKeyHandler.prototype.getFunction=function(x){if(d.isEnabled()){if(mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){var A=f.actions.get(f.altShiftActions[x.keyCode]);if(null!=A)return A.funct}if(null!=n[x.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(x)&&mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){if(d.model.isVertex(d.getSelectionCell()))return function(){var C=d.connectVertex(d.getSelectionCell(),n[x.keyCode],
+39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},u=g.getFunction;mxKeyHandler.prototype.getFunction=function(x){if(d.isEnabled()){if(mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){var B=f.actions.get(f.altShiftActions[x.keyCode]);if(null!=B)return B.funct}if(null!=n[x.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(x)&&mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){if(d.model.isVertex(d.getSelectionCell()))return function(){var C=d.connectVertex(d.getSelectionCell(),n[x.keyCode],
d.defaultEdgeLength,x,!0);null!=C&&0<C.length&&(1==C.length&&d.model.isEdge(C[0])?d.setSelectionCell(d.model.getTerminal(C[0],!1)):d.setSelectionCell(C[C.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(x)?function(){b(x.keyCode,mxEvent.isShiftDown(x)?d.gridSize:null,!0)}:function(){b(x.keyCode,mxEvent.isShiftDown(x)?d.gridSize:null)}}return u.apply(this,arguments)};g.bindAction=mxUtils.bind(this,
-function(x,A,C,F){var K=this.actions.get(C);null!=K&&(C=function(){K.isEnabled()&&K.funct()},A?F?g.bindControlShiftKey(x,C):g.bindControlKey(x,C):F?g.bindShiftKey(x,C):g.bindKey(x,C))});var m=this,r=g.escape;g.escape=function(x){r.apply(this,arguments)};g.enter=function(){};g.bindControlShiftKey(36,function(){d.exitGroup()});g.bindControlShiftKey(35,function(){d.enterGroup()});g.bindShiftKey(36,function(){d.home()});g.bindKey(35,function(){d.refresh()});g.bindAction(107,!0,"zoomIn");g.bindAction(109,
+function(x,B,C,G){var J=this.actions.get(C);null!=J&&(C=function(){J.isEnabled()&&J.funct()},B?G?g.bindControlShiftKey(x,C):g.bindControlKey(x,C):G?g.bindShiftKey(x,C):g.bindKey(x,C))});var m=this,r=g.escape;g.escape=function(x){r.apply(this,arguments)};g.enter=function(){};g.bindControlShiftKey(36,function(){d.exitGroup()});g.bindControlShiftKey(35,function(){d.enterGroup()});g.bindShiftKey(36,function(){d.home()});g.bindKey(35,function(){d.refresh()});g.bindAction(107,!0,"zoomIn");g.bindAction(109,
!0,"zoomOut");g.bindAction(80,!0,"print");g.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)g.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),g.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),g.bindControlKey(13,function(){m.ctrlEnter()}),g.bindAction(8,!1,"delete"),g.bindAction(8,!0,"deleteAll"),g.bindAction(8,!1,"deleteLabels",!0),g.bindAction(46,!1,"delete"),g.bindAction(46,!0,"deleteAll"),g.bindAction(46,!1,"deleteLabels",!0),g.bindAction(36,
!1,"resetView"),g.bindAction(72,!0,"fitWindow",!0),g.bindAction(74,!0,"fitPage"),g.bindAction(74,!0,"fitTwoPages",!0),g.bindAction(48,!0,"customZoom"),g.bindAction(82,!0,"turn"),g.bindAction(82,!0,"clearDefaultStyle",!0),g.bindAction(83,!0,"save"),g.bindAction(83,!0,"saveAs",!0),g.bindAction(65,!0,"selectAll"),g.bindAction(65,!0,"selectNone",!0),g.bindAction(73,!0,"selectVertices",!0),g.bindAction(69,!0,"selectEdges",!0),g.bindAction(69,!0,"editStyle"),g.bindAction(66,!0,"bold"),g.bindAction(66,!0,
"toBack",!0),g.bindAction(70,!0,"toFront",!0),g.bindAction(68,!0,"duplicate"),g.bindAction(68,!0,"setAsDefaultStyle",!0),g.bindAction(90,!0,"undo"),g.bindAction(89,!0,"autosize",!0),g.bindAction(88,!0,"cut"),g.bindAction(67,!0,"copy"),g.bindAction(86,!0,"paste"),g.bindAction(71,!0,"group"),g.bindAction(77,!0,"editData"),g.bindAction(71,!0,"grid",!0),g.bindAction(73,!0,"italic"),g.bindAction(76,!0,"lockUnlock"),g.bindAction(76,!0,"layers",!0),g.bindAction(80,!0,"formatPanel",!0),g.bindAction(85,!0,
@@ -2639,15 +2639,15 @@ Sidebar.prototype.addEntries=function(a){for(var b=0;b<a.length;b++)mxUtils.bind
mxUtils.bind(this,function(){var e=this.editorUi.stringToCells(Graph.decompress(f.xml));return this.createVertexTemplateFromCells(e,f.w,f.h,f.title||"",!0,!1,!0)}))})(a[b])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,b){this.currentSearchEntryLibrary=null!=a?{id:a,lib:b}:null};
Sidebar.prototype.addEntry=function(a,b){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(b.parentLibraries=[this.currentSearchEntryLibrary]);a=a.toLowerCase().replace(/[\/,\(\)]/g," ").split(" ");for(var f=[],d={},g=0;g<a.length;g++){null==d[a[g]]&&(d[a[g]]=!0,f.push(a[g]));var e=a[g].replace(/\.*\d*$/,"");e!=a[g]&&null==d[e]&&(d[e]=!0,f.push(e))}for(g=0;g<f.length;g++)this.addEntryForTag(f[g],b)}return b};
Sidebar.prototype.addEntryForTag=function(a,b){if(null!=a&&1<a.length){var f=this.taglist[a];"object"!==typeof f&&(f={entries:[]},this.taglist[a]=f);f.entries.push(b)}};
-Sidebar.prototype.searchEntries=function(a,b,f,d,g){if(null!=this.taglist&&null!=a){var e=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*b;a=[];for(var n=0,u=0;u<e.length;u++)if(0<e[u].length){var m=this.taglist[e[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var A=0;A<x.length;A++)if(m=x[A],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==e.length-1&&a.length==k)){d(a.slice(f*b,k),k,!0,e);return}}else a=[];g=r;n++}g=a.length;d(a.slice(f*b,(f+1)*b),g,!1,e)}else d([],null,
+Sidebar.prototype.searchEntries=function(a,b,f,d,g){if(null!=this.taglist&&null!=a){var e=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*b;a=[];for(var n=0,u=0;u<e.length;u++)if(0<e[u].length){var m=this.taglist[e[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var B=0;B<x.length;B++)if(m=x[B],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==e.length-1&&a.length==k)){d(a.slice(f*b,k),k,!0,e);return}}else a=[];g=r;n++}g=a.length;d(a.slice(f*b,(f+1)*b),g,!1,e)}else d([],null,
null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var b=[],f={},d=0;d<a.length;d++)null==f[a[d]]&&(f[a[d]]="1",b.push(a[d]));return b.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,b){a=a.clone();null!=b&&(a.value=b);return a};Sidebar.prototype.showPopupMenuForEntry=function(a,b,f){};
Sidebar.prototype.addSearchPalette=function(a){var b=document.createElement("div");b.style.visibility="hidden";this.container.appendChild(b);var f=document.createElement("div");f.className="geSidebar";f.style.boxSizing="border-box";f.style.overflow="hidden";f.style.width="100%";f.style.padding="8px";f.style.paddingTop="14px";f.style.paddingBottom="0px";a||(f.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 g=document.createElement("input");g.setAttribute("placeholder",mxResources.get("searchShapes"));g.setAttribute("type","text");g.style.fontSize="12px";g.style.overflow="hidden";g.style.boxSizing="border-box";g.style.border="solid 1px #d5d5d5";g.style.borderRadius="4px";g.style.width="100%";g.style.outline="none";g.style.padding="6px";g.style.paddingRight="20px";d.appendChild(g);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+"')";d.appendChild(e);f.appendChild(d);var k=document.createElement("center"),n=mxUtils.button(mxResources.get("moreResults"),function(){K()});n.style.display="none";n.style.lineHeight="normal";n.style.fontSize="12px";n.style.padding="6px 12px 6px 12px";n.style.marginTop="4px";n.style.marginBottom="8px";k.style.paddingTop="4px";k.style.paddingBottom=
-"4px";k.appendChild(n);f.appendChild(k);var u="",m=!1,r=!1,x=0,A={},C=12,F=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var D=f.firstChild;null!=D;){var O=D.nextSibling;D!=d&&D!=k&&D.parentNode.removeChild(D);D=O}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),n.style.display="none",u=g.value="",F());g.focus()});var K=mxUtils.bind(this,
-function(){C=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=g.value){if(null!=k.parentNode&&(u!=g.value&&(F(),u=g.value,A={},r=!1,x=0),!m&&!r)){n.setAttribute("disabled","true");n.style.display="";n.style.cursor="wait";n.innerHTML=mxResources.get("loading")+"...";m=!0;var D={};this.currentSearch=D;this.searchEntries(u,C,x,mxUtils.bind(this,function(O,Q,R,P){if(this.currentSearch==D){O=null!=O?O:[];m=!1;x++;this.insertSearchHint(f,u,C,x,O,Q,R,P);
-0==O.length&&1==x&&(u="");null!=k.parentNode&&k.parentNode.removeChild(k);for(Q=0;Q<O.length;Q++)mxUtils.bind(this,function(Z){try{var T=Z();null==A[T.innerHTML]?(A[T.innerHTML]=null!=Z.parentLibraries?Z.parentLibraries.slice():[],f.appendChild(T)):null!=Z.parentLibraries&&(A[T.innerHTML]=A[T.innerHTML].concat(Z.parentLibraries));mxEvent.addGestureListeners(T,null,null,mxUtils.bind(this,function(U){var fa=A[T.innerHTML];mxEvent.isPopupTrigger(U)&&this.showPopupMenuForEntry(T,fa,U)}));mxEvent.disableContextMenu(T)}catch(U){}})(O[Q]);
-R?(n.removeAttribute("disabled"),n.innerHTML=mxResources.get("moreResults")):(n.innerHTML=mxResources.get("reset"),n.style.display="none",r=!0);n.style.cursor="";f.appendChild(k)}}),mxUtils.bind(this,function(){n.style.cursor=""}))}}else F(),u=g.value="",A={},n.style.display="none",r=!1,g.focus()});this.searchShapes=function(D){g.value=D;K()};mxEvent.addListener(g,"keydown",mxUtils.bind(this,function(D){13==D.keyCode&&(K(),mxEvent.consume(D))}));mxEvent.addListener(g,"keyup",mxUtils.bind(this,function(D){""==
+mxResources.get("search"));e.style.position="relative";e.style.left="-18px";e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";d.appendChild(e);f.appendChild(d);var k=document.createElement("center"),n=mxUtils.button(mxResources.get("moreResults"),function(){J()});n.style.display="none";n.style.lineHeight="normal";n.style.fontSize="12px";n.style.padding="6px 12px 6px 12px";n.style.marginTop="4px";n.style.marginBottom="8px";k.style.paddingTop="4px";k.style.paddingBottom=
+"4px";k.appendChild(n);f.appendChild(k);var u="",m=!1,r=!1,x=0,B={},C=12,G=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var D=f.firstChild;null!=D;){var N=D.nextSibling;D!=d&&D!=k&&D.parentNode.removeChild(D);D=N}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),n.style.display="none",u=g.value="",G());g.focus()});var J=mxUtils.bind(this,
+function(){C=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=g.value){if(null!=k.parentNode&&(u!=g.value&&(G(),u=g.value,B={},r=!1,x=0),!m&&!r)){n.setAttribute("disabled","true");n.style.display="";n.style.cursor="wait";n.innerHTML=mxResources.get("loading")+"...";m=!0;var D={};this.currentSearch=D;this.searchEntries(u,C,x,mxUtils.bind(this,function(N,Q,R,P){if(this.currentSearch==D){N=null!=N?N:[];m=!1;x++;this.insertSearchHint(f,u,C,x,N,Q,R,P);
+0==N.length&&1==x&&(u="");null!=k.parentNode&&k.parentNode.removeChild(k);for(Q=0;Q<N.length;Q++)mxUtils.bind(this,function(Z){try{var U=Z();null==B[U.innerHTML]?(B[U.innerHTML]=null!=Z.parentLibraries?Z.parentLibraries.slice():[],f.appendChild(U)):null!=Z.parentLibraries&&(B[U.innerHTML]=B[U.innerHTML].concat(Z.parentLibraries));mxEvent.addGestureListeners(U,null,null,mxUtils.bind(this,function(V){var ia=B[U.innerHTML];mxEvent.isPopupTrigger(V)&&this.showPopupMenuForEntry(U,ia,V)}));mxEvent.disableContextMenu(U)}catch(V){}})(N[Q]);
+R?(n.removeAttribute("disabled"),n.innerHTML=mxResources.get("moreResults")):(n.innerHTML=mxResources.get("reset"),n.style.display="none",r=!0);n.style.cursor="";f.appendChild(k)}}),mxUtils.bind(this,function(){n.style.cursor=""}))}}else G(),u=g.value="",B={},n.style.display="none",r=!1,g.focus()});this.searchShapes=function(D){g.value=D;J()};mxEvent.addListener(g,"keydown",mxUtils.bind(this,function(D){13==D.keyCode&&(J(),mxEvent.consume(D))}));mxEvent.addListener(g,"keyup",mxUtils.bind(this,function(D){""==
g.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")));""==g.value?(r=!0,n.style.display="none"):g.value!=u?(n.style.display="none",r=!1):m||(n.style.display=r?"none":"")}));mxEvent.addListener(g,"mousedown",function(D){D.stopPropagation&&D.stopPropagation();D.cancelBubble=!0});mxEvent.addListener(g,"selectstart",function(D){D.stopPropagation&&
D.stopPropagation();D.cancelBubble=!0});a=document.createElement("div");a.appendChild(f);this.container.appendChild(a);this.palettes.search=[b,a]};
Sidebar.prototype.insertSearchHint=function(a,b,f,d,g,e,k,n){0==g.length&&1==d&&(f=document.createElement("div"),f.className="geTitle",f.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(f,mxResources.get("noResultsFor",[b])),a.appendChild(f))};
@@ -2770,42 +2770,42 @@ Sidebar.prototype.updateShapes=function(a,b){var f=this.editorUi.editor.graph,d=
0;n<b.length;n++){var u=b[n];if(f.getModel().isVertex(u)==f.getModel().isVertex(a)||f.getModel().isEdge(u)==f.getModel().isEdge(a)){var m=f.getCellStyle(b[n],!1);f.getModel().setStyle(u,e);if("1"==mxUtils.getValue(m,"composite","0"))for(var r=f.model.getChildCount(u);0<=r;r--)f.model.remove(f.model.getChildAt(u,r));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=d[mxConstants.STYLE_SHAPE]&&(f.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[u]),f.setCellStyles("participant",d[mxConstants.STYLE_SHAPE],
[u]));for(r=0;r<k.length;r++){var x=m[k[r]];null!=x&&f.setCellStyles(k[r],x,[u])}g.push(u)}}}finally{f.model.endUpdate()}return g};
Sidebar.prototype.createDropHandler=function(a,b,f,d){f=null!=f?f:!0;return mxUtils.bind(this,function(g,e,k,n,u,m){for(m=m?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&g.isEnabled()){a=g.getImportableCells(a);if(0<a.length){g.stopEditing();m=null==k||mxEvent.isAltDown(e)?!1:g.isValidDropTarget(k,a,e);var r=null;null==k||m||(k=null);if(!g.isCellLocked(k||
-g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(b&&g.isSplitTarget(k,a,e)){var x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,K=g.cloneCells(a);g.splitEdge(k,K,null,n-d.width/2,u-d.height/2,C,F);r=K}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var D=g.layoutManager.getLayout(k);if(null!=D)for(x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,k=0;k<r.length;k++)D.moveCell(r[k],C,F)}!f||null!=e&&mxEvent.isShiftDown(e)||
-g.fireEvent(new mxEventObject("cellsInserted","cells",r))}catch(O){this.editorUi.handleError(O)}finally{g.model.endUpdate()}null!=r&&0<r.length&&(g.scrollCellToVisible(r[0]),g.setSelectionCells(r));g.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=r&&1==r.length&&window.setTimeout(function(){g.startEditing(r[0])},0)}}mxEvent.consume(e)}})};
+g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(b&&g.isSplitTarget(k,a,e)){var x=g.view.scale,B=g.view.translate,C=(n+B.x)*x,G=(u+B.y)*x,J=g.cloneCells(a);g.splitEdge(k,J,null,n-d.width/2,u-d.height/2,C,G);r=J}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var D=g.layoutManager.getLayout(k);if(null!=D)for(x=g.view.scale,B=g.view.translate,C=(n+B.x)*x,G=(u+B.y)*x,k=0;k<r.length;k++)D.moveCell(r[k],C,G)}!f||null!=e&&mxEvent.isShiftDown(e)||
+g.fireEvent(new mxEventObject("cellsInserted","cells",r))}catch(N){this.editorUi.handleError(N)}finally{g.model.endUpdate()}null!=r&&0<r.length&&(g.scrollCellToVisible(r[0]),g.setSelectionCells(r));g.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=r&&1==r.length&&window.setTimeout(function(){g.startEditing(r[0])},0)}}mxEvent.consume(e)}})};
Sidebar.prototype.createDragPreview=function(a,b){var f=document.createElement("div");f.className="geDragPreview";f.style.width=a+"px";f.style.height=b+"px";return f};
-Sidebar.prototype.dropAndConnect=function(a,b,f,d,g){var e=this.getDropAndConnectGeometry(a,b[d],f,b),k=[];if(null!=e){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(b[d]),x=n.model.getParent(a),A=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(A=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var F=C=0;if(null!=k){var K=k.origin;C=K.x;F=K.y;var D=e.getTerminalPoint(!1);null!=
-D&&(D.x+=K.x,D.y+=K.y)}var O=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&A),Q=n.getCellAt((e.x+C+n.view.translate.x)*n.view.scale,(e.y+F+n.view.translate.y)*n.view.scale,null,null,null,function(Z,T,U){return!n.isContainer(Z.cell)});if(null!=Q&&Q!=x)k=n.view.getState(Q),null!=k&&(K=k.origin,x=Q,O=!0,n.model.isEdge(a)||(e.x-=K.x-C,e.y-=K.y-F));else if(!A||n.isTableRow(a)||n.isTableCell(a))e.x+=C,e.y+=F;C=r.x;F=r.y;n.model.isEdge(b[d])&&(F=C=0);k=b=n.importCells(b,
-e.x-(O?C:0),e.y-(O?F:0),O?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,b[d],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(b[d])){n.model.setTerminal(b[d],a,!0);var R=n.getCellGeometry(b[d]);R.points=null;if(null!=R.getTerminalPoint(!1))R.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(O&&n.model.isVertex(x)){var P=n.view.getState(x);K=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(b,K.x,K.y,null,null,!0)}}else r=n.getCellGeometry(b[d]),C=e.x-Math.round(r.x),F=
-e.y-Math.round(r.y),e.x=Math.round(r.x),e.y=Math.round(r.y),n.model.setGeometry(b[d],e),n.cellsMoved(b,C,F,null,null,!0),k=b.slice(),u=1==k.length?k[0]:null,b.push(n.insertEdge(null,null,"",a,b[d],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(Z){this.editorUi.handleError(Z)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
+Sidebar.prototype.dropAndConnect=function(a,b,f,d,g){var e=this.getDropAndConnectGeometry(a,b[d],f,b),k=[];if(null!=e){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(b[d]),x=n.model.getParent(a),B=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(B=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var G=C=0;if(null!=k){var J=k.origin;C=J.x;G=J.y;var D=e.getTerminalPoint(!1);null!=
+D&&(D.x+=J.x,D.y+=J.y)}var N=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&B),Q=n.getCellAt((e.x+C+n.view.translate.x)*n.view.scale,(e.y+G+n.view.translate.y)*n.view.scale,null,null,null,function(Z,U,V){return!n.isContainer(Z.cell)});if(null!=Q&&Q!=x)k=n.view.getState(Q),null!=k&&(J=k.origin,x=Q,N=!0,n.model.isEdge(a)||(e.x-=J.x-C,e.y-=J.y-G));else if(!B||n.isTableRow(a)||n.isTableCell(a))e.x+=C,e.y+=G;C=r.x;G=r.y;n.model.isEdge(b[d])&&(G=C=0);k=b=n.importCells(b,
+e.x-(N?C:0),e.y-(N?G:0),N?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,b[d],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(b[d])){n.model.setTerminal(b[d],a,!0);var R=n.getCellGeometry(b[d]);R.points=null;if(null!=R.getTerminalPoint(!1))R.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(N&&n.model.isVertex(x)){var P=n.view.getState(x);J=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(b,J.x,J.y,null,null,!0)}}else r=n.getCellGeometry(b[d]),C=e.x-Math.round(r.x),G=
+e.y-Math.round(r.y),e.x=Math.round(r.x),e.y=Math.round(r.y),n.model.setGeometry(b[d],e),n.cellsMoved(b,C,G,null,null,!0),k=b.slice(),u=1==k.length?k[0]:null,b.push(n.insertEdge(null,null,"",a,b[d],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(Z){this.editorUi.handleError(Z)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
Sidebar.prototype.getDropAndConnectGeometry=function(a,b,f,d){var g=this.editorUi.editor.graph,e=g.view,k=1<d.length,n=g.getCellGeometry(a);d=g.getCellGeometry(b);null!=n&&null!=d&&(d=d.clone(),g.model.isEdge(a)?(a=g.view.getState(a),n=a.absolutePoints,b=n[0],g=n[n.length-1],f==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=g.x/e.scale-e.translate.x-d.width/2,d.y=g.y/e.scale-e.translate.y-d.height/2)):(n.relative&&(a=g.view.getState(a),
n=n.clone(),n.x=(a.x-e.translate.x)/e.scale,n.y=(a.y-e.translate.y)/e.scale),e=g.defaultEdgeLength,g.model.isEdge(b)&&null!=d.getTerminalPoint(!0)&&null!=d.getTerminalPoint(!1)?(b=d.getTerminalPoint(!0),g=d.getTerminalPoint(!1),e=g.x-b.x,b=g.y-b.y,e=Math.sqrt(e*e+b*b),d.x=n.getCenterX(),d.y=n.getCenterY(),d.width=1,d.height=1,f==mxConstants.DIRECTION_NORTH?(d.height=e,d.y=n.y-e,d.setTerminalPoint(new mxPoint(d.x,d.y),!1)):f==mxConstants.DIRECTION_EAST?(d.width=e,d.x=n.x+n.width,d.setTerminalPoint(new mxPoint(d.x+
d.width,d.y),!1)):f==mxConstants.DIRECTION_SOUTH?(d.height=e,d.y=n.y+n.height,d.setTerminalPoint(new mxPoint(d.x,d.y+d.height),!1)):f==mxConstants.DIRECTION_WEST&&(d.width=e,d.x=n.x-e,d.setTerminalPoint(new mxPoint(d.x,d.y),!1))):(!k&&45<d.width&&45<d.height&&45<n.width&&45<n.height&&(d.width*=n.height/d.height,d.height=n.height),d.x=n.x+n.width/2-d.width/2,d.y=n.y+n.height/2-d.height/2,f==mxConstants.DIRECTION_NORTH?d.y=d.y-n.height/2-d.height/2-e:f==mxConstants.DIRECTION_EAST?d.x=d.x+n.width/2+
d.width/2+e:f==mxConstants.DIRECTION_SOUTH?d.y=d.y+n.height/2+d.height/2+e:f==mxConstants.DIRECTION_WEST&&(d.x=d.x-n.width/2-d.width/2-e),g.model.isEdge(b)&&null!=d.getTerminalPoint(!0)&&null!=b.getTerminal(!1)&&(n=g.getCellGeometry(b.getTerminal(!1)),null!=n&&(f==mxConstants.DIRECTION_NORTH?(d.x-=n.getCenterX(),d.y-=n.getCenterY()+n.height/2):f==mxConstants.DIRECTION_EAST?(d.x-=n.getCenterX()-n.width/2,d.y-=n.getCenterY()):f==mxConstants.DIRECTION_SOUTH?(d.x-=n.getCenterX(),d.y-=n.getCenterY()-n.height/
2):f==mxConstants.DIRECTION_WEST&&(d.x-=n.getCenterX()+n.width/2,d.y-=n.getCenterY()))))));return d};Sidebar.prototype.isDropStyleEnabled=function(a,b){var f=!0;null!=b&&1==a.length&&(a=this.graph.getCellStyle(a[b]),null!=a&&(f=mxUtils.getValue(a,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(a,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE));return f};
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,f,d,g){function e(aa,oa){var ua=mxUtils.createImage(aa.src);ua.style.width=aa.width+"px";ua.style.height=aa.height+"px";null!=oa&&ua.setAttribute("title",oa);mxUtils.setOpacity(ua,aa==this.refreshTarget?30:20);ua.style.position="absolute";ua.style.cursor="crosshair";return ua}function k(aa,oa,ua,Ja){null!=Ja.parentNode&&(mxUtils.contains(ua,aa,oa)?(mxUtils.setOpacity(Ja,100),L=Ja):mxUtils.setOpacity(Ja,Ja==fa?30:20));return ua}for(var n=this.editorUi,
-u=n.editor.graph,m=null,r=null,x=this,A=0;A<d.length&&(null==r&&u.model.isVertex(d[A])?r=A:null==m&&u.model.isEdge(d[A])&&null==u.model.getTerminal(d[A],!0)&&(m=A),null==r||null==m);A++);var C=this.isDropStyleEnabled(d,r),F=mxUtils.makeDraggable(a,u,mxUtils.bind(this,function(aa,oa,ua,Ja,Ga){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=d&&null!=Q&&L==fa){var va=aa.isCellSelected(Q.cell)?aa.getSelectionCells():[Q.cell];va=this.updateShapes(aa.model.isEdge(Q.cell)?d[0]:d[r],
-va);aa.setSelectionCells(va)}else null!=d&&null!=L&&null!=D&&L!=fa?(va=aa.model.isEdge(D.cell)||null==m?r:m,aa.setSelectionCells(this.dropAndConnect(D.cell,d,I,va,oa))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(aa.view.getState(aa.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(aa,oa){F.isActive()&&F.reset()});var K=F.mouseDown;F.mouseDown=function(aa){mxEvent.isPopupTrigger(aa)||mxEvent.isMultiTouchEvent(aa)||u.isCellLocked(u.getDefaultParent())||
-(u.stopEditing(),K.apply(this,arguments))};var D=null,O=null,Q=null,R=!1,P=e(this.triangleUp,mxResources.get("connect")),Z=e(this.triangleRight,mxResources.get("connect")),T=e(this.triangleDown,mxResources.get("connect")),U=e(this.triangleLeft,mxResources.get("connect")),fa=e(this.refreshTarget,mxResources.get("replace")),ha=null,ba=e(this.roundDrop),qa=e(this.roundDrop),I=mxConstants.DIRECTION_NORTH,L=null,H=F.createPreviewElement;F.createPreviewElement=function(aa){var oa=H.apply(this,arguments);
-mxClient.IS_SVG&&(oa.style.pointerEvents="none");this.previewElementWidth=oa.style.width;this.previewElementHeight=oa.style.height;return oa};var S=F.dragEnter;F.dragEnter=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("none");S.apply(this,arguments)};var V=F.dragExit;F.dragExit=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("");V.apply(this,arguments)};F.dragOver=function(aa,oa){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=L&&this.currentGuide.hide();
-if(null!=this.previewElement){var ua=aa.view;if(null!=Q&&L==fa)this.previewElement.style.display=aa.model.isEdge(Q.cell)?"none":"",this.previewElement.style.left=Q.x+"px",this.previewElement.style.top=Q.y+"px",this.previewElement.style.width=Q.width+"px",this.previewElement.style.height=Q.height+"px";else if(null!=D&&null!=L){null!=F.currentHighlight&&null!=F.currentHighlight.state&&F.currentHighlight.hide();var Ja=aa.model.isEdge(D.cell)||null==m?r:m,Ga=x.getDropAndConnectGeometry(D.cell,d[Ja],I,
-d),va=aa.model.isEdge(D.cell)?null:aa.getCellGeometry(D.cell),za=aa.getCellGeometry(d[Ja]),ra=aa.model.getParent(D.cell),Ha=ua.translate.x*ua.scale,Ta=ua.translate.y*ua.scale;null!=va&&!va.relative&&aa.model.isVertex(ra)&&ra!=ua.currentRoot&&(Ta=ua.getState(ra),Ha=Ta.x,Ta=Ta.y);va=za.x;za=za.y;aa.model.isEdge(d[Ja])&&(za=va=0);this.previewElement.style.left=(Ga.x-va)*ua.scale+Ha+"px";this.previewElement.style.top=(Ga.y-za)*ua.scale+Ta+"px";1==d.length&&(this.previewElement.style.width=Ga.width*ua.scale+
-"px",this.previewElement.style.height=Ga.height*ua.scale+"px");this.previewElement.style.display=""}else null!=F.currentHighlight.state&&aa.model.isEdge(F.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-g.width*ua.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-g.height*ua.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,
-this.previewElement.style.display="")}};var ea=(new Date).getTime(),ka=0,wa=null,W=this.editorUi.editor.graph.getCellStyle(d[0]);F.getDropTarget=mxUtils.bind(this,function(aa,oa,ua,Ja){var Ga=mxEvent.isAltDown(Ja)||null==d?null:aa.getCellAt(oa,ua,null,null,null,function(Ta,db,Ua){return aa.isContainer(Ta.cell)});if(null!=Ga&&!this.graph.isCellConnectable(Ga)&&!this.graph.model.isEdge(Ga)){var va=this.graph.getModel().getParent(Ga);this.graph.getModel().isVertex(va)&&this.graph.isCellConnectable(va)&&
-(Ga=va)}aa.isCellLocked(Ga)&&(Ga=null);var za=aa.view.getState(Ga);va=L=null;wa!=za?(ea=(new Date).getTime(),ka=0,wa=za,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=za&&(this.updateThread=window.setTimeout(function(){null==L&&(wa=za,F.getDropTarget(aa,oa,ua,Ja))},this.dropTargetDelay+10))):ka=(new Date).getTime()-ea;if(C&&2500>ka&&null!=za&&!mxEvent.isShiftDown(Ja)&&(mxUtils.getValue(za.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(W,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(za.style,
-mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(za.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(za.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(W,mxConstants.STYLE_SHAPE)||1500<ka||aa.model.isEdge(za.cell))&&ka>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(za)&&(aa.model.isVertex(za.cell)&&null!=r||aa.model.isEdge(za.cell)&&aa.model.isEdge(d[0]))){if(aa.isCellEditable(za.cell)){Q=
-za;var ra=aa.model.isEdge(za.cell)?aa.view.getPoint(za):new mxPoint(za.getCenterX(),za.getCenterY());ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);fa.style.left=Math.floor(ra.x)+"px";fa.style.top=Math.floor(ra.y)+"px";null==ha&&(aa.container.appendChild(fa),ha=fa.parentNode);k(oa,ua,ra,fa)}}else null==Q||!mxUtils.contains(Q,oa,ua)||1500<ka&&!mxEvent.isShiftDown(Ja)?(Q=null,null!=ha&&(fa.parentNode.removeChild(fa),
-ha=null)):null!=Q&&null!=ha&&(ra=aa.model.isEdge(Q.cell)?aa.view.getPoint(Q):new mxPoint(Q.getCenterX(),Q.getCenterY()),ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),k(oa,ua,ra,fa));if(R&&null!=D&&!mxEvent.isAltDown(Ja)&&null==L){va=mxRectangle.fromRectangle(D);if(aa.model.isEdge(D.cell)){var Ha=D.absolutePoints;null!=ba.parentNode&&(ra=Ha[0],va.add(k(oa,ua,new mxRectangle(ra.x-this.roundDrop.width/2,ra.y-this.roundDrop.height/
-2,this.roundDrop.width,this.roundDrop.height),ba)));null!=qa.parentNode&&(Ha=Ha[Ha.length-1],va.add(k(oa,ua,new mxRectangle(Ha.x-this.roundDrop.width/2,Ha.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),qa)))}else ra=mxRectangle.fromRectangle(D),null!=D.shape&&null!=D.shape.boundingBox&&(ra=mxRectangle.fromRectangle(D.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Ha=this.graph.selectionCellsHandler.getHandler(D.cell),null!=Ha&&(ra.x-=
-Ha.horizontalOffset/2,ra.y-=Ha.verticalOffset/2,ra.width+=Ha.horizontalOffset,ra.height+=Ha.verticalOffset,null!=Ha.rotationShape&&null!=Ha.rotationShape.node&&"hidden"!=Ha.rotationShape.node.style.visibility&&"none"!=Ha.rotationShape.node.style.display&&null!=Ha.rotationShape.boundingBox&&ra.add(Ha.rotationShape.boundingBox)),va.add(k(oa,ua,new mxRectangle(D.getCenterX()-this.triangleUp.width/2,ra.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),P)),va.add(k(oa,ua,new mxRectangle(ra.x+
-ra.width,D.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),Z)),va.add(k(oa,ua,new mxRectangle(D.getCenterX()-this.triangleDown.width/2,ra.y+ra.height,this.triangleDown.width,this.triangleDown.height),T)),va.add(k(oa,ua,new mxRectangle(ra.x-this.triangleLeft.width,D.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),U));null!=va&&va.grow(10)}I=mxConstants.DIRECTION_NORTH;L==Z?I=mxConstants.DIRECTION_EAST:L==T||L==qa?
-I=mxConstants.DIRECTION_SOUTH:L==U&&(I=mxConstants.DIRECTION_WEST);null!=Q&&L==fa&&(za=Q);ra=(null==r||aa.isCellConnectable(d[r]))&&(aa.model.isEdge(Ga)&&null!=r||aa.model.isVertex(Ga)&&aa.isCellConnectable(Ga));if(null!=D&&5E3<=ka||D!=za&&(null==va||!mxUtils.contains(va,oa,ua)||500<ka&&null==L&&ra))if(R=!1,D=5E3>ka&&ka>this.dropTargetDelay||aa.model.isEdge(Ga)?za:null,null!=D&&ra){va=[ba,qa,P,Z,T,U];for(ra=0;ra<va.length;ra++)null!=va[ra].parentNode&&va[ra].parentNode.removeChild(va[ra]);aa.model.isEdge(Ga)?
-(Ha=za.absolutePoints,null!=Ha&&(ra=Ha[0],Ha=Ha[Ha.length-1],va=aa.tolerance,new mxRectangle(oa-va,ua-va,2*va,2*va),ba.style.left=Math.floor(ra.x-this.roundDrop.width/2)+"px",ba.style.top=Math.floor(ra.y-this.roundDrop.height/2)+"px",qa.style.left=Math.floor(Ha.x-this.roundDrop.width/2)+"px",qa.style.top=Math.floor(Ha.y-this.roundDrop.height/2)+"px",null==aa.model.getTerminal(Ga,!0)&&aa.container.appendChild(ba),null==aa.model.getTerminal(Ga,!1)&&aa.container.appendChild(qa))):(ra=mxRectangle.fromRectangle(za),
-null!=za.shape&&null!=za.shape.boundingBox&&(ra=mxRectangle.fromRectangle(za.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Ha=this.graph.selectionCellsHandler.getHandler(za.cell),null!=Ha&&(ra.x-=Ha.horizontalOffset/2,ra.y-=Ha.verticalOffset/2,ra.width+=Ha.horizontalOffset,ra.height+=Ha.verticalOffset,null!=Ha.rotationShape&&null!=Ha.rotationShape.node&&"hidden"!=Ha.rotationShape.node.style.visibility&&"none"!=Ha.rotationShape.node.style.display&&null!=
-Ha.rotationShape.boundingBox&&ra.add(Ha.rotationShape.boundingBox)),P.style.left=Math.floor(za.getCenterX()-this.triangleUp.width/2)+"px",P.style.top=Math.floor(ra.y-this.triangleUp.height)+"px",Z.style.left=Math.floor(ra.x+ra.width)+"px",Z.style.top=Math.floor(za.getCenterY()-this.triangleRight.height/2)+"px",T.style.left=P.style.left,T.style.top=Math.floor(ra.y+ra.height)+"px",U.style.left=Math.floor(ra.x-this.triangleLeft.width)+"px",U.style.top=Z.style.top,"eastwest"!=za.style.portConstraint&&
-(aa.container.appendChild(P),aa.container.appendChild(T)),aa.container.appendChild(Z),aa.container.appendChild(U));null!=za&&(O=aa.selectionCellsHandler.getHandler(za.cell),null!=O&&null!=O.setHandlesVisible&&O.setHandlesVisible(!1));R=!0}else for(va=[ba,qa,P,Z,T,U],ra=0;ra<va.length;ra++)null!=va[ra].parentNode&&va[ra].parentNode.removeChild(va[ra]);R||null==O||O.setHandlesVisible(!0);Ga=mxEvent.isAltDown(Ja)&&!mxEvent.isShiftDown(Ja)||null!=Q&&L==fa?null:mxDragSource.prototype.getDropTarget.apply(this,
-arguments);va=aa.getModel();if(null!=Ga&&(null!=L||!aa.isSplitTarget(Ga,d,Ja))){for(;null!=Ga&&!aa.isValidDropTarget(Ga,d,Ja)&&va.isVertex(va.getParent(Ga));)Ga=va.getParent(Ga);null!=Ga&&(aa.view.currentRoot==Ga||!aa.isValidRoot(Ga)&&0==aa.getModel().getChildCount(Ga)||aa.isCellLocked(Ga)||va.isEdge(Ga)||!aa.isValidDropTarget(Ga,d,Ja))&&(Ga=null)}aa.isCellLocked(Ga)&&(Ga=null);return Ga});F.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var aa=[ba,qa,fa,P,Z,T,U],oa=
-0;oa<aa.length;oa++)null!=aa[oa].parentNode&&aa[oa].parentNode.removeChild(aa[oa]);null!=D&&null!=O&&O.reset();L=ha=Q=D=O=null};return F};
+Sidebar.prototype.createDragSource=function(a,b,f,d,g){function e(aa,oa){var sa=mxUtils.createImage(aa.src);sa.style.width=aa.width+"px";sa.style.height=aa.height+"px";null!=oa&&sa.setAttribute("title",oa);mxUtils.setOpacity(sa,aa==this.refreshTarget?30:20);sa.style.position="absolute";sa.style.cursor="crosshair";return sa}function k(aa,oa,sa,Ka){null!=Ka.parentNode&&(mxUtils.contains(sa,aa,oa)?(mxUtils.setOpacity(Ka,100),S=Ka):mxUtils.setOpacity(Ka,Ka==ia?30:20));return sa}for(var n=this.editorUi,
+u=n.editor.graph,m=null,r=null,x=this,B=0;B<d.length&&(null==r&&u.model.isVertex(d[B])?r=B:null==m&&u.model.isEdge(d[B])&&null==u.model.getTerminal(d[B],!0)&&(m=B),null==r||null==m);B++);var C=this.isDropStyleEnabled(d,r),G=mxUtils.makeDraggable(a,u,mxUtils.bind(this,function(aa,oa,sa,Ka,Ha){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=d&&null!=Q&&S==ia){var ua=aa.isCellSelected(Q.cell)?aa.getSelectionCells():[Q.cell];ua=this.updateShapes(aa.model.isEdge(Q.cell)?d[0]:d[r],
+ua);aa.setSelectionCells(ua)}else null!=d&&null!=S&&null!=D&&S!=ia?(ua=aa.model.isEdge(D.cell)||null==m?r:m,aa.setSelectionCells(this.dropAndConnect(D.cell,d,O,ua,oa))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(aa.view.getState(aa.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(aa,oa){G.isActive()&&G.reset()});var J=G.mouseDown;G.mouseDown=function(aa){mxEvent.isPopupTrigger(aa)||mxEvent.isMultiTouchEvent(aa)||u.isCellLocked(u.getDefaultParent())||
+(u.stopEditing(),J.apply(this,arguments))};var D=null,N=null,Q=null,R=!1,P=e(this.triangleUp,mxResources.get("connect")),Z=e(this.triangleRight,mxResources.get("connect")),U=e(this.triangleDown,mxResources.get("connect")),V=e(this.triangleLeft,mxResources.get("connect")),ia=e(this.refreshTarget,mxResources.get("replace")),ha=null,ba=e(this.roundDrop),qa=e(this.roundDrop),O=mxConstants.DIRECTION_NORTH,S=null,F=G.createPreviewElement;G.createPreviewElement=function(aa){var oa=F.apply(this,arguments);
+mxClient.IS_SVG&&(oa.style.pointerEvents="none");this.previewElementWidth=oa.style.width;this.previewElementHeight=oa.style.height;return oa};var L=G.dragEnter;G.dragEnter=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("none");L.apply(this,arguments)};var T=G.dragExit;G.dragExit=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("");T.apply(this,arguments)};G.dragOver=function(aa,oa){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=S&&this.currentGuide.hide();
+if(null!=this.previewElement){var sa=aa.view;if(null!=Q&&S==ia)this.previewElement.style.display=aa.model.isEdge(Q.cell)?"none":"",this.previewElement.style.left=Q.x+"px",this.previewElement.style.top=Q.y+"px",this.previewElement.style.width=Q.width+"px",this.previewElement.style.height=Q.height+"px";else if(null!=D&&null!=S){null!=G.currentHighlight&&null!=G.currentHighlight.state&&G.currentHighlight.hide();var Ka=aa.model.isEdge(D.cell)||null==m?r:m,Ha=x.getDropAndConnectGeometry(D.cell,d[Ka],O,
+d),ua=aa.model.isEdge(D.cell)?null:aa.getCellGeometry(D.cell),Ca=aa.getCellGeometry(d[Ka]),ra=aa.model.getParent(D.cell),Da=sa.translate.x*sa.scale,Ua=sa.translate.y*sa.scale;null!=ua&&!ua.relative&&aa.model.isVertex(ra)&&ra!=sa.currentRoot&&(Ua=sa.getState(ra),Da=Ua.x,Ua=Ua.y);ua=Ca.x;Ca=Ca.y;aa.model.isEdge(d[Ka])&&(Ca=ua=0);this.previewElement.style.left=(Ha.x-ua)*sa.scale+Da+"px";this.previewElement.style.top=(Ha.y-Ca)*sa.scale+Ua+"px";1==d.length&&(this.previewElement.style.width=Ha.width*sa.scale+
+"px",this.previewElement.style.height=Ha.height*sa.scale+"px");this.previewElement.style.display=""}else null!=G.currentHighlight.state&&aa.model.isEdge(G.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-g.width*sa.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-g.height*sa.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,
+this.previewElement.style.display="")}};var ca=(new Date).getTime(),fa=0,wa=null,W=this.editorUi.editor.graph.getCellStyle(d[0]);G.getDropTarget=mxUtils.bind(this,function(aa,oa,sa,Ka){var Ha=mxEvent.isAltDown(Ka)||null==d?null:aa.getCellAt(oa,sa,null,null,null,function(Ua,db,Ta){return aa.isContainer(Ua.cell)});if(null!=Ha&&!this.graph.isCellConnectable(Ha)&&!this.graph.model.isEdge(Ha)){var ua=this.graph.getModel().getParent(Ha);this.graph.getModel().isVertex(ua)&&this.graph.isCellConnectable(ua)&&
+(Ha=ua)}aa.isCellLocked(Ha)&&(Ha=null);var Ca=aa.view.getState(Ha);ua=S=null;wa!=Ca?(ca=(new Date).getTime(),fa=0,wa=Ca,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=Ca&&(this.updateThread=window.setTimeout(function(){null==S&&(wa=Ca,G.getDropTarget(aa,oa,sa,Ka))},this.dropTargetDelay+10))):fa=(new Date).getTime()-ca;if(C&&2500>fa&&null!=Ca&&!mxEvent.isShiftDown(Ka)&&(mxUtils.getValue(Ca.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(W,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(Ca.style,
+mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(Ca.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(Ca.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(W,mxConstants.STYLE_SHAPE)||1500<fa||aa.model.isEdge(Ca.cell))&&fa>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(Ca)&&(aa.model.isVertex(Ca.cell)&&null!=r||aa.model.isEdge(Ca.cell)&&aa.model.isEdge(d[0]))){if(aa.isCellEditable(Ca.cell)){Q=
+Ca;var ra=aa.model.isEdge(Ca.cell)?aa.view.getPoint(Ca):new mxPoint(Ca.getCenterX(),Ca.getCenterY());ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);ia.style.left=Math.floor(ra.x)+"px";ia.style.top=Math.floor(ra.y)+"px";null==ha&&(aa.container.appendChild(ia),ha=ia.parentNode);k(oa,sa,ra,ia)}}else null==Q||!mxUtils.contains(Q,oa,sa)||1500<fa&&!mxEvent.isShiftDown(Ka)?(Q=null,null!=ha&&(ia.parentNode.removeChild(ia),
+ha=null)):null!=Q&&null!=ha&&(ra=aa.model.isEdge(Q.cell)?aa.view.getPoint(Q):new mxPoint(Q.getCenterX(),Q.getCenterY()),ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),k(oa,sa,ra,ia));if(R&&null!=D&&!mxEvent.isAltDown(Ka)&&null==S){ua=mxRectangle.fromRectangle(D);if(aa.model.isEdge(D.cell)){var Da=D.absolutePoints;null!=ba.parentNode&&(ra=Da[0],ua.add(k(oa,sa,new mxRectangle(ra.x-this.roundDrop.width/2,ra.y-this.roundDrop.height/
+2,this.roundDrop.width,this.roundDrop.height),ba)));null!=qa.parentNode&&(Da=Da[Da.length-1],ua.add(k(oa,sa,new mxRectangle(Da.x-this.roundDrop.width/2,Da.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),qa)))}else ra=mxRectangle.fromRectangle(D),null!=D.shape&&null!=D.shape.boundingBox&&(ra=mxRectangle.fromRectangle(D.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Da=this.graph.selectionCellsHandler.getHandler(D.cell),null!=Da&&(ra.x-=
+Da.horizontalOffset/2,ra.y-=Da.verticalOffset/2,ra.width+=Da.horizontalOffset,ra.height+=Da.verticalOffset,null!=Da.rotationShape&&null!=Da.rotationShape.node&&"hidden"!=Da.rotationShape.node.style.visibility&&"none"!=Da.rotationShape.node.style.display&&null!=Da.rotationShape.boundingBox&&ra.add(Da.rotationShape.boundingBox)),ua.add(k(oa,sa,new mxRectangle(D.getCenterX()-this.triangleUp.width/2,ra.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),P)),ua.add(k(oa,sa,new mxRectangle(ra.x+
+ra.width,D.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),Z)),ua.add(k(oa,sa,new mxRectangle(D.getCenterX()-this.triangleDown.width/2,ra.y+ra.height,this.triangleDown.width,this.triangleDown.height),U)),ua.add(k(oa,sa,new mxRectangle(ra.x-this.triangleLeft.width,D.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),V));null!=ua&&ua.grow(10)}O=mxConstants.DIRECTION_NORTH;S==Z?O=mxConstants.DIRECTION_EAST:S==U||S==qa?
+O=mxConstants.DIRECTION_SOUTH:S==V&&(O=mxConstants.DIRECTION_WEST);null!=Q&&S==ia&&(Ca=Q);ra=(null==r||aa.isCellConnectable(d[r]))&&(aa.model.isEdge(Ha)&&null!=r||aa.model.isVertex(Ha)&&aa.isCellConnectable(Ha));if(null!=D&&5E3<=fa||D!=Ca&&(null==ua||!mxUtils.contains(ua,oa,sa)||500<fa&&null==S&&ra))if(R=!1,D=5E3>fa&&fa>this.dropTargetDelay||aa.model.isEdge(Ha)?Ca:null,null!=D&&ra){ua=[ba,qa,P,Z,U,V];for(ra=0;ra<ua.length;ra++)null!=ua[ra].parentNode&&ua[ra].parentNode.removeChild(ua[ra]);aa.model.isEdge(Ha)?
+(Da=Ca.absolutePoints,null!=Da&&(ra=Da[0],Da=Da[Da.length-1],ua=aa.tolerance,new mxRectangle(oa-ua,sa-ua,2*ua,2*ua),ba.style.left=Math.floor(ra.x-this.roundDrop.width/2)+"px",ba.style.top=Math.floor(ra.y-this.roundDrop.height/2)+"px",qa.style.left=Math.floor(Da.x-this.roundDrop.width/2)+"px",qa.style.top=Math.floor(Da.y-this.roundDrop.height/2)+"px",null==aa.model.getTerminal(Ha,!0)&&aa.container.appendChild(ba),null==aa.model.getTerminal(Ha,!1)&&aa.container.appendChild(qa))):(ra=mxRectangle.fromRectangle(Ca),
+null!=Ca.shape&&null!=Ca.shape.boundingBox&&(ra=mxRectangle.fromRectangle(Ca.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Da=this.graph.selectionCellsHandler.getHandler(Ca.cell),null!=Da&&(ra.x-=Da.horizontalOffset/2,ra.y-=Da.verticalOffset/2,ra.width+=Da.horizontalOffset,ra.height+=Da.verticalOffset,null!=Da.rotationShape&&null!=Da.rotationShape.node&&"hidden"!=Da.rotationShape.node.style.visibility&&"none"!=Da.rotationShape.node.style.display&&null!=
+Da.rotationShape.boundingBox&&ra.add(Da.rotationShape.boundingBox)),P.style.left=Math.floor(Ca.getCenterX()-this.triangleUp.width/2)+"px",P.style.top=Math.floor(ra.y-this.triangleUp.height)+"px",Z.style.left=Math.floor(ra.x+ra.width)+"px",Z.style.top=Math.floor(Ca.getCenterY()-this.triangleRight.height/2)+"px",U.style.left=P.style.left,U.style.top=Math.floor(ra.y+ra.height)+"px",V.style.left=Math.floor(ra.x-this.triangleLeft.width)+"px",V.style.top=Z.style.top,"eastwest"!=Ca.style.portConstraint&&
+(aa.container.appendChild(P),aa.container.appendChild(U)),aa.container.appendChild(Z),aa.container.appendChild(V));null!=Ca&&(N=aa.selectionCellsHandler.getHandler(Ca.cell),null!=N&&null!=N.setHandlesVisible&&N.setHandlesVisible(!1));R=!0}else for(ua=[ba,qa,P,Z,U,V],ra=0;ra<ua.length;ra++)null!=ua[ra].parentNode&&ua[ra].parentNode.removeChild(ua[ra]);R||null==N||N.setHandlesVisible(!0);Ha=mxEvent.isAltDown(Ka)&&!mxEvent.isShiftDown(Ka)||null!=Q&&S==ia?null:mxDragSource.prototype.getDropTarget.apply(this,
+arguments);ua=aa.getModel();if(null!=Ha&&(null!=S||!aa.isSplitTarget(Ha,d,Ka))){for(;null!=Ha&&!aa.isValidDropTarget(Ha,d,Ka)&&ua.isVertex(ua.getParent(Ha));)Ha=ua.getParent(Ha);null!=Ha&&(aa.view.currentRoot==Ha||!aa.isValidRoot(Ha)&&0==aa.getModel().getChildCount(Ha)||aa.isCellLocked(Ha)||ua.isEdge(Ha)||!aa.isValidDropTarget(Ha,d,Ka))&&(Ha=null)}aa.isCellLocked(Ha)&&(Ha=null);return Ha});G.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var aa=[ba,qa,ia,P,Z,U,V],oa=
+0;oa<aa.length;oa++)null!=aa[oa].parentNode&&aa[oa].parentNode.removeChild(aa[oa]);null!=D&&null!=N&&N.reset();S=ha=Q=D=N=null};return G};
Sidebar.prototype.itemClicked=function(a,b,f,d){d=this.editorUi.editor.graph;d.container.focus();if(mxEvent.isAltDown(f)&&1==d.getSelectionCount()&&d.model.isVertex(d.getSelectionCell())){b=null;for(var g=0;g<a.length&&null==b;g++)d.model.isVertex(a[g])&&(b=g);null!=b&&(d.setSelectionCells(this.dropAndConnect(d.getSelectionCell(),a,mxEvent.isMetaDown(f)||mxEvent.isControlDown(f)?mxEvent.isShiftDown(f)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(f)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,b,f)),d.scrollCellToVisible(d.getSelectionCell()))}else mxEvent.isShiftDown(f)&&!d.isSelectionEmpty()?(f=d.getEditableCells(d.getSelectionCells()),this.updateShapes(a[0],f),d.scrollCellToVisible(f)):(a=mxEvent.isAltDown(f)?d.getFreeInsertPoint():d.getCenterInsertPoint(d.getBoundingBoxFromGeometry(a,!0)),b.drop(d,f,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,b,f){var d=b.mouseDown,g=b.mouseMove,e=b.mouseUp,k=this.editorUi.editor.graph.tolerance,n=null,u=this;b.mouseDown=function(m){d.apply(this,arguments);n=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(m){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=n&&(Math.abs(n.x-mxEvent.getClientX(m))>k||Math.abs(n.y-mxEvent.getClientY(m))>
@@ -2819,10 +2819,10 @@ Sidebar.prototype.addPalette=function(a,b,f,d){b=this.createTitle(b);this.contai
Sidebar.prototype.addFoldingHandler=function(a,b,f){var d=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==b.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if("none"==b.style.display){if(d)b.style.display="block";else if(d=!0,null!=f){a.style.cursor="wait";var e=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){b.style.display="block";a.style.cursor="";a.innerHTML=e;var k=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;f(b,a);mxClient.NO_FO=k},mxClient.IS_FF?20:0)}else b.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",b.style.display="none";mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(g){g.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){this.palettes[a]=null;for(a=0;a<b.length;a++)this.container.removeChild(b[a]);return!0}return!1};
-Sidebar.prototype.addImagePalette=function(a,b,f,d,g,e,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var A=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=A?A:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+d,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=e?e[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,b,!1,n)};
+Sidebar.prototype.addImagePalette=function(a,b,f,d,g,e,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var B=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=B?B:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+d,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=e?e[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,b,!1,n)};
Sidebar.prototype.getTagsForStencil=function(a,b,f){a=a.split(".");for(var d=1;d<a.length;d++)a[d]=a[d].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=f&&a.push(f);return a.slice(1,a.length)};
-Sidebar.prototype.addStencilPalette=function(a,b,f,d,g,e,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,A,C,F,K){if(null==g||0>mxUtils.indexOf(g,A)){C=this.getTagsForStencil(x,A);var D=null!=n?n[A]:null;null!=D&&C.push(D);r.push(this.createVertexTemplateEntry("shape="+x+A.toLowerCase()+d,Math.round(F*k),Math.round(K*k),"",A.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
-!0,!0);this.addPaletteFunctions(a,b,!1,r)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(x){null==d&&(d="");null!=e&&e.call(this,x);if(null!=u)for(var A=0;A<u.length;A++)u[A](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,F,K,D,O){(null==g||0>mxUtils.indexOf(g,F))&&x.appendChild(this.createVertexTemplate("shape="+C+F.toLowerCase()+d,Math.round(D*k),Math.round(O*k),"",F.replace(/_/g," "),!0))}),!0)}))};
+Sidebar.prototype.addStencilPalette=function(a,b,f,d,g,e,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,B,C,G,J){if(null==g||0>mxUtils.indexOf(g,B)){C=this.getTagsForStencil(x,B);var D=null!=n?n[B]:null;null!=D&&C.push(D);r.push(this.createVertexTemplateEntry("shape="+x+B.toLowerCase()+d,Math.round(G*k),Math.round(J*k),"",B.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
+!0,!0);this.addPaletteFunctions(a,b,!1,r)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(x){null==d&&(d="");null!=e&&e.call(this,x);if(null!=u)for(var B=0;B<u.length;B++)u[B](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,G,J,D,N){(null==g||0>mxUtils.indexOf(g,G))&&x.appendChild(this.createVertexTemplate("shape="+C+G.toLowerCase()+d,Math.round(D*k),Math.round(N*k),"",G.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)};(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(f){for(var d=0;d<a.length;d++)f=f.replace(new RegExp("&"+a[d][0]+";","g"),"&#"+a[d][1]+";");return b(f)}})();
Date.prototype.toISOString||function(){function a(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
@@ -2833,35 +2833,35 @@ mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGr
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
mxImageShape.prototype.getImageDataUri=function(){var a=this.image;if("data:image/svg+xml;base64,"==a.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=a)this.clippedSvg=Graph.clipSvgDataUri(a,!0),this.clippedImage=a;a=this.clippedSvg}return a};
-Graph=function(a,b,f,d,g,e){mxGraph.call(this,a,b,f,d);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=e?e:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
-return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,n=null,u=null,m=null,r=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,L){if("mouseDown"==L.getProperty("eventName")&&this.isEnabled()){I=L.getProperty("event");var H=I.getState();L=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=H)if(this.model.isEdge(H.cell))if(k=new mxPoint(I.getGraphX(),I.getGraphY()),r=this.isCellSelected(H.cell),u=H,n=I,null!=H.text&&null!=
-H.text.boundingBox&&mxUtils.contains(H.text.boundingBox,I.getGraphX(),I.getGraphY()))m=mxEvent.LABEL_HANDLE;else{var S=this.selectionCellsHandler.getHandler(H.cell);null!=S&&null!=S.bends&&0<S.bends.length&&(m=S.getHandleForEvent(I))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(I.getEvent())&&(S=this.selectionCellsHandler.getHandler(H.cell),null==S||null==S.getHandleForEvent(I))){var V=new mxRectangle(I.getGraphX()-1,I.getGraphY()-1),ea=mxEvent.isTouchEvent(I.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2;S=ea+2;V.grow(ea);if(this.isTableCell(H.cell)&&!this.isCellSelected(H.cell)&&!(mxUtils.contains(H,I.getGraphX()-S,I.getGraphY()-S)&&mxUtils.contains(H,I.getGraphX()-S,I.getGraphY()+S)&&mxUtils.contains(H,I.getGraphX()+S,I.getGraphY()+S)&&mxUtils.contains(H,I.getGraphX()+S,I.getGraphY()-S))){var ka=this.model.getParent(H.cell);S=this.model.getParent(ka);if(!this.isCellSelected(S)){ea*=L;var wa=2*ea;if(this.model.getChildAt(S,0)!=ka&&mxUtils.intersects(V,
-new mxRectangle(H.x,H.y-ea,H.width,wa))||this.model.getChildAt(ka,0)!=H.cell&&mxUtils.intersects(V,new mxRectangle(H.x-ea,H.y,wa,H.height))||mxUtils.intersects(V,new mxRectangle(H.x,H.y+H.height-ea,H.width,wa))||mxUtils.intersects(V,new mxRectangle(H.x+H.width-ea,H.y,wa,H.height)))ka=this.selectionCellsHandler.isHandled(S),this.selectCellForEvent(S,I.getEvent()),S=this.selectionCellsHandler.getHandler(S),null!=S&&(ea=S.getHandleForEvent(I),null!=ea&&(S.start(I.getGraphX(),I.getGraphY(),ea),S.blockDelayedSelection=
-!ka,I.consume()))}}for(;!I.isConsumed()&&null!=H&&(this.isTableCell(H.cell)||this.isTableRow(H.cell)||this.isTable(H.cell));)this.isSwimlane(H.cell)&&(S=this.getActualStartSize(H.cell),(0<S.x||0<S.width)&&mxUtils.intersects(V,new mxRectangle(H.x+(S.x-S.width-1)*L+(0==S.x?H.width:0),H.y,1,H.height))||(0<S.y||0<S.height)&&mxUtils.intersects(V,new mxRectangle(H.x,H.y+(S.y-S.height-1)*L+(0==S.y?H.height:0),H.width,1)))&&(this.selectCellForEvent(H.cell,I.getEvent()),S=this.selectionCellsHandler.getHandler(H.cell),
-null!=S&&(ea=mxEvent.CUSTOM_HANDLE-S.customHandles.length+1,S.start(I.getGraphX(),I.getGraphY(),ea),I.consume())),H=this.view.getState(this.model.getParent(H.cell))}}}));this.addMouseListener({mouseDown:function(I,L){},mouseMove:mxUtils.bind(this,function(I,L){I=this.selectionCellsHandler.handlers.map;for(var H in I)if(null!=I[H].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(L.getEvent())){var S=this.tolerance;if(null!=k&&null!=u&&null!=n){if(H=u,Math.abs(k.x-
-L.getGraphX())>S||Math.abs(k.y-L.getGraphY())>S){var V=this.selectionCellsHandler.getHandler(H.cell);null==V&&this.model.isEdge(H.cell)&&(V=this.createHandler(H));if(null!=V&&null!=V.bends&&0<V.bends.length){I=V.getHandleForEvent(n);var ea=this.view.getEdgeStyle(H);S=ea==mxEdgeStyle.EntityRelation;r||m!=mxEvent.LABEL_HANDLE||(I=m);if(S&&0!=I&&I!=V.bends.length-1&&I!=mxEvent.LABEL_HANDLE)!S||null==H.visibleSourceState&&null==H.visibleTargetState||(this.graphHandler.reset(),L.consume());else if(I==
-mxEvent.LABEL_HANDLE||0==I||null!=H.visibleSourceState||I==V.bends.length-1||null!=H.visibleTargetState)S||I==mxEvent.LABEL_HANDLE||(S=H.absolutePoints,null!=S&&(null==ea&&null==I||ea==mxEdgeStyle.OrthConnector)&&(I=m,null==I&&(I=new mxRectangle(k.x,k.y),I.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(I,S[0].x,S[0].y)?I=0:mxUtils.contains(I,S[S.length-1].x,S[S.length-1].y)?I=V.bends.length-1:null!=ea&&(2==S.length||3==S.length&&(0==Math.round(S[0].x-S[1].x)&&0==Math.round(S[1].x-
-S[2].x)||0==Math.round(S[0].y-S[1].y)&&0==Math.round(S[1].y-S[2].y)))?I=2:(I=mxUtils.findNearestSegment(H,k.x,k.y),I=null==ea?mxEvent.VIRTUAL_HANDLE-I:I+1))),null==I&&(I=mxEvent.VIRTUAL_HANDLE)),V.start(L.getGraphX(),L.getGraphX(),I),L.consume(),this.graphHandler.reset()}null!=V&&(this.selectionCellsHandler.isHandlerActive(V)?this.isCellSelected(H.cell)||(this.selectionCellsHandler.handlers.put(H.cell,V),this.selectCellForEvent(H.cell,L.getEvent())):this.isCellSelected(H.cell)||V.destroy());r=!1;
-k=n=u=m=null}}else if(H=L.getState(),null!=H&&this.isCellEditable(H.cell)){V=null;if(this.model.isEdge(H.cell)){if(I=new mxRectangle(L.getGraphX(),L.getGraphY()),I.grow(mxEdgeHandler.prototype.handleImage.width/2),S=H.absolutePoints,null!=S)if(null!=H.text&&null!=H.text.boundingBox&&mxUtils.contains(H.text.boundingBox,L.getGraphX(),L.getGraphY()))V="move";else if(mxUtils.contains(I,S[0].x,S[0].y)||mxUtils.contains(I,S[S.length-1].x,S[S.length-1].y))V="pointer";else if(null!=H.visibleSourceState||
-null!=H.visibleTargetState)I=this.view.getEdgeStyle(H),V="crosshair",I!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(H)&&(L=mxUtils.findNearestSegment(H,L.getGraphX(),L.getGraphY()),L<S.length-1&&0<=L&&(V=0==Math.round(S[L].x-S[L+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(L.getEvent())){S=mxShape.prototype.svgStrokeTolerance/2;I=new mxRectangle(L.getGraphX(),L.getGraphY());I.grow(S);if(this.isTableCell(H.cell)&&(L=this.model.getParent(H.cell),S=this.model.getParent(L),!this.isCellSelected(S)))if(mxUtils.intersects(I,
-new mxRectangle(H.x,H.y-2,H.width,4))&&this.model.getChildAt(S,0)!=L||mxUtils.intersects(I,new mxRectangle(H.x,H.y+H.height-2,H.width,4)))V="row-resize";else if(mxUtils.intersects(I,new mxRectangle(H.x-2,H.y,4,H.height))&&this.model.getChildAt(L,0)!=H.cell||mxUtils.intersects(I,new mxRectangle(H.x+H.width-2,H.y,4,H.height)))V="col-resize";for(L=H;null==V&&null!=L&&(this.isTableCell(L.cell)||this.isTableRow(L.cell)||this.isTable(L.cell));)this.isSwimlane(L.cell)&&(S=this.getActualStartSize(L.cell),
-ea=this.view.scale,(0<S.x||0<S.width)&&mxUtils.intersects(I,new mxRectangle(L.x+(S.x-S.width-1)*ea+(0==S.x?L.width*ea:0),L.y,1,L.height))?V="col-resize":(0<S.y||0<S.height)&&mxUtils.intersects(I,new mxRectangle(L.x,L.y+(S.y-S.height-1)*ea+(0==S.y?L.height:0),L.width,1))&&(V="row-resize")),L=this.view.getState(this.model.getParent(L.cell))}null!=V&&H.setCursor(V)}}}),mouseUp:mxUtils.bind(this,function(I,L){m=k=n=u=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(I){var L=
-mxCellRenderer.prototype.getLabelValue.apply(this,arguments);I.view.graph.isHtmlLabel(I.cell)&&(L=1!=I.style.html?mxUtils.htmlEntities(L,!1):I.view.graph.sanitizeHtml(L));return L};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(I,L){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var x=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var I=x.apply(this,arguments);if(this.graph.pageVisible){var L=[],H=this.graph.pageFormat,S=this.graph.pageScale,V=H.width*S;H=H.height*S;S=this.graph.view.translate;for(var ea=this.graph.view.scale,ka=
-this.graph.getPageLayout(),wa=0;wa<ka.width;wa++)L.push(new mxRectangle(((ka.x+wa)*V+S.x)*ea,(ka.y*H+S.y)*ea,V*ea,H*ea));for(wa=1;wa<ka.height;wa++)L.push(new mxRectangle((ka.x*V+S.x)*ea,((ka.y+wa)*H+S.y)*ea,V*ea,H*ea));I=L.concat(I)}return I};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(I,L){return null==I.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(I){this.previewColor="#000000"==this.graph.background?
-"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var A=this.graphHandler.getCells;this.graphHandler.getCells=function(I){for(var L=A.apply(this,arguments),H=new mxDictionary,S=[],V=0;V<L.length;V++){var ea=this.graph.isTableCell(I)&&this.graph.isTableCell(L[V])&&this.graph.isCellSelected(L[V])?this.graph.model.getParent(L[V]):this.graph.isTableRow(I)&&this.graph.isTableRow(L[V])&&this.graph.isCellSelected(L[V])?L[V]:this.graph.getCompositeParent(L[V]);
-null==ea||H.get(ea)||(H.put(ea,!0),S.push(ea))}return S};var C=this.graphHandler.start;this.graphHandler.start=function(I,L,H,S){var V=!1;this.graph.isTableCell(I)&&(this.graph.isCellSelected(I)?V=!0:I=this.graph.model.getParent(I));V||this.graph.isTableRow(I)&&this.graph.isCellSelected(I)||(I=this.graph.getCompositeParent(I));C.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(I,L){L=this.graph.getCompositeParent(L);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
-arguments)};var F=new mxRubberband(this);this.getRubberband=function(){return F};var K=(new Date).getTime(),D=0,O=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var I=this.currentState;O.apply(this,arguments);I!=this.currentState?(K=(new Date).getTime(),D=0):D=(new Date).getTime()-K};var Q=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(I){return mxEvent.isShiftDown(I.getEvent())&&mxEvent.isAltDown(I.getEvent())?!1:null!=
-this.currentState&&I.getState()==this.currentState&&2E3<D||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&Q.apply(this,arguments)};var R=this.isToggleEvent;this.isToggleEvent=function(I){return R.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(I)};var P=F.isForceRubberbandEvent;F.isForceRubberbandEvent=function(I){return P.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(I.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&
-mxClient.IS_FF&&mxClient.IS_WIN&&null==I.getState()&&mxEvent.isTouchEvent(I.getEvent())};var Z=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(Z=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=Z)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(I){return mxEvent.isMouseEvent(I.getEvent())};
-var T=this.click;this.click=function(I){var L=null==I.state&&null!=I.sourceState&&this.isCellLocked(I.sourceState.cell);if(this.isEnabled()&&!L||I.isConsumed())return T.apply(this,arguments);var H=L?I.sourceState.cell:I.getCell();null!=H&&(H=this.getClickableLinkForCell(H),null!=H&&(this.isCustomLink(H)?this.customLinkClicked(H):this.openLink(H)));this.isEnabled()&&L&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(I){return I.sourceState};var U=this.tooltipHandler.show;this.tooltipHandler.show=
-function(){U.apply(this,arguments);if(null!=this.div)for(var I=this.div.getElementsByTagName("a"),L=0;L<I.length;L++)null!=I[L].getAttribute("href")&&null==I[L].getAttribute("target")&&I[L].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(I){return I.sourceState};this.getCursorForMouseEvent=function(I){var L=null==I.state&&null!=I.sourceState&&this.isCellLocked(I.sourceState.cell);return this.getCursorForCell(L?I.sourceState.cell:I.getCell())};var fa=this.getCursorForCell;
-this.getCursorForCell=function(I){if(!this.isEnabled()||this.isCellLocked(I)){if(null!=this.getClickableLinkForCell(I))return"pointer";if(this.isCellLocked(I))return"default"}return fa.apply(this,arguments)};this.selectRegion=function(I,L){var H=mxEvent.isAltDown(L)?I:null;I=this.getCells(I.x,I.y,I.width,I.height,null,null,H,function(S){return"1"==mxUtils.getValue(S.style,"locked","0")},!0);if(this.isToggleEvent(L))for(H=0;H<I.length;H++)this.selectCellForEvent(I[H],L);else this.selectCellsForEvent(I,
-L);return I};var ha=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(I,L,H){return this.graph.isCellSelected(I)?!1:ha.apply(this,arguments)};this.isCellLocked=function(I){for(;null!=I;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(I),"locked","0"))return!0;I=this.model.getParent(I)}return!1};var ba=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,L){"mouseDown"==L.getProperty("eventName")&&(I=L.getProperty("event").getState(),
-ba=null==I||this.isSelectionEmpty()||this.isCellSelected(I.cell)?null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(I,L){if(!mxEvent.isMultiTouchEvent(L)){I=L.getProperty("event");var H=L.getProperty("cell");null==H?(I=mxUtils.convertPoint(this.container,mxEvent.getClientX(I),mxEvent.getClientY(I)),F.start(I.x,I.y)):null!=ba?this.addSelectionCells(ba):1<this.getSelectionCount()&&this.isCellSelected(H)&&this.removeSelectionCell(H);ba=null;L.consume()}}));
-this.connectionHandler.selectCells=function(I,L){this.graph.setSelectionCell(L||I)};this.connectionHandler.constraintHandler.isStateIgnored=function(I,L){var H=I.view.graph;return L&&(H.isCellSelected(I.cell)||H.isTableRow(I.cell)&&H.selectionCellsHandler.isHandled(H.model.getParent(I.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var I=this.connectionHandler.constraintHandler;null!=I.currentFocus&&I.isStateIgnored(I.currentFocus,!0)&&(I.currentFocus=null,I.constraints=
-null,I.destroyIcons());I.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var qa=this.updateMouseEvent;this.updateMouseEvent=function(I){I=qa.apply(this,arguments);null!=I.state&&this.isCellLocked(I.getCell())&&(I.state=null);return I}}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=function(a,b,f,d,g,e){mxGraph.call(this,a,b,f,d);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=e?e:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(O){O=this.getCurrentCellStyle(O);
+return null!=O?"1"==O.html||"wrap"==O[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,n=null,u=null,m=null,r=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(O,S){if("mouseDown"==S.getProperty("eventName")&&this.isEnabled()){O=S.getProperty("event");var F=O.getState();S=this.view.scale;if(!mxEvent.isAltDown(O.getEvent())&&null!=F)if(this.model.isEdge(F.cell))if(k=new mxPoint(O.getGraphX(),O.getGraphY()),r=this.isCellSelected(F.cell),u=F,n=O,null!=F.text&&null!=
+F.text.boundingBox&&mxUtils.contains(F.text.boundingBox,O.getGraphX(),O.getGraphY()))m=mxEvent.LABEL_HANDLE;else{var L=this.selectionCellsHandler.getHandler(F.cell);null!=L&&null!=L.bends&&0<L.bends.length&&(m=L.getHandleForEvent(O))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(O.getEvent())&&(L=this.selectionCellsHandler.getHandler(F.cell),null==L||null==L.getHandleForEvent(O))){var T=new mxRectangle(O.getGraphX()-1,O.getGraphY()-1),ca=mxEvent.isTouchEvent(O.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+2)/2;L=ca+2;T.grow(ca);if(this.isTableCell(F.cell)&&!this.isCellSelected(F.cell)&&!(mxUtils.contains(F,O.getGraphX()-L,O.getGraphY()-L)&&mxUtils.contains(F,O.getGraphX()-L,O.getGraphY()+L)&&mxUtils.contains(F,O.getGraphX()+L,O.getGraphY()+L)&&mxUtils.contains(F,O.getGraphX()+L,O.getGraphY()-L))){var fa=this.model.getParent(F.cell);L=this.model.getParent(fa);if(!this.isCellSelected(L)){ca*=S;var wa=2*ca;if(this.model.getChildAt(L,0)!=fa&&mxUtils.intersects(T,
+new mxRectangle(F.x,F.y-ca,F.width,wa))||this.model.getChildAt(fa,0)!=F.cell&&mxUtils.intersects(T,new mxRectangle(F.x-ca,F.y,wa,F.height))||mxUtils.intersects(T,new mxRectangle(F.x,F.y+F.height-ca,F.width,wa))||mxUtils.intersects(T,new mxRectangle(F.x+F.width-ca,F.y,wa,F.height)))fa=this.selectionCellsHandler.isHandled(L),this.selectCellForEvent(L,O.getEvent()),L=this.selectionCellsHandler.getHandler(L),null!=L&&(ca=L.getHandleForEvent(O),null!=ca&&(L.start(O.getGraphX(),O.getGraphY(),ca),L.blockDelayedSelection=
+!fa,O.consume()))}}for(;!O.isConsumed()&&null!=F&&(this.isTableCell(F.cell)||this.isTableRow(F.cell)||this.isTable(F.cell));)this.isSwimlane(F.cell)&&(L=this.getActualStartSize(F.cell),(0<L.x||0<L.width)&&mxUtils.intersects(T,new mxRectangle(F.x+(L.x-L.width-1)*S+(0==L.x?F.width:0),F.y,1,F.height))||(0<L.y||0<L.height)&&mxUtils.intersects(T,new mxRectangle(F.x,F.y+(L.y-L.height-1)*S+(0==L.y?F.height:0),F.width,1)))&&(this.selectCellForEvent(F.cell,O.getEvent()),L=this.selectionCellsHandler.getHandler(F.cell),
+null!=L&&(ca=mxEvent.CUSTOM_HANDLE-L.customHandles.length+1,L.start(O.getGraphX(),O.getGraphY(),ca),O.consume())),F=this.view.getState(this.model.getParent(F.cell))}}}));this.addMouseListener({mouseDown:function(O,S){},mouseMove:mxUtils.bind(this,function(O,S){O=this.selectionCellsHandler.handlers.map;for(var F in O)if(null!=O[F].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(S.getEvent())){var L=this.tolerance;if(null!=k&&null!=u&&null!=n){if(F=u,Math.abs(k.x-
+S.getGraphX())>L||Math.abs(k.y-S.getGraphY())>L){var T=this.selectionCellsHandler.getHandler(F.cell);null==T&&this.model.isEdge(F.cell)&&(T=this.createHandler(F));if(null!=T&&null!=T.bends&&0<T.bends.length){O=T.getHandleForEvent(n);var ca=this.view.getEdgeStyle(F);L=ca==mxEdgeStyle.EntityRelation;r||m!=mxEvent.LABEL_HANDLE||(O=m);if(L&&0!=O&&O!=T.bends.length-1&&O!=mxEvent.LABEL_HANDLE)!L||null==F.visibleSourceState&&null==F.visibleTargetState||(this.graphHandler.reset(),S.consume());else if(O==
+mxEvent.LABEL_HANDLE||0==O||null!=F.visibleSourceState||O==T.bends.length-1||null!=F.visibleTargetState)L||O==mxEvent.LABEL_HANDLE||(L=F.absolutePoints,null!=L&&(null==ca&&null==O||ca==mxEdgeStyle.OrthConnector)&&(O=m,null==O&&(O=new mxRectangle(k.x,k.y),O.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(O,L[0].x,L[0].y)?O=0:mxUtils.contains(O,L[L.length-1].x,L[L.length-1].y)?O=T.bends.length-1:null!=ca&&(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)))?O=2:(O=mxUtils.findNearestSegment(F,k.x,k.y),O=null==ca?mxEvent.VIRTUAL_HANDLE-O:O+1))),null==O&&(O=mxEvent.VIRTUAL_HANDLE)),T.start(S.getGraphX(),S.getGraphX(),O),S.consume(),this.graphHandler.reset()}null!=T&&(this.selectionCellsHandler.isHandlerActive(T)?this.isCellSelected(F.cell)||(this.selectionCellsHandler.handlers.put(F.cell,T),this.selectCellForEvent(F.cell,S.getEvent())):this.isCellSelected(F.cell)||T.destroy());r=!1;
+k=n=u=m=null}}else if(F=S.getState(),null!=F&&this.isCellEditable(F.cell)){T=null;if(this.model.isEdge(F.cell)){if(O=new mxRectangle(S.getGraphX(),S.getGraphY()),O.grow(mxEdgeHandler.prototype.handleImage.width/2),L=F.absolutePoints,null!=L)if(null!=F.text&&null!=F.text.boundingBox&&mxUtils.contains(F.text.boundingBox,S.getGraphX(),S.getGraphY()))T="move";else if(mxUtils.contains(O,L[0].x,L[0].y)||mxUtils.contains(O,L[L.length-1].x,L[L.length-1].y))T="pointer";else if(null!=F.visibleSourceState||
+null!=F.visibleTargetState)O=this.view.getEdgeStyle(F),T="crosshair",O!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(F)&&(S=mxUtils.findNearestSegment(F,S.getGraphX(),S.getGraphY()),S<L.length-1&&0<=S&&(T=0==Math.round(L[S].x-L[S+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(S.getEvent())){L=mxShape.prototype.svgStrokeTolerance/2;O=new mxRectangle(S.getGraphX(),S.getGraphY());O.grow(L);if(this.isTableCell(F.cell)&&(S=this.model.getParent(F.cell),L=this.model.getParent(S),!this.isCellSelected(L)))if(mxUtils.intersects(O,
+new mxRectangle(F.x,F.y-2,F.width,4))&&this.model.getChildAt(L,0)!=S||mxUtils.intersects(O,new mxRectangle(F.x,F.y+F.height-2,F.width,4)))T="row-resize";else if(mxUtils.intersects(O,new mxRectangle(F.x-2,F.y,4,F.height))&&this.model.getChildAt(S,0)!=F.cell||mxUtils.intersects(O,new mxRectangle(F.x+F.width-2,F.y,4,F.height)))T="col-resize";for(S=F;null==T&&null!=S&&(this.isTableCell(S.cell)||this.isTableRow(S.cell)||this.isTable(S.cell));)this.isSwimlane(S.cell)&&(L=this.getActualStartSize(S.cell),
+ca=this.view.scale,(0<L.x||0<L.width)&&mxUtils.intersects(O,new mxRectangle(S.x+(L.x-L.width-1)*ca+(0==L.x?S.width*ca:0),S.y,1,S.height))?T="col-resize":(0<L.y||0<L.height)&&mxUtils.intersects(O,new mxRectangle(S.x,S.y+(L.y-L.height-1)*ca+(0==L.y?S.height:0),S.width,1))&&(T="row-resize")),S=this.view.getState(this.model.getParent(S.cell))}null!=T&&F.setCursor(T)}}}),mouseUp:mxUtils.bind(this,function(O,S){m=k=n=u=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(O){var S=
+mxCellRenderer.prototype.getLabelValue.apply(this,arguments);O.view.graph.isHtmlLabel(O.cell)&&(S=1!=O.style.html?mxUtils.htmlEntities(S,!1):O.view.graph.sanitizeHtml(S));return S};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(O,S){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var x=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var O=x.apply(this,arguments);if(this.graph.pageVisible){var S=[],F=this.graph.pageFormat,L=this.graph.pageScale,T=F.width*L;F=F.height*L;L=this.graph.view.translate;for(var ca=this.graph.view.scale,fa=
+this.graph.getPageLayout(),wa=0;wa<fa.width;wa++)S.push(new mxRectangle(((fa.x+wa)*T+L.x)*ca,(fa.y*F+L.y)*ca,T*ca,F*ca));for(wa=1;wa<fa.height;wa++)S.push(new mxRectangle((fa.x*T+L.x)*ca,((fa.y+wa)*F+L.y)*ca,T*ca,F*ca));O=S.concat(O)}return O};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(O,S){return null==O.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(O){this.previewColor="#000000"==this.graph.background?
+"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var B=this.graphHandler.getCells;this.graphHandler.getCells=function(O){for(var S=B.apply(this,arguments),F=new mxDictionary,L=[],T=0;T<S.length;T++){var ca=this.graph.isTableCell(O)&&this.graph.isTableCell(S[T])&&this.graph.isCellSelected(S[T])?this.graph.model.getParent(S[T]):this.graph.isTableRow(O)&&this.graph.isTableRow(S[T])&&this.graph.isCellSelected(S[T])?S[T]:this.graph.getCompositeParent(S[T]);
+null==ca||F.get(ca)||(F.put(ca,!0),L.push(ca))}return L};var C=this.graphHandler.start;this.graphHandler.start=function(O,S,F,L){var T=!1;this.graph.isTableCell(O)&&(this.graph.isCellSelected(O)?T=!0:O=this.graph.model.getParent(O));T||this.graph.isTableRow(O)&&this.graph.isCellSelected(O)||(O=this.graph.getCompositeParent(O));C.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(O,S){S=this.graph.getCompositeParent(S);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
+arguments)};var G=new mxRubberband(this);this.getRubberband=function(){return G};var J=(new Date).getTime(),D=0,N=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var O=this.currentState;N.apply(this,arguments);O!=this.currentState?(J=(new Date).getTime(),D=0):D=(new Date).getTime()-J};var Q=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(O){return mxEvent.isShiftDown(O.getEvent())&&mxEvent.isAltDown(O.getEvent())?!1:null!=
+this.currentState&&O.getState()==this.currentState&&2E3<D||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&Q.apply(this,arguments)};var R=this.isToggleEvent;this.isToggleEvent=function(O){return R.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(O)};var P=G.isForceRubberbandEvent;G.isForceRubberbandEvent=function(O){return P.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(O.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&
+mxClient.IS_FF&&mxClient.IS_WIN&&null==O.getState()&&mxEvent.isTouchEvent(O.getEvent())};var Z=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(Z=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=Z)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(O){return mxEvent.isMouseEvent(O.getEvent())};
+var U=this.click;this.click=function(O){var S=null==O.state&&null!=O.sourceState&&this.isCellLocked(O.sourceState.cell);if(this.isEnabled()&&!S||O.isConsumed())return U.apply(this,arguments);var F=S?O.sourceState.cell:O.getCell();null!=F&&(F=this.getClickableLinkForCell(F),null!=F&&(this.isCustomLink(F)?this.customLinkClicked(F):this.openLink(F)));this.isEnabled()&&S&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(O){return O.sourceState};var V=this.tooltipHandler.show;this.tooltipHandler.show=
+function(){V.apply(this,arguments);if(null!=this.div)for(var O=this.div.getElementsByTagName("a"),S=0;S<O.length;S++)null!=O[S].getAttribute("href")&&null==O[S].getAttribute("target")&&O[S].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(O){return O.sourceState};this.getCursorForMouseEvent=function(O){var S=null==O.state&&null!=O.sourceState&&this.isCellLocked(O.sourceState.cell);return this.getCursorForCell(S?O.sourceState.cell:O.getCell())};var ia=this.getCursorForCell;
+this.getCursorForCell=function(O){if(!this.isEnabled()||this.isCellLocked(O)){if(null!=this.getClickableLinkForCell(O))return"pointer";if(this.isCellLocked(O))return"default"}return ia.apply(this,arguments)};this.selectRegion=function(O,S){var F=mxEvent.isAltDown(S)?O:null;O=this.getCells(O.x,O.y,O.width,O.height,null,null,F,function(L){return"1"==mxUtils.getValue(L.style,"locked","0")},!0);if(this.isToggleEvent(S))for(F=0;F<O.length;F++)this.selectCellForEvent(O[F],S);else this.selectCellsForEvent(O,
+S);return O};var ha=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(O,S,F){return this.graph.isCellSelected(O)?!1:ha.apply(this,arguments)};this.isCellLocked=function(O){for(;null!=O;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(O),"locked","0"))return!0;O=this.model.getParent(O)}return!1};var ba=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(O,S){"mouseDown"==S.getProperty("eventName")&&(O=S.getProperty("event").getState(),
+ba=null==O||this.isSelectionEmpty()||this.isCellSelected(O.cell)?null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(O,S){if(!mxEvent.isMultiTouchEvent(S)){O=S.getProperty("event");var F=S.getProperty("cell");null==F?(O=mxUtils.convertPoint(this.container,mxEvent.getClientX(O),mxEvent.getClientY(O)),G.start(O.x,O.y)):null!=ba?this.addSelectionCells(ba):1<this.getSelectionCount()&&this.isCellSelected(F)&&this.removeSelectionCell(F);ba=null;S.consume()}}));
+this.connectionHandler.selectCells=function(O,S){this.graph.setSelectionCell(S||O)};this.connectionHandler.constraintHandler.isStateIgnored=function(O,S){var F=O.view.graph;return S&&(F.isCellSelected(O.cell)||F.isTableRow(O.cell)&&F.selectionCellsHandler.isHandled(F.model.getParent(O.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var O=this.connectionHandler.constraintHandler;null!=O.currentFocus&&O.isStateIgnored(O.currentFocus,!0)&&(O.currentFocus=null,O.constraints=
+null,O.destroyIcons());O.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var qa=this.updateMouseEvent;this.updateMouseEvent=function(O){O=qa.apply(this,arguments);null!=O.state&&this.isCellLocked(O.getCell())&&(O.state=null);return O}}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">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
@@ -2896,8 +2896,8 @@ mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE,null);return"label"==k||"image"
n,0==u)}return n};Graph.prototype.mergeStyle=function(k,n,u){if(null!=k){var m={},r;for(r in k){var x=k[r];null!=x&&(m[r]=!0,null==n[r]&&u?n[r]=x:n[r]!=x&&delete n[r])}for(r in n)m[r]||delete n[r]}};Graph.prototype.getStartEditingCell=function(k,n){n=this.getCellStyle(k);n=parseInt(mxUtils.getValue(n,mxConstants.STYLE_STARTSIZE,0));this.isTable(k)&&(!this.isSwimlane(k)||0==n)&&""==this.getLabel(k)&&0<this.model.getChildCount(k)&&(k=this.model.getChildAt(k,0),n=this.getCellStyle(k),n=parseInt(mxUtils.getValue(n,
mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(k)&&(!this.isSwimlane(k)||0==n)&&""==this.getLabel(k)&&0<this.model.getChildCount(k))for(n=0;n<this.model.getChildCount(k);n++){var u=this.model.getChildAt(k,n);if(this.isCellEditable(u)){k=u;break}}return k};Graph.prototype.copyStyle=function(k){return this.getCellStyle(k,!1)};Graph.prototype.pasteStyle=function(k,n,u){u=null!=u?u:Graph.pasteStyles;Graph.removeKeys(k,function(m){return 0>mxUtils.indexOf(u,m)});this.updateCellStyles(k,n)};Graph.prototype.updateCellStyles=
function(k,n){this.model.beginUpdate();try{for(var u=0;u<n.length;u++)if(this.model.isVertex(n[u])||this.model.isEdge(n[u])){var m=this.getCellStyle(n[u],!1),r;for(r in k){var x=k[r];m[r]!=x&&this.setCellStyles(r,x,[n[u]])}}}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(k,n,u,m,r,x){this.useCssTransforms&&(k=k/this.currentScale-this.currentTranslate.x,n=n/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(k,n,u,m,r,x){m=null!=m?m:!0;r=null!=r?r:!0;null==u&&(u=this.getCurrentRoot(),null==u&&(u=this.getModel().getRoot()));if(null!=u)for(var A=this.model.getChildCount(u)-1;0<=
-A;A--){var C=this.model.getChildAt(u,A),F=this.getScaledCellAt(k,n,C,m,r,x);if(null!=F)return F;if(this.isCellVisible(C)&&(r&&this.model.isEdge(C)||m&&this.model.isVertex(C))&&(F=this.view.getState(C),null!=F&&(null==x||!x(F,k,n))&&this.intersects(F,k,n)))return C}return null};Graph.prototype.isRecursiveVertexResize=function(k){return!this.isSwimlane(k.cell)&&0<this.model.getChildCount(k.cell)&&!this.isCellCollapsed(k.cell)&&"1"==mxUtils.getValue(k.style,"recursiveResize","1")&&null==mxUtils.getValue(k.style,
+mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(k,n,u,m,r,x){this.useCssTransforms&&(k=k/this.currentScale-this.currentTranslate.x,n=n/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(k,n,u,m,r,x){m=null!=m?m:!0;r=null!=r?r:!0;null==u&&(u=this.getCurrentRoot(),null==u&&(u=this.getModel().getRoot()));if(null!=u)for(var B=this.model.getChildCount(u)-1;0<=
+B;B--){var C=this.model.getChildAt(u,B),G=this.getScaledCellAt(k,n,C,m,r,x);if(null!=G)return G;if(this.isCellVisible(C)&&(r&&this.model.isEdge(C)||m&&this.model.isVertex(C))&&(G=this.view.getState(C),null!=G&&(null==x||!x(G,k,n))&&this.intersects(G,k,n)))return C}return null};Graph.prototype.isRecursiveVertexResize=function(k){return!this.isSwimlane(k.cell)&&0<this.model.getChildCount(k.cell)&&!this.isCellCollapsed(k.cell)&&"1"==mxUtils.getValue(k.style,"recursiveResize","1")&&null==mxUtils.getValue(k.style,
"childLayout",null)};Graph.prototype.getAbsoluteParent=function(k){for(var n=this.getCellGeometry(k);null!=n&&n.relative;)k=this.getModel().getParent(k),n=this.getCellGeometry(k);return k};Graph.prototype.isPart=function(k){return"1"==mxUtils.getValue(this.getCurrentCellStyle(k),"part","0")||this.isTableCell(k)||this.isTableRow(k)};Graph.prototype.getCompositeParents=function(k){for(var n=new mxDictionary,u=[],m=0;m<k.length;m++){var r=this.getCompositeParent(k[m]);this.isTableCell(r)&&(r=this.graph.model.getParent(r));
this.isTableRow(r)&&(r=this.graph.model.getParent(r));null==r||n.get(r)||(n.put(r,!0),u.push(r))}return u};Graph.prototype.getCompositeParent=function(k){for(;this.isPart(k);){var n=this.model.getParent(k);if(!this.model.isVertex(n))break;k=n}return k};Graph.prototype.filterSelectionCells=function(k){var n=this.getSelectionCells();if(null!=k){for(var u=[],m=0;m<n.length;m++)k(n[m])||u.push(n[m]);n=u}return n};var a=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(k){if(this.useCssTransforms){var n=
this.currentScale,u=this.currentTranslate;k=new mxRectangle((k.x+2*u.x)*n-u.x,(k.y+2*u.y)*n-u.y,k.width*n,k.height*n)}a.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(k){k=this.strokeWidth;this.graph.useCssTransforms&&(k/=this.graph.currentScale);return k};mxGraphView.prototype.getGraphBounds=function(){var k=this.graphBounds;if(this.graph.useCssTransforms){var n=this.graph.currentTranslate,u=this.graph.currentScale;k=new mxRectangle((k.x+n.x)*u,(k.y+n.y)*u,k.width*u,k.height*
@@ -2932,10 +2932,10 @@ Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var b=this.getLinkForCell(a);if(null!=b)return b;a=this.model.getParent(a)}while(null!=a);return null};
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,f){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,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,k=function(O,Q){O=String(O);for(Q=Q||2;O.length<Q;)O="0"+O;return O};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),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),A=a[n+"Hours"](),C=a[n+"Minutes"](),F=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var K=f?0:a.getTimezoneOffset(),D={d:u,dd:k(u),ddd:d.i18n.dayNames[m],dddd:d.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:d.i18n.monthNames[r],mmmm:d.i18n.monthNames[r+
-12],yy:String(x).slice(2),yyyy:x,h:A%12||12,hh:k(A%12||12),H:A,HH:k(A),M:C,MM:k(C),s:F,ss:k(F),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>A?"a":"p",tt:12>A?"am":"pm",T:12>A?"A":"P",TT:12>A?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(e,""),o:(0<K?"-":"+")+k(100*Math.floor(Math.abs(K)/60)+Math.abs(K)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(O){return O in D?D[O]:O.slice(1,
-O.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 f=1;f<a.length;f++)if(!this.model.isAncestor(b,a[f])){b=null;break}}return b};
+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,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,k=function(N,Q){N=String(N);for(Q=Q||2;N.length<Q;)N="0"+N;return N};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),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),B=a[n+"Hours"](),C=a[n+"Minutes"](),G=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var J=f?0:a.getTimezoneOffset(),D={d:u,dd:k(u),ddd:d.i18n.dayNames[m],dddd:d.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:d.i18n.monthNames[r],mmmm:d.i18n.monthNames[r+
+12],yy:String(x).slice(2),yyyy:x,h:B%12||12,hh:k(B%12||12),H:B,HH:k(B),M:C,MM:k(C),s:G,ss:k(G),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>B?"a":"p",tt:12>B?"am":"pm",T:12>B?"A":"P",TT:12>B?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(e,""),o:(0<J?"-":"+")+k(100*Math.floor(Math.abs(J)/60)+Math.abs(J)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(N){return N in D?D[N]:N.slice(1,
+N.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 f=1;f<a.length;f++)if(!this.model.isAncestor(b,a[f])){b=null;break}}return b};
Graph.prototype.createLayersDialog=function(a,b){var f=document.createElement("div");f.style.position="absolute";for(var d=this.getModel(),g=d.getChildCount(d.root),e=0;e<g;e++)mxUtils.bind(this,function(k){function n(){d.isVisible(k)?(r.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(m,75)):(r.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(m,25))}var u=this.convertValueToString(k)||mxResources.get("background")||"Background",m=document.createElement("div");m.style.overflow=
"hidden";m.style.textOverflow="ellipsis";m.style.padding="2px";m.style.whiteSpace="nowrap";m.style.cursor="pointer";m.setAttribute("title",mxResources.get(d.isVisible(k)?"hideIt":"show",[u]));var r=document.createElement("img");r.setAttribute("draggable","false");r.setAttribute("align","absmiddle");r.setAttribute("border","0");r.style.position="relative";r.style.width="16px";r.style.padding="0px 6px 0 4px";b&&(r.style.filter="invert(100%)",r.style.top="-2px");m.appendChild(r);mxUtils.write(m,u);f.appendChild(m);
mxEvent.addListener(m,"click",function(){d.setVisible(k,!d.isVisible(k));n();null!=a&&a(k)});n()})(d.getChildAt(d.root,e));return f};
@@ -2948,12 +2948,12 @@ Graph.prototype.snapCellsToGrid=function(a,b){this.getModel().beginUpdate();try{
g)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.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,f,d,g,e,k,n){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 u=this.isCloneConnectSource(a),m=u?a:this.getCompositeParent(a),r=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(m.geometry.x,m.geometry.y);b==mxConstants.DIRECTION_NORTH?(r.x+=m.geometry.width/2,r.y-=f):b==
-mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=b==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var A=this.view.translate;m=A.x*f;A=A.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,A=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);e=e?null:(new mxRectangle(m+r.x*f,A+r.y*f)).grow(40*f);e=null!=e?
-this.getCells(0,0,0,0,null,null,e,null,!0):null;x=this.view.getState(a);var C=null,F=null;if(null!=e){e=e.reverse();for(var K=0;K<e.length;K++)if(!this.isCellLocked(e[K])&&!this.model.isEdge(e[K])&&e[K]!=a)if(!this.model.isAncestor(a,e[K])&&this.isContainer(e[K])&&(null==C||e[K]==this.model.getParent(a)))C=e[K];else if(null==F&&this.isCellConnectable(e[K])&&!this.model.isAncestor(e[K],a)&&!this.isSwimlane(e[K])){var D=this.view.getState(e[K]);null==x||null==D||mxUtils.intersects(x,D)||(F=e[K])}}var O=
-!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||g;O&&("1"!=urlParams.sketch||g)&&(b==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var Q=[],R=F;F=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==F&&u){this.model.beginUpdate();try{if(null==R&&O){var Z=this.getAbsoluteParent(null!=P?P:a);Z=u?a:this.getCompositeParent(Z);R=null!=P?P:this.duplicateCells([Z],
-!1)[0];null!=P&&this.addCells([R],this.model.getParent(a),null,null,null,!0);var T=this.getCellGeometry(R);null!=T&&(null!=P&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?r.y-=T.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=T.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-T.width/2:r.x+T.width/2),T.x=r.x-T.width/2,T.y=r.y-T.height/2);null!=C?(this.addCells([R],C,null,null,null,!0),F=null):O&&!u&&this.addCells([R],this.getDefaultParent(),null,null,null,!0)}var U=mxEvent.isControlDown(d)&&
-mxEvent.isShiftDown(d)&&O||null==F&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,R,this.createCurrentEdgeStyle());if(null!=U&&this.connectionHandler.insertBeforeSource){var fa=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=U.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==U.parent&&(fa=P.parent.getIndex(P),this.model.add(P.parent,U,fa))}null==F&&null!=R&&null!=a.parent&&u&&b==mxConstants.DIRECTION_WEST&&(fa=a.parent.getIndex(a),this.model.add(a.parent,
-R,fa));null!=U&&Q.push(U);null==F&&null!=R&&Q.push(R);null==R&&null!=U&&U.geometry.setTerminalPoint(r,!1);null!=U&&this.fireEvent(new mxEventObject("cellsInserted","cells",[U]))}finally{this.model.endUpdate()}}if(null!=n)n(Q);else return Q});if(null==k||null!=R||!O||null==F&&u)return g(R);k(m+r.x*f,A+r.y*f,g)};
+mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=b==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var B=this.view.translate;m=B.x*f;B=B.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,B=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);e=e?null:(new mxRectangle(m+r.x*f,B+r.y*f)).grow(40*f);e=null!=e?
+this.getCells(0,0,0,0,null,null,e,null,!0):null;x=this.view.getState(a);var C=null,G=null;if(null!=e){e=e.reverse();for(var J=0;J<e.length;J++)if(!this.isCellLocked(e[J])&&!this.model.isEdge(e[J])&&e[J]!=a)if(!this.model.isAncestor(a,e[J])&&this.isContainer(e[J])&&(null==C||e[J]==this.model.getParent(a)))C=e[J];else if(null==G&&this.isCellConnectable(e[J])&&!this.model.isAncestor(e[J],a)&&!this.isSwimlane(e[J])){var D=this.view.getState(e[J]);null==x||null==D||mxUtils.intersects(x,D)||(G=e[J])}}var N=
+!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||g;N&&("1"!=urlParams.sketch||g)&&(b==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var Q=[],R=G;G=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==G&&u){this.model.beginUpdate();try{if(null==R&&N){var Z=this.getAbsoluteParent(null!=P?P:a);Z=u?a:this.getCompositeParent(Z);R=null!=P?P:this.duplicateCells([Z],
+!1)[0];null!=P&&this.addCells([R],this.model.getParent(a),null,null,null,!0);var U=this.getCellGeometry(R);null!=U&&(null!=P&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?r.y-=U.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=U.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-U.width/2:r.x+U.width/2),U.x=r.x-U.width/2,U.y=r.y-U.height/2);null!=C?(this.addCells([R],C,null,null,null,!0),G=null):N&&!u&&this.addCells([R],this.getDefaultParent(),null,null,null,!0)}var V=mxEvent.isControlDown(d)&&
+mxEvent.isShiftDown(d)&&N||null==G&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,R,this.createCurrentEdgeStyle());if(null!=V&&this.connectionHandler.insertBeforeSource){var ia=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=V.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==V.parent&&(ia=P.parent.getIndex(P),this.model.add(P.parent,V,ia))}null==G&&null!=R&&null!=a.parent&&u&&b==mxConstants.DIRECTION_WEST&&(ia=a.parent.getIndex(a),this.model.add(a.parent,
+R,ia));null!=V&&Q.push(V);null==G&&null!=R&&Q.push(R);null==R&&null!=V&&V.geometry.setTerminalPoint(r,!1);null!=V&&this.fireEvent(new mxEventObject("cellsInserted","cells",[V]))}finally{this.model.endUpdate()}}if(null!=n)n(Q);else return Q});if(null==k||null!=R||!N||null==G&&u)return g(R);k(m+r.x*f,B+r.y*f,g)};
Graph.prototype.getIndexableText=function(a){a=null!=a?a:this.model.getDescendants(this.model.root);for(var b=document.createElement("div"),f=[],d,g=0;g<a.length;g++)if(d=a[g],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(b.innerHTML=this.sanitizeHtml(this.getLabel(d)),d=mxUtils.extractTextWithWhitespace([b])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&f.push(d);return f.join(" ")};
Graph.prototype.convertValueToString=function(a){var b=this.model.getValue(a);if(null!=b&&"object"==typeof b){var f=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){b=a.getAttribute("placeholder");for(var d=a;null==f&&null!=d;)null!=d.value&&"object"==typeof d.value&&(f=d.hasAttribute(b)?null!=d.getAttribute(b)?d.getAttribute(b):"":null),d=this.model.getParent(d)}else f=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=b.getAttribute("label_"+Graph.diagramLanguage)),
null==f&&(f=b.getAttribute("label")||"");return f||""}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};
@@ -3017,36 +3017,36 @@ Graph.prototype.setTableValues=function(a,b,f){for(var d=this.model.getChildCell
Graph.prototype.createCrossFunctionalSwimlane=function(a,b,f,d,g,e,k,n,u){f=null!=f?f:120;d=null!=d?d:120;k=null!=k?k:"shape=tableRow;horizontal=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;fontStyle=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;startSize=40;collapsible=0;recursiveResize=0;expand=0;";n=null!=n?n:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;";
u=null!=u?u:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=0;collapsible=0;recursiveResize=0;expand=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,b*f,a*d,null!=e?e:"shape=table;childLayout=tableLayout;"+(null==g?"startSize=0;fillColor=none;":"startSize=40;")+"collapsible=0;recursiveResize=0;expand=0;");e=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=e;g.geometry.height+=e;k=this.createVertex(null,
null,"",0,e,b*f+e,d,k);g.insert(this.createParent(k,this.createVertex(null,null,"",e,0,f,d,n),b,f,0));return 1<a?(k.geometry.y=d+e,this.createParent(g,this.createParent(k,this.createVertex(null,null,"",e,0,f,d,u),b,f,0),a-1,0,d)):g};
-Graph.prototype.visitTableCells=function(a,b){var f=null,d=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<d.length;g++){for(var e=this.getActualStartSize(d[g],!0),k=this.model.getChildCells(d[g],!0),n=this.getCellStyle(d[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),A={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;A.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+e.x),x.height+(null!=f&&null!=
-f[0]?f[0].point.y:a.y+e.y));A.actual=A;null!=f&&null!=f[r]&&1<f[r].rowspan?(A.rowspan=f[r].rowspan-1,A.colspan=f[r].colspan,A.actual=f[r].actual):null!=u&&1<u.colspan?(A.rowspan=u.rowspan,A.colspan=u.colspan-1,A.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(A.rowspan=parseInt(u.rowspan||1),A.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;b(A,k.length,
-d.length,a.x+(u?e.x:0),a.y+(u?e.y:0));m.push(A);u=A}f=m}};Graph.prototype.getTableLines=function(a,b,f){var d=[],g=[];(b||f)&&this.visitTableCells(a,mxUtils.bind(this,function(e,k,n,u,m){b&&e.row<n-1&&(null==d[e.row]&&(d[e.row]=[new mxPoint(u,e.point.y)]),1<e.rowspan&&d[e.row].push(null),d[e.row].push(e.point));f&&e.col<k-1&&(null==g[e.col]&&(g[e.col]=[new mxPoint(e.point.x,m)]),1<e.colspan&&g[e.col].push(null),g[e.col].push(e.point))}));return d.concat(g)};
+Graph.prototype.visitTableCells=function(a,b){var f=null,d=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<d.length;g++){for(var e=this.getActualStartSize(d[g],!0),k=this.model.getChildCells(d[g],!0),n=this.getCellStyle(d[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),B={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;B.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+e.x),x.height+(null!=f&&null!=
+f[0]?f[0].point.y:a.y+e.y));B.actual=B;null!=f&&null!=f[r]&&1<f[r].rowspan?(B.rowspan=f[r].rowspan-1,B.colspan=f[r].colspan,B.actual=f[r].actual):null!=u&&1<u.colspan?(B.rowspan=u.rowspan,B.colspan=u.colspan-1,B.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(B.rowspan=parseInt(u.rowspan||1),B.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;b(B,k.length,
+d.length,a.x+(u?e.x:0),a.y+(u?e.y:0));m.push(B);u=B}f=m}};Graph.prototype.getTableLines=function(a,b,f){var d=[],g=[];(b||f)&&this.visitTableCells(a,mxUtils.bind(this,function(e,k,n,u,m){b&&e.row<n-1&&(null==d[e.row]&&(d[e.row]=[new mxPoint(u,e.point.y)]),1<e.rowspan&&d[e.row].push(null),d[e.row].push(e.point));f&&e.col<k-1&&(null==g[e.col]&&(g[e.col]=[new mxPoint(e.point.x,m)]),1<e.colspan&&g[e.col].push(null),g[e.col].push(e.point))}));return d.concat(g)};
Graph.prototype.isTableCell=function(a){return this.model.isVertex(a)&&this.isTableRow(this.model.getParent(a))};Graph.prototype.isTableRow=function(a){return this.model.isVertex(a)&&this.isTable(this.model.getParent(a))};Graph.prototype.isTable=function(a){a=this.getCellStyle(a);return null!=a&&"tableLayout"==a.childLayout};Graph.prototype.isStack=function(a){a=this.getCellStyle(a);return null!=a&&"stackLayout"==a.childLayout};
Graph.prototype.isStackChild=function(a){return this.model.isVertex(a)&&this.isStack(this.model.getParent(a))};
Graph.prototype.setTableRowHeight=function(a,b,f){f=null!=f?f:!0;var d=this.getModel();d.beginUpdate();try{var g=this.getCellGeometry(a);if(null!=g){g=g.clone();g.height+=b;d.setGeometry(a,g);var e=d.getParent(a),k=d.getChildCells(e,!0);if(!f){var n=mxUtils.indexOf(k,a);if(n<k.length-1){var u=k[n+1],m=this.getCellGeometry(u);null!=m&&(m=m.clone(),m.y+=b,m.height-=b,d.setGeometry(u,m))}}var r=this.getCellGeometry(e);null!=r&&(f||(f=a==k[k.length-1]),f&&(r=r.clone(),r.height+=b,d.setGeometry(e,r)))}}finally{d.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(a,b,f){f=null!=f?f:!1;var d=this.getModel(),g=d.getParent(a),e=d.getParent(g),k=d.getChildCells(g,!0);a=mxUtils.indexOf(k,a);var n=a==k.length-1;d.beginUpdate();try{for(var u=d.getChildCells(e,!0),m=0;m<u.length;m++){g=u[m];k=d.getChildCells(g,!0);var r=k[a],x=this.getCellGeometry(r);null!=x&&(x=x.clone(),x.width+=b,null!=x.alternateBounds&&(x.alternateBounds.width+=b),d.setGeometry(r,x));a<k.length-1&&(r=k[a+1],x=this.getCellGeometry(r),null!=x&&(x=x.clone(),
-x.x+=b,f||(x.width-=b,null!=x.alternateBounds&&(x.alternateBounds.width-=b)),d.setGeometry(r,x)))}if(n||f){var A=this.getCellGeometry(e);null!=A&&(A=A.clone(),A.width+=b,d.setGeometry(e,A))}null!=this.layoutManager&&this.layoutManager.executeLayout(e)}finally{d.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
+x.x+=b,f||(x.width-=b,null!=x.alternateBounds&&(x.alternateBounds.width-=b)),d.setGeometry(r,x)))}if(n||f){var B=this.getCellGeometry(e);null!=B&&(B=B.clone(),B.width+=b,d.setGeometry(e,B))}null!=this.layoutManager&&this.layoutManager.executeLayout(e)}finally{d.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};TableLayout.prototype.getSize=function(a,b){for(var f=0,d=0;d<a.length;d++)if(!this.isVertexIgnored(a[d])){var g=this.graph.getCellGeometry(a[d]);null!=g&&(f+=b?g.width:g.height)}return f};
TableLayout.prototype.getRowLayout=function(a,b){var f=this.graph.model.getChildCells(a,!0),d=this.graph.getActualStartSize(a,!0);a=this.getSize(f,!0);b=b-d.x-d.width;var g=[];d=d.x;for(var e=0;e<f.length;e++){var k=this.graph.getCellGeometry(f[e]);null!=k&&(d+=(null!=k.alternateBounds?k.alternateBounds.width:k.width)*b/a,g.push(Math.round(d)))}return g};
TableLayout.prototype.layoutRow=function(a,b,f,d){var g=this.graph.getModel(),e=g.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,n=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var u=0;u<e.length;u++){var m=this.graph.getCellGeometry(e[u]);null!=m&&(m=m.clone(),m.y=a.y,m.height=f-a.y-a.height,null!=b?(m.x=b[u],m.width=b[u+1]-m.x,u==e.length-1&&u<b.length-2&&(m.width=d-m.x-a.x-a.width)):(m.x=k,k+=m.width,u==e.length-1?m.width=d-a.x-a.width-n:n+=m.width),m.alternateBounds=new mxRectangle(0,
0,m.width,m.height),g.setGeometry(e[u],m))}return n};
-TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(d,"resizeLastRow","0"),e="1"==mxUtils.getValue(d,"resizeLast","0");d="1"==mxUtils.getValue(d,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-b.y-b.height,m=f.width-b.x-b.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var A=this.getSize(r,!1);if(0<u&&0<m&&0<
-r.length&&0<A){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-A+C.height,k.setGeometry(r[r.length-1],C))}var F=e?null:this.getRowLayout(r[0],m),K=[],D=b.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=b.x,C.width=m,C.y=Math.round(D),D=g||d?D+C.height:D+C.height/A*u,C.height=Math.round(D)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],F,C.height,m,K));d&&u<A&&(f=f.clone(),f.height=D+b.height,k.setGeometry(a,
-f));e&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+b.width+b.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(O){k.setVisible(O.cell,O.actual.cell==O.cell);if(O.actual.cell!=O.cell){if(O.actual.row==O.row){var Q=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo;O.actual.geo.width+=Q.width}O.actual.col==O.col&&(Q=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo,O.actual.geo.height+=Q.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
+TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(d,"resizeLastRow","0"),e="1"==mxUtils.getValue(d,"resizeLast","0");d="1"==mxUtils.getValue(d,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-b.y-b.height,m=f.width-b.x-b.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var B=this.getSize(r,!1);if(0<u&&0<m&&0<
+r.length&&0<B){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-B+C.height,k.setGeometry(r[r.length-1],C))}var G=e?null:this.getRowLayout(r[0],m),J=[],D=b.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=b.x,C.width=m,C.y=Math.round(D),D=g||d?D+C.height:D+C.height/B*u,C.height=Math.round(D)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],G,C.height,m,J));d&&u<B&&(f=f.clone(),f.height=D+b.height,k.setGeometry(a,
+f));e&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+b.width+b.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(N){k.setVisible(N.cell,N.actual.cell==N.cell);if(N.actual.cell!=N.cell){if(N.actual.row==N.row){var Q=null!=N.geo.alternateBounds?N.geo.alternateBounds:N.geo;N.actual.geo.width+=Q.width}N.actual.col==N.col&&(Q=null!=N.geo.alternateBounds?N.geo.alternateBounds:N.geo,N.actual.geo.height+=Q.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
!1)}finally{k.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(r,x){x=null!=x?x:!0;var A=this.getState(r);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&!A.invalid&&this.updateLineJumps(A)&&this.graph.cellRenderer.redraw(A,!1,this.isRendering());A=b.apply(this,
-arguments);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(A);return A};var f=mxShape.prototype.paint;mxShape.prototype.paint=function(){f.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 r=this.node.getElementsByTagName("path");if(1<r.length){"1"!=mxUtils.getValue(this.state.style,
+(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(r,x){x=null!=x?x:!0;var B=this.getState(r);null!=B&&x&&this.graph.model.isEdge(B.cell)&&null!=B.style&&1!=B.style[mxConstants.STYLE_CURVED]&&!B.invalid&&this.updateLineJumps(B)&&this.graph.cellRenderer.redraw(B,!1,this.isRendering());B=b.apply(this,
+arguments);null!=B&&x&&this.graph.model.isEdge(B.cell)&&null!=B.style&&1!=B.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(B);return B};var f=mxShape.prototype.paint;mxShape.prototype.paint=function(){f.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 r=this.node.getElementsByTagName("path");if(1<r.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&r[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var x=this.state.view.graph.getFlowAnimationStyle();null!=x&&r[1].setAttribute("class",x.getAttribute("id"))}}};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(r,x){return d.apply(this,arguments)||null!=r.routedPoints&&null!=x.routedPoints&&!mxUtils.equalPoints(x.routedPoints,r.routedPoints)};var g=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
-function(r){g.apply(this,arguments);this.graph.model.isEdge(r.cell)&&1!=r.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(r)};mxGraphView.prototype.updateLineJumps=function(r){var x=r.absolutePoints;if(Graph.lineJumpsEnabled){var A=null!=r.routedPoints,C=null;if(null!=x&&null!=this.validEdges&&"none"!==mxUtils.getValue(r.style,"jumpStyle","none")){var F=function(ba,qa,I){var L=new mxPoint(qa,I);L.type=ba;C.push(L);L=null!=r.routedPoints?r.routedPoints[C.length-1]:null;return null==L||L.type!=
-ba||L.x!=qa||L.y!=I},K=.5*this.scale;A=!1;C=[];for(var D=0;D<x.length-1;D++){for(var O=x[D+1],Q=x[D],R=[],P=x[D+2];D<x.length-2&&mxUtils.ptSegDistSq(Q.x,Q.y,P.x,P.y,O.x,O.y)<1*this.scale*this.scale;)O=P,D++,P=x[D+2];A=F(0,Q.x,Q.y)||A;for(var Z=0;Z<this.validEdges.length;Z++){var T=this.validEdges[Z],U=T.absolutePoints;if(null!=U&&mxUtils.intersects(r,T)&&"1"!=T.style.noJump)for(T=0;T<U.length-1;T++){var fa=U[T+1],ha=U[T];for(P=U[T+2];T<U.length-2&&mxUtils.ptSegDistSq(ha.x,ha.y,P.x,P.y,fa.x,fa.y)<
-1*this.scale*this.scale;)fa=P,T++,P=U[T+2];P=mxUtils.intersection(Q.x,Q.y,O.x,O.y,ha.x,ha.y,fa.x,fa.y);if(null!=P&&(Math.abs(P.x-Q.x)>K||Math.abs(P.y-Q.y)>K)&&(Math.abs(P.x-O.x)>K||Math.abs(P.y-O.y)>K)&&(Math.abs(P.x-ha.x)>K||Math.abs(P.y-ha.y)>K)&&(Math.abs(P.x-fa.x)>K||Math.abs(P.y-fa.y)>K)){fa=P.x-Q.x;ha=P.y-Q.y;P={distSq:fa*fa+ha*ha,x:P.x,y:P.y};for(fa=0;fa<R.length;fa++)if(R[fa].distSq>P.distSq){R.splice(fa,0,P);P=null;break}null==P||0!=R.length&&R[R.length-1].x===P.x&&R[R.length-1].y===P.y||
-R.push(P)}}}for(T=0;T<R.length;T++)A=F(1,R[T].x,R[T].y)||A}P=x[x.length-1];A=F(0,P.x,P.y)||A}r.routedPoints=C;return A}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(r,x,A){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,K=mxUtils.getValue(this.style,"jumpStyle","none"),D=!0,O=null,Q=null,R=[],P=null;r.begin();for(var Z=0;Z<this.state.routedPoints.length;Z++){var T=this.state.routedPoints[Z],U=new mxPoint(T.x/this.scale,T.y/this.scale);0==Z?U=x[0]:Z==this.state.routedPoints.length-1&&(U=x[x.length-1]);var fa=!1;if(null!=O&&1==T.type){var ha=this.state.routedPoints[Z+1];T=ha.x/this.scale-U.x;ha=ha.y/this.scale-U.y;T=
-T*T+ha*ha;null==P&&(P=new mxPoint(U.x-O.x,U.y-O.y),Q=Math.sqrt(P.x*P.x+P.y*P.y),0<Q?(P.x=P.x*F/Q,P.y=P.y*F/Q):P=null);T>F*F&&0<Q&&(T=O.x-U.x,ha=O.y-U.y,T=T*T+ha*ha,T>F*F&&(fa=new mxPoint(U.x-P.x,U.y-P.y),T=new mxPoint(U.x+P.x,U.y+P.y),R.push(fa),this.addPoints(r,R,A,C,!1,null,D),R=0>Math.round(P.x)||0==Math.round(P.x)&&0>=Math.round(P.y)?1:-1,D=!1,"sharp"==K?(r.lineTo(fa.x-P.y*R,fa.y+P.x*R),r.lineTo(T.x-P.y*R,T.y+P.x*R),r.lineTo(T.x,T.y)):"line"==K?(r.moveTo(fa.x+P.y*R,fa.y-P.x*R),r.lineTo(fa.x-P.y*
-R,fa.y+P.x*R),r.moveTo(T.x-P.y*R,T.y+P.x*R),r.lineTo(T.x+P.y*R,T.y-P.x*R),r.moveTo(T.x,T.y)):"arc"==K?(R*=1.3,r.curveTo(fa.x-P.y*R,fa.y+P.x*R,T.x-P.y*R,T.y+P.x*R,T.x,T.y)):(r.moveTo(T.x,T.y),D=!0),R=[T],fa=!0))}else P=null;fa||(R.push(U),O=U)}this.addPoints(r,R,A,C,!1,null,D);r.stroke()}};var k=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(r,x,A,C){return null!=x&&"centerPerimeter"==x.style[mxConstants.STYLE_PERIMETER]?new mxPoint(x.getCenterX(),
-x.getCenterY()):k.apply(this,arguments)};var n=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(r,x,A,C){if(null==x||null==r||"1"!=x.style.snapToPoint&&"1"!=r.style.snapToPoint)n.apply(this,arguments);else{x=this.getTerminalPort(r,x,C);var F=this.getNextPoint(r,A,C),K=this.graph.isOrthogonal(r),D=mxUtils.toRadians(Number(x.style[mxConstants.STYLE_ROTATION]||"0")),O=new mxPoint(x.getCenterX(),x.getCenterY());if(0!=D){var Q=Math.cos(-D),R=
-Math.sin(-D);F=mxUtils.getRotatedPoint(F,Q,R,O)}Q=parseFloat(r.style[mxConstants.STYLE_PERIMETER_SPACING]||0);Q+=parseFloat(r.style[C?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);F=this.getPerimeterPoint(x,F,0==D&&K,Q);0!=D&&(Q=Math.cos(D),R=Math.sin(D),F=mxUtils.getRotatedPoint(F,Q,R,O));r.setAbsoluteTerminalPoint(this.snapToAnchorPoint(r,x,A,C,F),C)}};mxGraphView.prototype.snapToAnchorPoint=function(r,x,A,C,F){if(null!=x&&null!=r){r=this.graph.getAllConnectionConstraints(x);
-C=A=null;if(null!=r)for(var K=0;K<r.length;K++){var D=this.graph.getConnectionPoint(x,r[K]);if(null!=D){var O=(D.x-F.x)*(D.x-F.x)+(D.y-F.y)*(D.y-F.y);if(null==C||O<C)A=D,C=O}}null!=A&&(F=A)}return F};var u=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(r,x,A){var C=u.apply(this,arguments);"1"==r.getAttribute("placeholders")&&null!=A.state&&(C=A.state.view.graph.replacePlaceholders(A.state.cell,C));return C};var m=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=
-function(r){if(null!=r.style&&"undefined"!==typeof pako){var x=mxUtils.getValue(r.style,mxConstants.STYLE_SHAPE,null);if(null!=x&&"string"===typeof x&&"stencil("==x.substring(0,8))try{var A=x.substring(8,x.length-1),C=mxUtils.parseXml(Graph.decompress(A));return new mxShape(new mxStencil(C.documentElement))}catch(F){null!=window.console&&console.log("Error in shape: "+F)}}return m.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;
+function(r){g.apply(this,arguments);this.graph.model.isEdge(r.cell)&&1!=r.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(r)};mxGraphView.prototype.updateLineJumps=function(r){var x=r.absolutePoints;if(Graph.lineJumpsEnabled){var B=null!=r.routedPoints,C=null;if(null!=x&&null!=this.validEdges&&"none"!==mxUtils.getValue(r.style,"jumpStyle","none")){var G=function(ba,qa,O){var S=new mxPoint(qa,O);S.type=ba;C.push(S);S=null!=r.routedPoints?r.routedPoints[C.length-1]:null;return null==S||S.type!=
+ba||S.x!=qa||S.y!=O},J=.5*this.scale;B=!1;C=[];for(var D=0;D<x.length-1;D++){for(var N=x[D+1],Q=x[D],R=[],P=x[D+2];D<x.length-2&&mxUtils.ptSegDistSq(Q.x,Q.y,P.x,P.y,N.x,N.y)<1*this.scale*this.scale;)N=P,D++,P=x[D+2];B=G(0,Q.x,Q.y)||B;for(var Z=0;Z<this.validEdges.length;Z++){var U=this.validEdges[Z],V=U.absolutePoints;if(null!=V&&mxUtils.intersects(r,U)&&"1"!=U.style.noJump)for(U=0;U<V.length-1;U++){var ia=V[U+1],ha=V[U];for(P=V[U+2];U<V.length-2&&mxUtils.ptSegDistSq(ha.x,ha.y,P.x,P.y,ia.x,ia.y)<
+1*this.scale*this.scale;)ia=P,U++,P=V[U+2];P=mxUtils.intersection(Q.x,Q.y,N.x,N.y,ha.x,ha.y,ia.x,ia.y);if(null!=P&&(Math.abs(P.x-Q.x)>J||Math.abs(P.y-Q.y)>J)&&(Math.abs(P.x-N.x)>J||Math.abs(P.y-N.y)>J)&&(Math.abs(P.x-ha.x)>J||Math.abs(P.y-ha.y)>J)&&(Math.abs(P.x-ia.x)>J||Math.abs(P.y-ia.y)>J)){ia=P.x-Q.x;ha=P.y-Q.y;P={distSq:ia*ia+ha*ha,x:P.x,y:P.y};for(ia=0;ia<R.length;ia++)if(R[ia].distSq>P.distSq){R.splice(ia,0,P);P=null;break}null==P||0!=R.length&&R[R.length-1].x===P.x&&R[R.length-1].y===P.y||
+R.push(P)}}}for(U=0;U<R.length;U++)B=G(1,R[U].x,R[U].y)||B}P=x[x.length-1];B=G(0,P.x,P.y)||B}r.routedPoints=C;return B}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(r,x,B){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,G=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,J=mxUtils.getValue(this.style,"jumpStyle","none"),D=!0,N=null,Q=null,R=[],P=null;r.begin();for(var Z=0;Z<this.state.routedPoints.length;Z++){var U=this.state.routedPoints[Z],V=new mxPoint(U.x/this.scale,U.y/this.scale);0==Z?V=x[0]:Z==this.state.routedPoints.length-1&&(V=x[x.length-1]);var ia=!1;if(null!=N&&1==U.type){var ha=this.state.routedPoints[Z+1];U=ha.x/this.scale-V.x;ha=ha.y/this.scale-V.y;U=
+U*U+ha*ha;null==P&&(P=new mxPoint(V.x-N.x,V.y-N.y),Q=Math.sqrt(P.x*P.x+P.y*P.y),0<Q?(P.x=P.x*G/Q,P.y=P.y*G/Q):P=null);U>G*G&&0<Q&&(U=N.x-V.x,ha=N.y-V.y,U=U*U+ha*ha,U>G*G&&(ia=new mxPoint(V.x-P.x,V.y-P.y),U=new mxPoint(V.x+P.x,V.y+P.y),R.push(ia),this.addPoints(r,R,B,C,!1,null,D),R=0>Math.round(P.x)||0==Math.round(P.x)&&0>=Math.round(P.y)?1:-1,D=!1,"sharp"==J?(r.lineTo(ia.x-P.y*R,ia.y+P.x*R),r.lineTo(U.x-P.y*R,U.y+P.x*R),r.lineTo(U.x,U.y)):"line"==J?(r.moveTo(ia.x+P.y*R,ia.y-P.x*R),r.lineTo(ia.x-P.y*
+R,ia.y+P.x*R),r.moveTo(U.x-P.y*R,U.y+P.x*R),r.lineTo(U.x+P.y*R,U.y-P.x*R),r.moveTo(U.x,U.y)):"arc"==J?(R*=1.3,r.curveTo(ia.x-P.y*R,ia.y+P.x*R,U.x-P.y*R,U.y+P.x*R,U.x,U.y)):(r.moveTo(U.x,U.y),D=!0),R=[U],ia=!0))}else P=null;ia||(R.push(V),N=V)}this.addPoints(r,R,B,C,!1,null,D);r.stroke()}};var k=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(r,x,B,C){return null!=x&&"centerPerimeter"==x.style[mxConstants.STYLE_PERIMETER]?new mxPoint(x.getCenterX(),
+x.getCenterY()):k.apply(this,arguments)};var n=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(r,x,B,C){if(null==x||null==r||"1"!=x.style.snapToPoint&&"1"!=r.style.snapToPoint)n.apply(this,arguments);else{x=this.getTerminalPort(r,x,C);var G=this.getNextPoint(r,B,C),J=this.graph.isOrthogonal(r),D=mxUtils.toRadians(Number(x.style[mxConstants.STYLE_ROTATION]||"0")),N=new mxPoint(x.getCenterX(),x.getCenterY());if(0!=D){var Q=Math.cos(-D),R=
+Math.sin(-D);G=mxUtils.getRotatedPoint(G,Q,R,N)}Q=parseFloat(r.style[mxConstants.STYLE_PERIMETER_SPACING]||0);Q+=parseFloat(r.style[C?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);G=this.getPerimeterPoint(x,G,0==D&&J,Q);0!=D&&(Q=Math.cos(D),R=Math.sin(D),G=mxUtils.getRotatedPoint(G,Q,R,N));r.setAbsoluteTerminalPoint(this.snapToAnchorPoint(r,x,B,C,G),C)}};mxGraphView.prototype.snapToAnchorPoint=function(r,x,B,C,G){if(null!=x&&null!=r){r=this.graph.getAllConnectionConstraints(x);
+C=B=null;if(null!=r)for(var J=0;J<r.length;J++){var D=this.graph.getConnectionPoint(x,r[J]);if(null!=D){var N=(D.x-G.x)*(D.x-G.x)+(D.y-G.y)*(D.y-G.y);if(null==C||N<C)B=D,C=N}}null!=B&&(G=B)}return G};var u=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(r,x,B){var C=u.apply(this,arguments);"1"==r.getAttribute("placeholders")&&null!=B.state&&(C=B.state.view.graph.replacePlaceholders(B.state.cell,C));return C};var m=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=
+function(r){if(null!=r.style&&"undefined"!==typeof pako){var x=mxUtils.getValue(r.style,mxConstants.STYLE_SHAPE,null);if(null!=x&&"string"===typeof x&&"stencil("==x.substring(0,8))try{var B=x.substring(8,x.length-1),C=mxUtils.parseXml(Graph.decompress(B));return new mxShape(new mxStencil(C.documentElement))}catch(G){null!=window.console&&console.log("Error in shape: "+G)}}return m.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 f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var d=0;d<b.length;d++){var g=b[d];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var e=mxUtils.load(g);null!=e&&200<=e.getStatus()&&299>=e.getStatus()&&eval.call(window,e.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,f,b,g,k)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
@@ -3060,140 +3060,140 @@ mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(t){return!mxEvent.isAltDown(t)};var f=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(t){return f.apply(this,arguments)||this.graph.isTableRow(t)||this.graph.isTableCell(t)};var d=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(t){return d.apply(this,arguments)||
this.graph.isEdgeIgnored(t)};var g=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(t){return this.graph.isCloneEvent(t)!=g.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var t=new mxEllipse(null,this.highlightColor,this.highlightColor,0);t.opacity=mxConstants.HIGHLIGHT_OPACITY;return t};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
function(t){t=this.graph.createCurrentEdgeStyle();t=this.graph.createEdge(null,null,null,null,null,t);t=new mxCellState(this.graph.view,t,this.graph.getCellStyle(t));for(var z in this.graph.currentEdgeStyle)t.style[z]=this.graph.currentEdgeStyle[z];t.style=this.graph.postProcessCellStyle(t.cell,t.style);return t};var e=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var t=e.apply(this,arguments);t.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return t};mxConnectionHandler.prototype.updatePreview=function(t){};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=k.apply(this,arguments),z=t.getCell;t.getCell=mxUtils.bind(this,function(B){var E=z.apply(this,arguments);this.error=null;return E});return t};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
-function(){for(var t="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",z="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),B=0;B<z.length;B++)null!=this.currentEdgeStyle[z[B]]&&(t+=z[B]+"="+this.currentEdgeStyle[z[B]]+";");null!=this.currentEdgeStyle.orthogonalLoop?t+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
+return t};mxConnectionHandler.prototype.updatePreview=function(t){};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=k.apply(this,arguments),z=t.getCell;t.getCell=mxUtils.bind(this,function(A){var E=z.apply(this,arguments);this.error=null;return E});return t};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+function(){for(var t="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",z="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),A=0;A<z.length;A++)null!=this.currentEdgeStyle[z[A]]&&(t+=z[A]+"="+this.currentEdgeStyle[z[A]]+";");null!=this.currentEdgeStyle.orthogonalLoop?t+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(t+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?t+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(t+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(t+="elbow="+this.currentEdgeStyle.elbow+";");return t=null!=this.currentEdgeStyle.html?t+("html="+this.currentEdgeStyle.html+";"):t+"html=1;"};
-Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var t=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=t&&(new mxCodec(t.ownerDocument)).decode(t,this.getStylesheet())};Graph.prototype.createCellLookup=function(t,z){z=null!=z?z:{};for(var B=0;B<t.length;B++){var E=t[B];z[mxObjectIdentity.get(E)]=E.getId();for(var G=this.model.getChildCount(E),
-M=0;M<G;M++)this.createCellLookup([this.model.getChildAt(E,M)],z)}return z};Graph.prototype.createCellMapping=function(t,z,B){B=null!=B?B:{};for(var E in t){var G=z[E];null==B[G]&&(B[G]=t[E].getId()||"")}return B};Graph.prototype.importGraphModel=function(t,z,B,E){z=null!=z?z:0;B=null!=B?B:0;var G=new mxCodec(t.ownerDocument),M=new mxGraphModel;G.decode(t,M);t=[];G={};var X={},ia=M.getChildren(this.cloneCell(M.root,this.isCloneInvalidEdges(),G));if(null!=ia){var da=this.createCellLookup([M.root]);
-ia=ia.slice();this.model.beginUpdate();try{if(1!=ia.length||this.isCellLocked(this.getDefaultParent()))for(M=0;M<ia.length;M++)ja=this.model.getChildren(this.moveCells([ia[M]],z,B,!1,this.model.getRoot())[0]),null!=ja&&(t=t.concat(ja));else{var ja=M.getChildren(ia[0]);null!=ja&&(t=this.moveCells(ja,z,B,!1,this.getDefaultParent()),X[M.getChildAt(M.root,0).getId()]=this.getDefaultParent().getId())}if(null!=t&&(this.createCellMapping(G,da,X),this.updateCustomLinks(X,t),E)){this.isGridEnabled()&&(z=this.snap(z),
-B=this.snap(B));var sa=this.getBoundingBoxFromGeometry(t,!0);null!=sa&&this.moveCells(t,z-sa.x,B-sa.y)}}finally{this.model.endUpdate()}}return t};Graph.prototype.encodeCells=function(t){for(var z={},B=this.cloneCells(t,null,z),E=new mxDictionary,G=0;G<t.length;G++)E.put(t[G],!0);var M=new mxCodec,X=new mxGraphModel,ia=X.getChildAt(X.getRoot(),0);for(G=0;G<B.length;G++){X.add(ia,B[G]);var da=this.view.getState(t[G]);if(null!=da){var ja=this.getCellGeometry(B[G]);null!=ja&&ja.relative&&!this.model.isEdge(t[G])&&
-null==E.get(this.model.getParent(t[G]))&&(ja.offset=null,ja.relative=!1,ja.x=da.x/da.view.scale-da.view.translate.x,ja.y=da.y/da.view.scale-da.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(z,this.createCellLookup(t)),B);return M.encode(X)};Graph.prototype.isSwimlane=function(t,z){var B=null;null==t||this.model.isEdge(t)||this.model.getParent(t)==this.model.getRoot()||(B=this.getCurrentCellStyle(t,z)[mxConstants.STYLE_SHAPE]);return B==mxConstants.SHAPE_SWIMLANE||"table"==B||"tableRow"==
-B};var n=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(t){var z=this.model.getParent(t);if(null!=z){var B=this.getCurrentCellStyle(z);if(null!=B.expand)return"0"!=B.expand}return n.apply(this,arguments)&&(null==z||!this.isTable(z))};var u=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(t,z,B,E,G,M,X,ia){null==ia&&(ia=this.model.getParent(t),this.isTable(ia)||this.isTableRow(ia))&&(ia=this.getCellAt(M,X,null,!0,!1));B=null;this.model.beginUpdate();try{B=u.apply(this,
-[t,z,B,E,G,M,X,ia]);this.model.setValue(B,"");var da=this.getChildCells(B,!0);for(z=0;z<da.length;z++){var ja=this.getCellGeometry(da[z]);null!=ja&&ja.relative&&0<ja.x&&this.model.remove(da[z])}var sa=this.getChildCells(t,!0);for(z=0;z<sa.length;z++)ja=this.getCellGeometry(sa[z]),null!=ja&&ja.relative&&0>=ja.x&&this.model.remove(sa[z]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[B]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[B]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
-null,[t]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[t]);var Ba=this.model.getTerminal(B,!1);if(null!=Ba){var Da=this.getCurrentCellStyle(Ba);null!=Da&&"1"==Da.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[t]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[t]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[B]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[B]))}}finally{this.model.endUpdate()}return B};var m=Graph.prototype.selectCell;Graph.prototype.selectCell=
-function(t,z,B){if(z||B)m.apply(this,arguments);else{var E=this.getSelectionCell(),G=null,M=[],X=mxUtils.bind(this,function(ia){if(null!=this.view.getState(ia)&&(this.model.isVertex(ia)||this.model.isEdge(ia)))if(M.push(ia),ia==E)G=M.length-1;else if(t&&null==E&&0<M.length||null!=G&&t&&M.length>G||!t&&0<G)return;for(var da=0;da<this.model.getChildCount(ia);da++)X(this.model.getChildAt(ia,da))});X(this.model.root);0<M.length&&(G=null!=G?mxUtils.mod(G+(t?1:-1),M.length):0,this.setSelectionCell(M[G]))}};
-Graph.prototype.swapShapes=function(t,z,B,E,G,M,X){z=!1;if(!E&&null!=G&&1==t.length&&(E=this.view.getState(G),B=this.view.getState(t[0]),null!=E&&null!=B&&(null!=M&&mxEvent.isShiftDown(M)||"umlLifeline"==E.style.shape&&"umlLifeline"==B.style.shape)&&(E=this.getCellGeometry(G),M=this.getCellGeometry(t[0]),null!=E&&null!=M))){z=E.clone();E=M.clone();E.x=z.x;E.y=z.y;z.x=M.x;z.y=M.y;this.model.beginUpdate();try{this.model.setGeometry(G,z),this.model.setGeometry(t[0],E)}finally{this.model.endUpdate()}z=
-!0}return z};var r=Graph.prototype.moveCells;Graph.prototype.moveCells=function(t,z,B,E,G,M,X){if(this.swapShapes(t,z,B,E,G,M,X))return t;X=null!=X?X:{};if(this.isTable(G)){for(var ia=[],da=0;da<t.length;da++)this.isTable(t[da])?ia=ia.concat(this.model.getChildCells(t[da],!0).reverse()):ia.push(t[da]);t=ia}this.model.beginUpdate();try{ia=[];for(da=0;da<t.length;da++)if(null!=G&&this.isTableRow(t[da])){var ja=this.model.getParent(t[da]),sa=this.getCellGeometry(t[da]);this.isTable(ja)&&ia.push(ja);
-if(null!=ja&&null!=sa&&this.isTable(ja)&&this.isTable(G)&&(E||ja!=G)){if(!E){var Ba=this.getCellGeometry(ja);null!=Ba&&(Ba=Ba.clone(),Ba.height-=sa.height,this.model.setGeometry(ja,Ba))}Ba=this.getCellGeometry(G);null!=Ba&&(Ba=Ba.clone(),Ba.height+=sa.height,this.model.setGeometry(G,Ba));var Da=this.model.getChildCells(G,!0);if(0<Da.length){t[da]=E?this.cloneCell(t[da]):t[da];var Ma=this.model.getChildCells(t[da],!0),La=this.model.getChildCells(Da[0],!0),Ia=La.length-Ma.length;if(0<Ia)for(var Ea=
-0;Ea<Ia;Ea++){var Fa=this.cloneCell(Ma[Ma.length-1]);null!=Fa&&(Fa.value="",this.model.add(t[da],Fa))}else if(0>Ia)for(Ea=0;Ea>Ia;Ea--)this.model.remove(Ma[Ma.length+Ea-1]);Ma=this.model.getChildCells(t[da],!0);for(Ea=0;Ea<La.length;Ea++){var Oa=this.getCellGeometry(La[Ea]),Pa=this.getCellGeometry(Ma[Ea]);null!=Oa&&null!=Pa&&(Pa=Pa.clone(),Pa.width=Oa.width,this.model.setGeometry(Ma[Ea],Pa))}}}}var Na=r.apply(this,arguments);for(da=0;da<ia.length;da++)!E&&this.model.contains(ia[da])&&0==this.model.getChildCount(ia[da])&&
-this.model.remove(ia[da]);E&&this.updateCustomLinks(this.createCellMapping(X,this.createCellLookup(t)),Na)}finally{this.model.endUpdate()}return Na};var x=Graph.prototype.removeCells;Graph.prototype.removeCells=function(t,z){var B=[];this.model.beginUpdate();try{for(var E=0;E<t.length;E++)if(this.isTableCell(t[E])){var G=this.model.getParent(t[E]),M=this.model.getParent(G);1==this.model.getChildCount(G)&&1==this.model.getChildCount(M)?0>mxUtils.indexOf(t,M)&&0>mxUtils.indexOf(B,M)&&B.push(M):this.labelChanged(t[E],
-"")}else{if(this.isTableRow(t[E])&&(M=this.model.getParent(t[E]),0>mxUtils.indexOf(t,M)&&0>mxUtils.indexOf(B,M))){for(var X=this.model.getChildCells(M,!0),ia=0,da=0;da<X.length;da++)0<=mxUtils.indexOf(t,X[da])&&ia++;ia==X.length&&B.push(M)}B.push(t[E])}B=x.apply(this,[B,z])}finally{this.model.endUpdate()}return B};Graph.prototype.updateCustomLinks=function(t,z,B){B=null!=B?B:new Graph;for(var E=0;E<z.length;E++)null!=z[E]&&B.updateCustomLinksForCell(t,z[E],B)};Graph.prototype.updateCustomLinksForCell=
-function(t,z){this.doUpdateCustomLinksForCell(t,z);for(var B=this.model.getChildCount(z),E=0;E<B;E++)this.updateCustomLinksForCell(t,this.model.getChildAt(z,E))};Graph.prototype.doUpdateCustomLinksForCell=function(t,z){};Graph.prototype.getAllConnectionConstraints=function(t,z){if(null!=t){z=mxUtils.getValue(t.style,"points",null);if(null!=z){t=[];try{var B=JSON.parse(z);for(z=0;z<B.length;z++){var E=B[z];t.push(new mxConnectionConstraint(new mxPoint(E[0],E[1]),2<E.length?"0"!=E[2]:!0,null,3<E.length?
-E[3]:0,4<E.length?E[4]:0))}}catch(M){}return t}if(null!=t.shape&&null!=t.shape.bounds){E=t.shape.direction;z=t.shape.bounds;var G=t.shape.scale;B=z.width/G;z=z.height/G;if(E==mxConstants.DIRECTION_NORTH||E==mxConstants.DIRECTION_SOUTH)E=B,B=z,z=E;z=t.shape.getConstraints(t.style,B,z);if(null!=z)return z;if(null!=t.shape.stencil&&null!=t.shape.stencil.constraints)return t.shape.stencil.constraints;if(null!=t.shape.constraints)return t.shape.constraints}}return null};Graph.prototype.flipEdge=function(t){if(null!=
-t){var z=this.getCurrentCellStyle(t);z=mxUtils.getValue(z,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,z,[t])}};Graph.prototype.isValidRoot=function(t){for(var z=this.model.getChildCount(t),B=0,E=0;E<z;E++){var G=this.model.getChildAt(t,E);this.model.isVertex(G)&&(G=this.getCellGeometry(G),null==G||G.relative||B++)}return 0<B||this.isContainer(t)};Graph.prototype.isValidDropTarget=
-function(t,z,B){for(var E=this.getCurrentCellStyle(t),G=!0,M=!0,X=0;X<z.length&&M;X++)G=G&&this.isTable(z[X]),M=M&&this.isTableRow(z[X]);return(1==z.length&&null!=B&&mxEvent.isShiftDown(B)&&!mxEvent.isControlDown(B)&&!mxEvent.isAltDown(B)||("1"!=mxUtils.getValue(E,"part","0")||this.isContainer(t))&&"0"!=mxUtils.getValue(E,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(t))&&!this.isTableRow(t)&&(!this.isTable(t)||M||G))&&!this.isCellLocked(t)};Graph.prototype.createGroupCell=
-function(){var t=mxGraph.prototype.createGroupCell.apply(this,arguments);t.setStyle("group");return t};Graph.prototype.isExtendParentsOnAdd=function(t){var z=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(z&&null!=t&&null!=this.layoutManager){var B=this.model.getParent(t);null!=B&&(B=this.layoutManager.getLayout(B),null!=B&&B.constructor==mxStackLayout&&(z=!1))}return z};Graph.prototype.getPreferredSizeForCell=function(t){var z=mxGraph.prototype.getPreferredSizeForCell.apply(this,
-arguments);null!=z&&(z.width+=10,z.height+=4,this.gridEnabled&&(z.width=this.snap(z.width),z.height=this.snap(z.height)));return z};Graph.prototype.turnShapes=function(t,z){var B=this.getModel(),E=[];B.beginUpdate();try{for(var G=0;G<t.length;G++){var M=t[G];if(B.isEdge(M)){var X=B.getTerminal(M,!0),ia=B.getTerminal(M,!1);B.setTerminal(M,ia,!0);B.setTerminal(M,X,!1);var da=B.getGeometry(M);if(null!=da){da=da.clone();null!=da.points&&da.points.reverse();var ja=da.getTerminalPoint(!0),sa=da.getTerminalPoint(!1);
-da.setTerminalPoint(ja,!1);da.setTerminalPoint(sa,!0);B.setGeometry(M,da);var Ba=this.view.getState(M),Da=this.view.getState(X),Ma=this.view.getState(ia);if(null!=Ba){var La=null!=Da?this.getConnectionConstraint(Ba,Da,!0):null,Ia=null!=Ma?this.getConnectionConstraint(Ba,Ma,!1):null;this.setConnectionConstraint(M,X,!0,Ia);this.setConnectionConstraint(M,ia,!1,La);var Ea=mxUtils.getValue(Ba.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
-mxUtils.getValue(Ba.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[M]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,Ea,[M])}E.push(M)}}else if(B.isVertex(M)&&(da=this.getCellGeometry(M),null!=da)){if(!(this.isTable(M)||this.isTableRow(M)||this.isTableCell(M)||this.isSwimlane(M))){da=da.clone();da.x+=da.width/2-da.height/2;da.y+=da.height/2-da.width/2;var Fa=da.width;da.width=da.height;da.height=Fa;B.setGeometry(M,da)}var Oa=this.view.getState(M);if(null!=Oa){var Pa=[mxConstants.DIRECTION_EAST,
-mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Na=mxUtils.getValue(Oa.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Pa[mxUtils.mod(mxUtils.indexOf(Pa,Na)+(z?-1:1),Pa.length)],[M])}E.push(M)}}}finally{B.endUpdate()}return E};Graph.prototype.stencilHasPlaceholders=function(t){if(null!=t&&null!=t.fgNode)for(t=t.fgNode.firstChild;null!=t;){if("text"==t.nodeName&&"1"==t.getAttribute("placeholders"))return!0;
-t=t.nextSibling}return!1};var A=Graph.prototype.processChange;Graph.prototype.processChange=function(t){if(t instanceof mxGeometryChange&&(this.isTableCell(t.cell)||this.isTableRow(t.cell))&&(null==t.previous&&null!=t.geometry||null!=t.previous&&!t.previous.equals(t.geometry))){var z=t.cell;this.isTableCell(z)&&(z=this.model.getParent(z));this.isTableRow(z)&&(z=this.model.getParent(z));var B=this.view.getState(z);null!=B&&null!=B.shape&&(this.view.invalidate(z),B.shape.bounds=null)}A.apply(this,arguments);
-t instanceof mxValueChange&&null!=t.cell&&null!=t.cell.value&&"object"==typeof t.cell.value&&this.invalidateDescendantsWithPlaceholders(t.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(t){t=this.model.getDescendants(t);if(0<t.length)for(var z=0;z<t.length;z++){var B=this.view.getState(t[z]);null!=B&&null!=B.shape&&null!=B.shape.stencil&&this.stencilHasPlaceholders(B.shape.stencil)?this.removeStateForCell(t[z]):this.isReplacePlaceholders(t[z])&&this.view.invalidate(t[z],!1,!1)}};
-Graph.prototype.replaceElement=function(t,z){z=t.ownerDocument.createElement(null!=z?z:"span");for(var B=Array.prototype.slice.call(t.attributes);attr=B.pop();)z.setAttribute(attr.nodeName,attr.nodeValue);z.innerHTML=t.innerHTML;t.parentNode.replaceChild(z,t)};Graph.prototype.processElements=function(t,z){if(null!=t){t=t.getElementsByTagName("*");for(var B=0;B<t.length;B++)z(t[B])}};Graph.prototype.updateLabelElements=function(t,z,B){t=null!=t?t:this.getSelectionCells();for(var E=document.createElement("div"),
-G=0;G<t.length;G++)if(this.isHtmlLabel(t[G])){var M=this.convertValueToString(t[G]);if(null!=M&&0<M.length){E.innerHTML=M;for(var X=E.getElementsByTagName(null!=B?B:"*"),ia=0;ia<X.length;ia++)z(X[ia]);E.innerHTML!=M&&this.cellLabelChanged(t[G],E.innerHTML)}}};Graph.prototype.cellLabelChanged=function(t,z,B){z=Graph.zapGremlins(z);this.model.beginUpdate();try{if(null!=t.value&&"object"==typeof t.value){if(this.isReplacePlaceholders(t)&&null!=t.getAttribute("placeholder"))for(var E=t.getAttribute("placeholder"),
-G=t;null!=G;){if(G==this.model.getRoot()||null!=G.value&&"object"==typeof G.value&&G.hasAttribute(E)){this.setAttributeForCell(G,E,z);break}G=this.model.getParent(G)}var M=t.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&M.hasAttribute("label_"+Graph.diagramLanguage)?M.setAttribute("label_"+Graph.diagramLanguage,z):M.setAttribute("label",z);z=M}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(t){if(null!=
-t){for(var z=new mxDictionary,B=0;B<t.length;B++)z.put(t[B],!0);var E=[];for(B=0;B<t.length;B++){var G=this.model.getParent(t[B]);null==G||z.get(G)||(z.put(G,!0),E.push(G))}for(B=0;B<E.length;B++)if(G=this.view.getState(E[B]),null!=G&&(this.model.isEdge(G.cell)||this.model.isVertex(G.cell))&&this.isCellDeletable(G.cell)&&this.isTransparentState(G)){for(var M=!0,X=0;X<this.model.getChildCount(G.cell)&&M;X++)z.get(this.model.getChildAt(G.cell,X))||(M=!1);M&&t.push(G.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
-arguments)};Graph.prototype.removeCellsAfterUngroup=function(t){for(var z=[],B=0;B<t.length;B++)this.isCellDeletable(t[B])&&this.isTransparentState(this.view.getState(t[B]))&&z.push(t[B]);t=z;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(t,z){this.setAttributeForCell(t,"link",z)};Graph.prototype.setTooltipForCell=function(t,z){var B="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(t.value)&&t.value.hasAttribute("tooltip_"+
-Graph.diagramLanguage)&&(B="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(t,B,z)};Graph.prototype.getAttributeForCell=function(t,z,B){t=null!=t.value&&"object"===typeof t.value?t.value.getAttribute(z):null;return null!=t?t:B};Graph.prototype.setAttributeForCell=function(t,z,B){if(null!=t.value&&"object"==typeof t.value)var E=t.value.cloneNode(!0);else E=mxUtils.createXmlDocument().createElement("UserObject"),E.setAttribute("label",t.value||"");null!=B?E.setAttribute(z,B):E.removeAttribute(z);
-this.model.setValue(t,E)};var C=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(t,z,B,E){this.getModel();if(mxEvent.isAltDown(z))return null;for(var G=0;G<t.length;G++){var M=this.model.getParent(t[G]);if(this.model.isEdge(M)&&0>mxUtils.indexOf(t,M))return null}M=C.apply(this,arguments);var X=!0;for(G=0;G<t.length&&X;G++)X=X&&this.isTableRow(t[G]);X&&(this.isTableCell(M)&&(M=this.model.getParent(M)),this.isTableRow(M)&&(M=this.model.getParent(M)),this.isTable(M)||(M=null));return M};
-Graph.prototype.click=function(t){mxGraph.prototype.click.call(this,t);this.firstClickState=t.getState();this.firstClickSource=t.getSource()};Graph.prototype.dblClick=function(t,z){this.isEnabled()&&(z=this.insertTextForEvent(t,z),mxGraph.prototype.dblClick.call(this,t,z))};Graph.prototype.insertTextForEvent=function(t,z){var B=mxUtils.convertPoint(this.container,mxEvent.getClientX(t),mxEvent.getClientY(t));if(null!=t&&!this.model.isVertex(z)){var E=this.model.isEdge(z)?this.view.getState(z):null,
-G=mxEvent.getSource(t);this.firstClickState!=E||this.firstClickSource!=G||null!=E&&null!=E.text&&null!=E.text.node&&null!=E.text.boundingBox&&(mxUtils.contains(E.text.boundingBox,B.x,B.y)||mxUtils.isAncestorNode(E.text.node,mxEvent.getSource(t)))||(null!=E||this.isCellLocked(this.getDefaultParent()))&&(null==E||this.isCellLocked(E.cell))||!(null!=E||mxClient.IS_SVG&&G==this.view.getCanvas().ownerSVGElement)||(null==E&&(E=this.view.getState(this.getCellAt(B.x,B.y))),z=this.addText(B.x,B.y,E))}return z};
-Graph.prototype.getInsertPoint=function(){var t=this.getGridSize(),z=this.container.scrollLeft/this.view.scale-this.view.translate.x,B=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var E=this.getPageLayout(),G=this.getPageSize();z=Math.max(z,E.x*G.width);B=Math.max(B,E.y*G.height)}return new mxPoint(this.snap(z+t),this.snap(B+t))};Graph.prototype.getFreeInsertPoint=function(){var t=this.view,z=this.getGraphBounds(),B=this.getInsertPoint(),E=this.snap(Math.round(Math.max(B.x,
-z.x/t.scale-t.translate.x+(0==z.width?2*this.gridSize:0))));t=this.snap(Math.round(Math.max(B.y,(z.y+z.height)/t.scale-t.translate.y+2*this.gridSize)));return new mxPoint(E,t)};Graph.prototype.getCenterInsertPoint=function(t){t=null!=t?t:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
-2)/this.view.scale-this.view.translate.y-t.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-t.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(t,z,B){var E=new mxCell;E.value="Text";E.geometry=new mxGeometry(0,0,0,0);E.vertex=!0;if(null!=B&&this.model.isEdge(B.cell)){E.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
-E.geometry.relative=!0;E.connectable=!1;var G=this.view.getRelativePoint(B,t,z);E.geometry.x=Math.round(1E4*G.x)/1E4;E.geometry.y=Math.round(G.y);E.geometry.offset=new mxPoint(0,0);G=this.view.getPoint(B,E.geometry);var M=this.view.scale;E.geometry.offset=new mxPoint(Math.round((t-G.x)/M),Math.round((z-G.y)/M))}else G=this.view.translate,E.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",E.geometry.width=40,E.geometry.height=20,E.geometry.x=Math.round(t/this.view.scale)-
-G.x-(null!=B?B.origin.x:0),E.geometry.y=Math.round(z/this.view.scale)-G.y-(null!=B?B.origin.y:0),E.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([E],null!=B?B.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[E])),this.autoSizeCell(E)}finally{this.getModel().endUpdate()}return E};Graph.prototype.addClickHandler=function(t,z,B){var E=mxUtils.bind(this,function(){var da=this.container.getElementsByTagName("a");if(null!=da)for(var ja=0;ja<da.length;ja++){var sa=
-this.getAbsoluteUrl(da[ja].getAttribute("href"));null!=sa&&(da[ja].setAttribute("rel",this.linkRelation),da[ja].setAttribute("href",sa),null!=z&&mxEvent.addGestureListeners(da[ja],null,null,z))}});this.model.addListener(mxEvent.CHANGE,E);E();var G=this.container.style.cursor,M=this.getTolerance(),X=this,ia={currentState:null,currentLink:null,currentTarget:null,highlight:null!=t&&""!=t&&t!=mxConstants.NONE?new mxCellHighlight(X,t,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(da){var ja=
-da.sourceState;if(null==ja||null==X.getLinkForCell(ja.cell))da=X.getCellAt(da.getGraphX(),da.getGraphY(),null,null,null,function(sa,Ba,Da){return null==X.getLinkForCell(sa.cell)}),ja=null==ja||X.model.isAncestor(da,ja.cell)?X.view.getState(da):null;ja!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=ja,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(da,ja){this.startX=ja.getGraphX();this.startY=ja.getGraphY();this.scrollLeft=X.container.scrollLeft;
-this.scrollTop=X.container.scrollTop;null==this.currentLink&&"auto"==X.container.style.overflow&&(X.container.style.cursor="move");this.updateCurrentState(ja)},mouseMove:function(da,ja){if(X.isMouseDown)null!=this.currentLink&&(da=Math.abs(this.startX-ja.getGraphX()),ja=Math.abs(this.startY-ja.getGraphY()),(da>M||ja>M)&&this.clear());else{for(da=ja.getSource();null!=da&&"a"!=da.nodeName.toLowerCase();)da=da.parentNode;null!=da?this.clear():(null!=X.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&
-X.tooltipHandler.reset(ja,!0,this.currentState),(null==this.currentState||ja.getState()!=this.currentState&&null!=ja.sourceState||!X.intersects(this.currentState,ja.getGraphX(),ja.getGraphY()))&&this.updateCurrentState(ja))}},mouseUp:function(da,ja){var sa=ja.getSource();for(da=ja.getEvent();null!=sa&&"a"!=sa.nodeName.toLowerCase();)sa=sa.parentNode;null==sa&&Math.abs(this.scrollLeft-X.container.scrollLeft)<M&&Math.abs(this.scrollTop-X.container.scrollTop)<M&&(null==ja.sourceState||!ja.isSource(ja.sourceState.control))&&
-((mxEvent.isLeftMouseButton(da)||mxEvent.isMiddleMouseButton(da))&&!mxEvent.isPopupTrigger(da)||mxEvent.isTouchEvent(da))&&(null!=this.currentLink?(sa=X.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&sa||null==z||z(da,this.currentLink),mxEvent.isConsumed(da)||(da=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(da)?"_blank":sa?X.linkTarget:"_top",X.openLink(this.currentLink,da),ja.consume())):null!=B&&!ja.isConsumed()&&Math.abs(this.scrollLeft-X.container.scrollLeft)<
-M&&Math.abs(this.scrollTop-X.container.scrollTop)<M&&Math.abs(this.startX-ja.getGraphX())<M&&Math.abs(this.startY-ja.getGraphY())<M&&B(ja.getEvent()));this.clear()},activate:function(da){this.currentLink=X.getAbsoluteUrl(X.getLinkForCell(da.cell));null!=this.currentLink&&(this.currentTarget=X.getLinkTargetForCell(da.cell),X.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(da))},clear:function(){null!=X.container&&(X.container.style.cursor=G);this.currentLink=this.currentState=
-this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=X.tooltipHandler&&X.tooltipHandler.hide()}};X.click=function(da){};X.addMouseListener(ia);mxEvent.addListener(document,"mouseleave",function(da){ia.clear()})};Graph.prototype.duplicateCells=function(t,z){t=null!=t?t:this.getSelectionCells();z=null!=z?z:!0;for(var B=0;B<t.length;B++)this.isTableCell(t[B])&&(t[B]=this.model.getParent(t[B]));t=this.model.getTopmostCells(t);var E=this.getModel(),G=this.gridSize,M=[];E.beginUpdate();
-try{var X={},ia=this.createCellLookup(t),da=this.cloneCells(t,!1,X,!0);for(B=0;B<t.length;B++){var ja=E.getParent(t[B]);if(null!=ja){var sa=this.moveCells([da[B]],G,G,!1)[0];M.push(sa);if(z)E.add(ja,da[B]);else{var Ba=ja.getIndex(t[B]);E.add(ja,da[B],Ba+1)}if(this.isTable(ja)){var Da=this.getCellGeometry(da[B]),Ma=this.getCellGeometry(ja);null!=Da&&null!=Ma&&(Ma=Ma.clone(),Ma.height+=Da.height,E.setGeometry(ja,Ma))}}else M.push(da[B])}this.updateCustomLinks(this.createCellMapping(X,ia),da,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,
-"cells",da))}finally{E.endUpdate()}return M};Graph.prototype.insertImage=function(t,z,B){if(null!=t&&null!=this.cellEditor.textarea){for(var E=this.cellEditor.textarea.getElementsByTagName("img"),G=[],M=0;M<E.length;M++)G.push(E[M]);document.execCommand("insertimage",!1,t);t=this.cellEditor.textarea.getElementsByTagName("img");if(t.length==G.length+1)for(M=t.length-1;0<=M;M--)if(0==M||t[M]!=G[M-1]){t[M].setAttribute("width",z);t[M].setAttribute("height",B);break}}};Graph.prototype.insertLink=function(t){if(null!=
-this.cellEditor.textarea)if(0==t.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var z=this.cellEditor.textarea.getElementsByTagName("a"),B=[],E=0;E<z.length;E++)B.push(z[E]);document.execCommand("createlink",!1,mxUtils.trim(t));z=this.cellEditor.textarea.getElementsByTagName("a");if(z.length==B.length+1)for(E=z.length-1;0<=E;E--)if(z[E]!=B[E-1]){for(z=z[E].getElementsByTagName("a");0<z.length;){for(B=z[0].parentNode;null!=z[0].firstChild;)B.insertBefore(z[0].firstChild,z[0]);
-B.removeChild(z[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(t))};Graph.prototype.isCellResizable=function(t){var z=mxGraph.prototype.isCellResizable.apply(this,arguments),B=this.getCurrentCellStyle(t);return!this.isTableCell(t)&&!this.isTableRow(t)&&(z||"0"!=mxUtils.getValue(B,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==B[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(t,z){null==z&&(z=this.getSelectionCells());if(null!=z&&1<z.length){for(var B=[],E=null,
-G=null,M=0;M<z.length;M++)if(this.getModel().isVertex(z[M])){var X=this.view.getState(z[M]);if(null!=X){var ia=t?X.getCenterX():X.getCenterY();E=null!=E?Math.max(E,ia):ia;G=null!=G?Math.min(G,ia):ia;B.push(X)}}if(2<B.length){B.sort(function(Ba,Da){return t?Ba.x-Da.x:Ba.y-Da.y});X=this.view.translate;ia=this.view.scale;G=G/ia-(t?X.x:X.y);E=E/ia-(t?X.x:X.y);this.getModel().beginUpdate();try{var da=(E-G)/(B.length-1);E=G;for(M=1;M<B.length-1;M++){var ja=this.view.getState(this.model.getParent(B[M].cell)),
-sa=this.getCellGeometry(B[M].cell);E+=da;null!=sa&&null!=ja&&(sa=sa.clone(),t?sa.x=Math.round(E-sa.width/2)-ja.origin.x:sa.y=Math.round(E-sa.height/2)-ja.origin.y,this.getModel().setGeometry(B[M].cell,sa))}}finally{this.getModel().endUpdate()}}}return z};Graph.prototype.isCloneEvent=function(t){return mxClient.IS_MAC&&mxEvent.isMetaDown(t)||mxEvent.isControlDown(t)};Graph.prototype.createSvgImageExport=function(){var t=new mxImageExport;t.getLinkForCellState=mxUtils.bind(this,function(z,B){return this.getLinkForCell(z.cell)});
-return t};Graph.prototype.parseBackgroundImage=function(t){var z=null;null!=t&&0<t.length&&(t=JSON.parse(t),z=new mxImage(t.src,t.width,t.height));return z};Graph.prototype.getBackgroundImageObject=function(t){return t};Graph.prototype.getSvg=function(t,z,B,E,G,M,X,ia,da,ja,sa,Ba,Da,Ma){var La=null;if(null!=Ma)for(La=new mxDictionary,sa=0;sa<Ma.length;sa++)La.put(Ma[sa],!0);if(Ma=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{z=null!=z?z:1;B=null!=B?
-B:0;G=null!=G?G:!0;M=null!=M?M:!0;X=null!=X?X:!0;ja=null!=ja?ja:!1;var Ia="page"==Da?this.view.getBackgroundPageBounds():M&&null==La||E||"diagram"==Da?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),Ea=this.view.scale;"diagram"==Da&&null!=this.backgroundImage&&(Ia=mxRectangle.fromRectangle(Ia),Ia.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*Ea,(this.view.translate.y+this.backgroundImage.y)*Ea,this.backgroundImage.width*Ea,this.backgroundImage.height*Ea)));
-if(null==Ia)throw Error(mxResources.get("drawingEmpty"));E=z/Ea;Da=G?-.5:0;var Fa=Graph.createSvgNode(Da,Da,Math.max(1,Math.ceil(Ia.width*E)+2*B)+(ja&&0==B?5:0),Math.max(1,Math.ceil(Ia.height*E)+2*B)+(ja&&0==B?5:0),t),Oa=Fa.ownerDocument,Pa=null!=Oa.createElementNS?Oa.createElementNS(mxConstants.NS_SVG,"g"):Oa.createElement("g");Fa.appendChild(Pa);var Na=this.createSvgCanvas(Pa);Na.foOffset=G?-.5:0;Na.textOffset=G?-.5:0;Na.imageOffset=G?-.5:0;Na.translate(Math.floor(B/z-Ia.x/Ea),Math.floor(B/z-Ia.y/
-Ea));var Sa=document.createElement("div"),eb=Na.getAlternateText;Na.getAlternateText=function(ab,mb,Xa,ib,gb,Wa,qb,tb,nb,fb,Ra,rb,xb){if(null!=Wa&&0<this.state.fontSize)try{mxUtils.isNode(Wa)?Wa=Wa.innerText:(Sa.innerHTML=Wa,Wa=mxUtils.extractTextWithWhitespace(Sa.childNodes));for(var kb=Math.ceil(2*ib/this.state.fontSize),hb=[],ob=0,lb=0;(0==kb||ob<kb)&&lb<Wa.length;){var sb=Wa.charCodeAt(lb);if(10==sb||13==sb){if(0<ob)break}else hb.push(Wa.charAt(lb)),255>sb&&ob++;lb++}hb.length<Wa.length&&1<Wa.length-
-hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(c){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var Za=this.backgroundImage;if(null!=Za){t=Ea/z;var pb=this.view.translate;Da=new mxRectangle((Za.x+pb.x)*t,(Za.y+pb.y)*t,Za.width*t,Za.height*t);mxUtils.intersects(Ia,Da)&&Na.image(Za.x+pb.x,Za.y+pb.y,Za.width,Za.height,Za.src,!0)}Na.scale(E);Na.textEnabled=X;ia=null!=ia?ia:this.createSvgImageExport();var ub=ia.drawCellState,vb=ia.getLinkForCellState;ia.getLinkForCellState=
-function(ab,mb){var Xa=vb.apply(this,arguments);return null==Xa||ab.view.graph.isCustomLink(Xa)?null:Xa};ia.getLinkTargetForCellState=function(ab,mb){return ab.view.graph.getLinkTargetForCell(ab.cell)};ia.drawCellState=function(ab,mb){for(var Xa=ab.view.graph,ib=null!=La?La.get(ab.cell):Xa.isCellSelected(ab.cell),gb=Xa.model.getParent(ab.cell);!(M&&null==La||ib)&&null!=gb;)ib=null!=La?La.get(gb):Xa.isCellSelected(gb),gb=Xa.model.getParent(gb);(M&&null==La||ib)&&ub.apply(this,arguments)};ia.drawState(this.getView().getState(this.model.root),
-Na);this.updateSvgLinks(Fa,da,!0);this.addForeignObjectWarning(Na,Fa);return Fa}finally{Ma&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(t,z){if("0"!=urlParams["svg-warning"]&&0<z.getElementsByTagName("foreignObject").length){var B=t.createElement("switch"),E=t.createElement("g");E.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var G=t.createElement("a");G.setAttribute("transform","translate(0,-5)");
-null==G.setAttributeNS||z.ownerDocument!=document&&null==document.documentMode?(G.setAttribute("xlink:href",Graph.foreignObjectWarningLink),G.setAttribute("target","_blank")):(G.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),G.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));t=t.createElement("text");t.setAttribute("text-anchor","middle");t.setAttribute("font-size","10px");t.setAttribute("x","50%");t.setAttribute("y","100%");mxUtils.write(t,Graph.foreignObjectWarningText);
-B.appendChild(E);G.appendChild(t);B.appendChild(G);z.appendChild(B)}};Graph.prototype.updateSvgLinks=function(t,z,B){t=t.getElementsByTagName("a");for(var E=0;E<t.length;E++)if(null==t[E].getAttribute("target")){var G=t[E].getAttribute("href");null==G&&(G=t[E].getAttribute("xlink:href"));null!=G&&(null!=z&&/^https?:\/\//.test(G)?t[E].setAttribute("target",z):B&&this.isCustomLink(G)&&t[E].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(t){t=new mxSvgCanvas2D(t);
+Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var t=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=t&&(new mxCodec(t.ownerDocument)).decode(t,this.getStylesheet())};Graph.prototype.createCellLookup=function(t,z){z=null!=z?z:{};for(var A=0;A<t.length;A++){var E=t[A];z[mxObjectIdentity.get(E)]=E.getId();for(var H=this.model.getChildCount(E),
+K=0;K<H;K++)this.createCellLookup([this.model.getChildAt(E,K)],z)}return z};Graph.prototype.createCellMapping=function(t,z,A){A=null!=A?A:{};for(var E in t){var H=z[E];null==A[H]&&(A[H]=t[E].getId()||"")}return A};Graph.prototype.importGraphModel=function(t,z,A,E){z=null!=z?z:0;A=null!=A?A:0;var H=new mxCodec(t.ownerDocument),K=new mxGraphModel;H.decode(t,K);t=[];H={};var X={},ja=K.getChildren(this.cloneCell(K.root,this.isCloneInvalidEdges(),H));if(null!=ja){var ea=this.createCellLookup([K.root]);
+ja=ja.slice();this.model.beginUpdate();try{if(1!=ja.length||this.isCellLocked(this.getDefaultParent()))for(K=0;K<ja.length;K++)ka=this.model.getChildren(this.moveCells([ja[K]],z,A,!1,this.model.getRoot())[0]),null!=ka&&(t=t.concat(ka));else{var ka=K.getChildren(ja[0]);null!=ka&&(t=this.moveCells(ka,z,A,!1,this.getDefaultParent()),X[K.getChildAt(K.root,0).getId()]=this.getDefaultParent().getId())}if(null!=t&&(this.createCellMapping(H,ea,X),this.updateCustomLinks(X,t),E)){this.isGridEnabled()&&(z=this.snap(z),
+A=this.snap(A));var ta=this.getBoundingBoxFromGeometry(t,!0);null!=ta&&this.moveCells(t,z-ta.x,A-ta.y)}}finally{this.model.endUpdate()}}return t};Graph.prototype.encodeCells=function(t){for(var z={},A=this.cloneCells(t,null,z),E=new mxDictionary,H=0;H<t.length;H++)E.put(t[H],!0);var K=new mxCodec,X=new mxGraphModel,ja=X.getChildAt(X.getRoot(),0);for(H=0;H<A.length;H++){X.add(ja,A[H]);var ea=this.view.getState(t[H]);if(null!=ea){var ka=this.getCellGeometry(A[H]);null!=ka&&ka.relative&&!this.model.isEdge(t[H])&&
+null==E.get(this.model.getParent(t[H]))&&(ka.offset=null,ka.relative=!1,ka.x=ea.x/ea.view.scale-ea.view.translate.x,ka.y=ea.y/ea.view.scale-ea.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(z,this.createCellLookup(t)),A);return K.encode(X)};Graph.prototype.isSwimlane=function(t,z){var A=null;null==t||this.model.isEdge(t)||this.model.getParent(t)==this.model.getRoot()||(A=this.getCurrentCellStyle(t,z)[mxConstants.STYLE_SHAPE]);return A==mxConstants.SHAPE_SWIMLANE||"table"==A||"tableRow"==
+A};var n=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(t){var z=this.model.getParent(t);if(null!=z){var A=this.getCurrentCellStyle(z);if(null!=A.expand)return"0"!=A.expand}return n.apply(this,arguments)&&(null==z||!this.isTable(z))};var u=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(t,z,A,E,H,K,X,ja){null==ja&&(ja=this.model.getParent(t),this.isTable(ja)||this.isTableRow(ja))&&(ja=this.getCellAt(K,X,null,!0,!1));A=null;this.model.beginUpdate();try{A=u.apply(this,
+[t,z,A,E,H,K,X,ja]);this.model.setValue(A,"");var ea=this.getChildCells(A,!0);for(z=0;z<ea.length;z++){var ka=this.getCellGeometry(ea[z]);null!=ka&&ka.relative&&0<ka.x&&this.model.remove(ea[z])}var ta=this.getChildCells(t,!0);for(z=0;z<ta.length;z++)ka=this.getCellGeometry(ta[z]),null!=ka&&ka.relative&&0>=ka.x&&this.model.remove(ta[z]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[A]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[A]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+null,[t]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[t]);var Aa=this.model.getTerminal(A,!1);if(null!=Aa){var Ea=this.getCurrentCellStyle(Aa);null!=Ea&&"1"==Ea.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[t]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[t]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[A]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[A]))}}finally{this.model.endUpdate()}return A};var m=Graph.prototype.selectCell;Graph.prototype.selectCell=
+function(t,z,A){if(z||A)m.apply(this,arguments);else{var E=this.getSelectionCell(),H=null,K=[],X=mxUtils.bind(this,function(ja){if(null!=this.view.getState(ja)&&(this.model.isVertex(ja)||this.model.isEdge(ja)))if(K.push(ja),ja==E)H=K.length-1;else if(t&&null==E&&0<K.length||null!=H&&t&&K.length>H||!t&&0<H)return;for(var ea=0;ea<this.model.getChildCount(ja);ea++)X(this.model.getChildAt(ja,ea))});X(this.model.root);0<K.length&&(H=null!=H?mxUtils.mod(H+(t?1:-1),K.length):0,this.setSelectionCell(K[H]))}};
+Graph.prototype.swapShapes=function(t,z,A,E,H,K,X){z=!1;if(!E&&null!=H&&1==t.length&&(E=this.view.getState(H),A=this.view.getState(t[0]),null!=E&&null!=A&&(null!=K&&mxEvent.isShiftDown(K)||"umlLifeline"==E.style.shape&&"umlLifeline"==A.style.shape)&&(E=this.getCellGeometry(H),K=this.getCellGeometry(t[0]),null!=E&&null!=K))){z=E.clone();E=K.clone();E.x=z.x;E.y=z.y;z.x=K.x;z.y=K.y;this.model.beginUpdate();try{this.model.setGeometry(H,z),this.model.setGeometry(t[0],E)}finally{this.model.endUpdate()}z=
+!0}return z};var r=Graph.prototype.moveCells;Graph.prototype.moveCells=function(t,z,A,E,H,K,X){if(this.swapShapes(t,z,A,E,H,K,X))return t;X=null!=X?X:{};if(this.isTable(H)){for(var ja=[],ea=0;ea<t.length;ea++)this.isTable(t[ea])?ja=ja.concat(this.model.getChildCells(t[ea],!0).reverse()):ja.push(t[ea]);t=ja}this.model.beginUpdate();try{ja=[];for(ea=0;ea<t.length;ea++)if(null!=H&&this.isTableRow(t[ea])){var ka=this.model.getParent(t[ea]),ta=this.getCellGeometry(t[ea]);this.isTable(ka)&&ja.push(ka);
+if(null!=ka&&null!=ta&&this.isTable(ka)&&this.isTable(H)&&(E||ka!=H)){if(!E){var Aa=this.getCellGeometry(ka);null!=Aa&&(Aa=Aa.clone(),Aa.height-=ta.height,this.model.setGeometry(ka,Aa))}Aa=this.getCellGeometry(H);null!=Aa&&(Aa=Aa.clone(),Aa.height+=ta.height,this.model.setGeometry(H,Aa));var Ea=this.model.getChildCells(H,!0);if(0<Ea.length){t[ea]=E?this.cloneCell(t[ea]):t[ea];var Ma=this.model.getChildCells(t[ea],!0),La=this.model.getChildCells(Ea[0],!0),Ia=La.length-Ma.length;if(0<Ia)for(var Fa=
+0;Fa<Ia;Fa++){var Ga=this.cloneCell(Ma[Ma.length-1]);null!=Ga&&(Ga.value="",this.model.add(t[ea],Ga))}else if(0>Ia)for(Fa=0;Fa>Ia;Fa--)this.model.remove(Ma[Ma.length+Fa-1]);Ma=this.model.getChildCells(t[ea],!0);for(Fa=0;Fa<La.length;Fa++){var Oa=this.getCellGeometry(La[Fa]),Pa=this.getCellGeometry(Ma[Fa]);null!=Oa&&null!=Pa&&(Pa=Pa.clone(),Pa.width=Oa.width,this.model.setGeometry(Ma[Fa],Pa))}}}}var Na=r.apply(this,arguments);for(ea=0;ea<ja.length;ea++)!E&&this.model.contains(ja[ea])&&0==this.model.getChildCount(ja[ea])&&
+this.model.remove(ja[ea]);E&&this.updateCustomLinks(this.createCellMapping(X,this.createCellLookup(t)),Na)}finally{this.model.endUpdate()}return Na};var x=Graph.prototype.removeCells;Graph.prototype.removeCells=function(t,z){var A=[];this.model.beginUpdate();try{for(var E=0;E<t.length;E++)if(this.isTableCell(t[E])){var H=this.model.getParent(t[E]),K=this.model.getParent(H);1==this.model.getChildCount(H)&&1==this.model.getChildCount(K)?0>mxUtils.indexOf(t,K)&&0>mxUtils.indexOf(A,K)&&A.push(K):this.labelChanged(t[E],
+"")}else{if(this.isTableRow(t[E])&&(K=this.model.getParent(t[E]),0>mxUtils.indexOf(t,K)&&0>mxUtils.indexOf(A,K))){for(var X=this.model.getChildCells(K,!0),ja=0,ea=0;ea<X.length;ea++)0<=mxUtils.indexOf(t,X[ea])&&ja++;ja==X.length&&A.push(K)}A.push(t[E])}A=x.apply(this,[A,z])}finally{this.model.endUpdate()}return A};Graph.prototype.updateCustomLinks=function(t,z,A){A=null!=A?A:new Graph;for(var E=0;E<z.length;E++)null!=z[E]&&A.updateCustomLinksForCell(t,z[E],A)};Graph.prototype.updateCustomLinksForCell=
+function(t,z){this.doUpdateCustomLinksForCell(t,z);for(var A=this.model.getChildCount(z),E=0;E<A;E++)this.updateCustomLinksForCell(t,this.model.getChildAt(z,E))};Graph.prototype.doUpdateCustomLinksForCell=function(t,z){};Graph.prototype.getAllConnectionConstraints=function(t,z){if(null!=t){z=mxUtils.getValue(t.style,"points",null);if(null!=z){t=[];try{var A=JSON.parse(z);for(z=0;z<A.length;z++){var E=A[z];t.push(new mxConnectionConstraint(new mxPoint(E[0],E[1]),2<E.length?"0"!=E[2]:!0,null,3<E.length?
+E[3]:0,4<E.length?E[4]:0))}}catch(K){}return t}if(null!=t.shape&&null!=t.shape.bounds){E=t.shape.direction;z=t.shape.bounds;var H=t.shape.scale;A=z.width/H;z=z.height/H;if(E==mxConstants.DIRECTION_NORTH||E==mxConstants.DIRECTION_SOUTH)E=A,A=z,z=E;z=t.shape.getConstraints(t.style,A,z);if(null!=z)return z;if(null!=t.shape.stencil&&null!=t.shape.stencil.constraints)return t.shape.stencil.constraints;if(null!=t.shape.constraints)return t.shape.constraints}}return null};Graph.prototype.flipEdge=function(t){if(null!=
+t){var z=this.getCurrentCellStyle(t);z=mxUtils.getValue(z,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,z,[t])}};Graph.prototype.isValidRoot=function(t){for(var z=this.model.getChildCount(t),A=0,E=0;E<z;E++){var H=this.model.getChildAt(t,E);this.model.isVertex(H)&&(H=this.getCellGeometry(H),null==H||H.relative||A++)}return 0<A||this.isContainer(t)};Graph.prototype.isValidDropTarget=
+function(t,z,A){for(var E=this.getCurrentCellStyle(t),H=!0,K=!0,X=0;X<z.length&&K;X++)H=H&&this.isTable(z[X]),K=K&&this.isTableRow(z[X]);return(1==z.length&&null!=A&&mxEvent.isShiftDown(A)&&!mxEvent.isControlDown(A)&&!mxEvent.isAltDown(A)||("1"!=mxUtils.getValue(E,"part","0")||this.isContainer(t))&&"0"!=mxUtils.getValue(E,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(t))&&!this.isTableRow(t)&&(!this.isTable(t)||K||H))&&!this.isCellLocked(t)};Graph.prototype.createGroupCell=
+function(){var t=mxGraph.prototype.createGroupCell.apply(this,arguments);t.setStyle("group");return t};Graph.prototype.isExtendParentsOnAdd=function(t){var z=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(z&&null!=t&&null!=this.layoutManager){var A=this.model.getParent(t);null!=A&&(A=this.layoutManager.getLayout(A),null!=A&&A.constructor==mxStackLayout&&(z=!1))}return z};Graph.prototype.getPreferredSizeForCell=function(t){var z=mxGraph.prototype.getPreferredSizeForCell.apply(this,
+arguments);null!=z&&(z.width+=10,z.height+=4,this.gridEnabled&&(z.width=this.snap(z.width),z.height=this.snap(z.height)));return z};Graph.prototype.turnShapes=function(t,z){var A=this.getModel(),E=[];A.beginUpdate();try{for(var H=0;H<t.length;H++){var K=t[H];if(A.isEdge(K)){var X=A.getTerminal(K,!0),ja=A.getTerminal(K,!1);A.setTerminal(K,ja,!0);A.setTerminal(K,X,!1);var ea=A.getGeometry(K);if(null!=ea){ea=ea.clone();null!=ea.points&&ea.points.reverse();var ka=ea.getTerminalPoint(!0),ta=ea.getTerminalPoint(!1);
+ea.setTerminalPoint(ka,!1);ea.setTerminalPoint(ta,!0);A.setGeometry(K,ea);var Aa=this.view.getState(K),Ea=this.view.getState(X),Ma=this.view.getState(ja);if(null!=Aa){var La=null!=Ea?this.getConnectionConstraint(Aa,Ea,!0):null,Ia=null!=Ma?this.getConnectionConstraint(Aa,Ma,!1):null;this.setConnectionConstraint(K,X,!0,Ia);this.setConnectionConstraint(K,ja,!1,La);var Fa=mxUtils.getValue(Aa.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+mxUtils.getValue(Aa.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[K]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,Fa,[K])}E.push(K)}}else if(A.isVertex(K)&&(ea=this.getCellGeometry(K),null!=ea)){if(!(this.isTable(K)||this.isTableRow(K)||this.isTableCell(K)||this.isSwimlane(K))){ea=ea.clone();ea.x+=ea.width/2-ea.height/2;ea.y+=ea.height/2-ea.width/2;var Ga=ea.width;ea.width=ea.height;ea.height=Ga;A.setGeometry(K,ea)}var Oa=this.view.getState(K);if(null!=Oa){var Pa=[mxConstants.DIRECTION_EAST,
+mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Na=mxUtils.getValue(Oa.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Pa[mxUtils.mod(mxUtils.indexOf(Pa,Na)+(z?-1:1),Pa.length)],[K])}E.push(K)}}}finally{A.endUpdate()}return E};Graph.prototype.stencilHasPlaceholders=function(t){if(null!=t&&null!=t.fgNode)for(t=t.fgNode.firstChild;null!=t;){if("text"==t.nodeName&&"1"==t.getAttribute("placeholders"))return!0;
+t=t.nextSibling}return!1};var B=Graph.prototype.processChange;Graph.prototype.processChange=function(t){if(t instanceof mxGeometryChange&&(this.isTableCell(t.cell)||this.isTableRow(t.cell))&&(null==t.previous&&null!=t.geometry||null!=t.previous&&!t.previous.equals(t.geometry))){var z=t.cell;this.isTableCell(z)&&(z=this.model.getParent(z));this.isTableRow(z)&&(z=this.model.getParent(z));var A=this.view.getState(z);null!=A&&null!=A.shape&&(this.view.invalidate(z),A.shape.bounds=null)}B.apply(this,arguments);
+t instanceof mxValueChange&&null!=t.cell&&null!=t.cell.value&&"object"==typeof t.cell.value&&this.invalidateDescendantsWithPlaceholders(t.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(t){t=this.model.getDescendants(t);if(0<t.length)for(var z=0;z<t.length;z++){var A=this.view.getState(t[z]);null!=A&&null!=A.shape&&null!=A.shape.stencil&&this.stencilHasPlaceholders(A.shape.stencil)?this.removeStateForCell(t[z]):this.isReplacePlaceholders(t[z])&&this.view.invalidate(t[z],!1,!1)}};
+Graph.prototype.replaceElement=function(t,z){z=t.ownerDocument.createElement(null!=z?z:"span");for(var A=Array.prototype.slice.call(t.attributes);attr=A.pop();)z.setAttribute(attr.nodeName,attr.nodeValue);z.innerHTML=t.innerHTML;t.parentNode.replaceChild(z,t)};Graph.prototype.processElements=function(t,z){if(null!=t){t=t.getElementsByTagName("*");for(var A=0;A<t.length;A++)z(t[A])}};Graph.prototype.updateLabelElements=function(t,z,A){t=null!=t?t:this.getSelectionCells();for(var E=document.createElement("div"),
+H=0;H<t.length;H++)if(this.isHtmlLabel(t[H])){var K=this.convertValueToString(t[H]);if(null!=K&&0<K.length){E.innerHTML=K;for(var X=E.getElementsByTagName(null!=A?A:"*"),ja=0;ja<X.length;ja++)z(X[ja]);E.innerHTML!=K&&this.cellLabelChanged(t[H],E.innerHTML)}}};Graph.prototype.cellLabelChanged=function(t,z,A){z=Graph.zapGremlins(z);this.model.beginUpdate();try{if(null!=t.value&&"object"==typeof t.value){if(this.isReplacePlaceholders(t)&&null!=t.getAttribute("placeholder"))for(var E=t.getAttribute("placeholder"),
+H=t;null!=H;){if(H==this.model.getRoot()||null!=H.value&&"object"==typeof H.value&&H.hasAttribute(E)){this.setAttributeForCell(H,E,z);break}H=this.model.getParent(H)}var K=t.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&K.hasAttribute("label_"+Graph.diagramLanguage)?K.setAttribute("label_"+Graph.diagramLanguage,z):K.setAttribute("label",z);z=K}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(t){if(null!=
+t){for(var z=new mxDictionary,A=0;A<t.length;A++)z.put(t[A],!0);var E=[];for(A=0;A<t.length;A++){var H=this.model.getParent(t[A]);null==H||z.get(H)||(z.put(H,!0),E.push(H))}for(A=0;A<E.length;A++)if(H=this.view.getState(E[A]),null!=H&&(this.model.isEdge(H.cell)||this.model.isVertex(H.cell))&&this.isCellDeletable(H.cell)&&this.isTransparentState(H)){for(var K=!0,X=0;X<this.model.getChildCount(H.cell)&&K;X++)z.get(this.model.getChildAt(H.cell,X))||(K=!1);K&&t.push(H.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
+arguments)};Graph.prototype.removeCellsAfterUngroup=function(t){for(var z=[],A=0;A<t.length;A++)this.isCellDeletable(t[A])&&this.isTransparentState(this.view.getState(t[A]))&&z.push(t[A]);t=z;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(t,z){this.setAttributeForCell(t,"link",z)};Graph.prototype.setTooltipForCell=function(t,z){var A="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(t.value)&&t.value.hasAttribute("tooltip_"+
+Graph.diagramLanguage)&&(A="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(t,A,z)};Graph.prototype.getAttributeForCell=function(t,z,A){t=null!=t.value&&"object"===typeof t.value?t.value.getAttribute(z):null;return null!=t?t:A};Graph.prototype.setAttributeForCell=function(t,z,A){if(null!=t.value&&"object"==typeof t.value)var E=t.value.cloneNode(!0);else E=mxUtils.createXmlDocument().createElement("UserObject"),E.setAttribute("label",t.value||"");null!=A?E.setAttribute(z,A):E.removeAttribute(z);
+this.model.setValue(t,E)};var C=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(t,z,A,E){this.getModel();if(mxEvent.isAltDown(z))return null;for(var H=0;H<t.length;H++){var K=this.model.getParent(t[H]);if(this.model.isEdge(K)&&0>mxUtils.indexOf(t,K))return null}K=C.apply(this,arguments);var X=!0;for(H=0;H<t.length&&X;H++)X=X&&this.isTableRow(t[H]);X&&(this.isTableCell(K)&&(K=this.model.getParent(K)),this.isTableRow(K)&&(K=this.model.getParent(K)),this.isTable(K)||(K=null));return K};
+Graph.prototype.click=function(t){mxGraph.prototype.click.call(this,t);this.firstClickState=t.getState();this.firstClickSource=t.getSource()};Graph.prototype.dblClick=function(t,z){this.isEnabled()&&(z=this.insertTextForEvent(t,z),mxGraph.prototype.dblClick.call(this,t,z))};Graph.prototype.insertTextForEvent=function(t,z){var A=mxUtils.convertPoint(this.container,mxEvent.getClientX(t),mxEvent.getClientY(t));if(null!=t&&!this.model.isVertex(z)){var E=this.model.isEdge(z)?this.view.getState(z):null,
+H=mxEvent.getSource(t);this.firstClickState!=E||this.firstClickSource!=H||null!=E&&null!=E.text&&null!=E.text.node&&null!=E.text.boundingBox&&(mxUtils.contains(E.text.boundingBox,A.x,A.y)||mxUtils.isAncestorNode(E.text.node,mxEvent.getSource(t)))||(null!=E||this.isCellLocked(this.getDefaultParent()))&&(null==E||this.isCellLocked(E.cell))||!(null!=E||mxClient.IS_SVG&&H==this.view.getCanvas().ownerSVGElement)||(null==E&&(E=this.view.getState(this.getCellAt(A.x,A.y))),z=this.addText(A.x,A.y,E))}return z};
+Graph.prototype.getInsertPoint=function(){var t=this.getGridSize(),z=this.container.scrollLeft/this.view.scale-this.view.translate.x,A=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var E=this.getPageLayout(),H=this.getPageSize();z=Math.max(z,E.x*H.width);A=Math.max(A,E.y*H.height)}return new mxPoint(this.snap(z+t),this.snap(A+t))};Graph.prototype.getFreeInsertPoint=function(){var t=this.view,z=this.getGraphBounds(),A=this.getInsertPoint(),E=this.snap(Math.round(Math.max(A.x,
+z.x/t.scale-t.translate.x+(0==z.width?2*this.gridSize:0))));t=this.snap(Math.round(Math.max(A.y,(z.y+z.height)/t.scale-t.translate.y+2*this.gridSize)));return new mxPoint(E,t)};Graph.prototype.getCenterInsertPoint=function(t){t=null!=t?t:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
+2)/this.view.scale-this.view.translate.y-t.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-t.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(t,z,A){var E=new mxCell;E.value="Text";E.geometry=new mxGeometry(0,0,0,0);E.vertex=!0;if(null!=A&&this.model.isEdge(A.cell)){E.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
+E.geometry.relative=!0;E.connectable=!1;var H=this.view.getRelativePoint(A,t,z);E.geometry.x=Math.round(1E4*H.x)/1E4;E.geometry.y=Math.round(H.y);E.geometry.offset=new mxPoint(0,0);H=this.view.getPoint(A,E.geometry);var K=this.view.scale;E.geometry.offset=new mxPoint(Math.round((t-H.x)/K),Math.round((z-H.y)/K))}else H=this.view.translate,E.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",E.geometry.width=40,E.geometry.height=20,E.geometry.x=Math.round(t/this.view.scale)-
+H.x-(null!=A?A.origin.x:0),E.geometry.y=Math.round(z/this.view.scale)-H.y-(null!=A?A.origin.y:0),E.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([E],null!=A?A.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[E])),this.autoSizeCell(E)}finally{this.getModel().endUpdate()}return E};Graph.prototype.addClickHandler=function(t,z,A){var E=mxUtils.bind(this,function(){var ea=this.container.getElementsByTagName("a");if(null!=ea)for(var ka=0;ka<ea.length;ka++){var ta=
+this.getAbsoluteUrl(ea[ka].getAttribute("href"));null!=ta&&(ea[ka].setAttribute("rel",this.linkRelation),ea[ka].setAttribute("href",ta),null!=z&&mxEvent.addGestureListeners(ea[ka],null,null,z))}});this.model.addListener(mxEvent.CHANGE,E);E();var H=this.container.style.cursor,K=this.getTolerance(),X=this,ja={currentState:null,currentLink:null,currentTarget:null,highlight:null!=t&&""!=t&&t!=mxConstants.NONE?new mxCellHighlight(X,t,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(ea){var ka=
+ea.sourceState;if(null==ka||null==X.getLinkForCell(ka.cell))ea=X.getCellAt(ea.getGraphX(),ea.getGraphY(),null,null,null,function(ta,Aa,Ea){return null==X.getLinkForCell(ta.cell)}),ka=null==ka||X.model.isAncestor(ea,ka.cell)?X.view.getState(ea):null;ka!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=ka,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(ea,ka){this.startX=ka.getGraphX();this.startY=ka.getGraphY();this.scrollLeft=X.container.scrollLeft;
+this.scrollTop=X.container.scrollTop;null==this.currentLink&&"auto"==X.container.style.overflow&&(X.container.style.cursor="move");this.updateCurrentState(ka)},mouseMove:function(ea,ka){if(X.isMouseDown)null!=this.currentLink&&(ea=Math.abs(this.startX-ka.getGraphX()),ka=Math.abs(this.startY-ka.getGraphY()),(ea>K||ka>K)&&this.clear());else{for(ea=ka.getSource();null!=ea&&"a"!=ea.nodeName.toLowerCase();)ea=ea.parentNode;null!=ea?this.clear():(null!=X.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&
+X.tooltipHandler.reset(ka,!0,this.currentState),(null==this.currentState||ka.getState()!=this.currentState&&null!=ka.sourceState||!X.intersects(this.currentState,ka.getGraphX(),ka.getGraphY()))&&this.updateCurrentState(ka))}},mouseUp:function(ea,ka){var ta=ka.getSource();for(ea=ka.getEvent();null!=ta&&"a"!=ta.nodeName.toLowerCase();)ta=ta.parentNode;null==ta&&Math.abs(this.scrollLeft-X.container.scrollLeft)<K&&Math.abs(this.scrollTop-X.container.scrollTop)<K&&(null==ka.sourceState||!ka.isSource(ka.sourceState.control))&&
+((mxEvent.isLeftMouseButton(ea)||mxEvent.isMiddleMouseButton(ea))&&!mxEvent.isPopupTrigger(ea)||mxEvent.isTouchEvent(ea))&&(null!=this.currentLink?(ta=X.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&ta||null==z||z(ea,this.currentLink),mxEvent.isConsumed(ea)||(ea=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(ea)?"_blank":ta?X.linkTarget:"_top",X.openLink(this.currentLink,ea),ka.consume())):null!=A&&!ka.isConsumed()&&Math.abs(this.scrollLeft-X.container.scrollLeft)<
+K&&Math.abs(this.scrollTop-X.container.scrollTop)<K&&Math.abs(this.startX-ka.getGraphX())<K&&Math.abs(this.startY-ka.getGraphY())<K&&A(ka.getEvent()));this.clear()},activate:function(ea){this.currentLink=X.getAbsoluteUrl(X.getLinkForCell(ea.cell));null!=this.currentLink&&(this.currentTarget=X.getLinkTargetForCell(ea.cell),X.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(ea))},clear:function(){null!=X.container&&(X.container.style.cursor=H);this.currentLink=this.currentState=
+this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=X.tooltipHandler&&X.tooltipHandler.hide()}};X.click=function(ea){};X.addMouseListener(ja);mxEvent.addListener(document,"mouseleave",function(ea){ja.clear()})};Graph.prototype.duplicateCells=function(t,z){t=null!=t?t:this.getSelectionCells();z=null!=z?z:!0;for(var A=0;A<t.length;A++)this.isTableCell(t[A])&&(t[A]=this.model.getParent(t[A]));t=this.model.getTopmostCells(t);var E=this.getModel(),H=this.gridSize,K=[];E.beginUpdate();
+try{var X={},ja=this.createCellLookup(t),ea=this.cloneCells(t,!1,X,!0);for(A=0;A<t.length;A++){var ka=E.getParent(t[A]);if(null!=ka){var ta=this.moveCells([ea[A]],H,H,!1)[0];K.push(ta);if(z)E.add(ka,ea[A]);else{var Aa=ka.getIndex(t[A]);E.add(ka,ea[A],Aa+1)}if(this.isTable(ka)){var Ea=this.getCellGeometry(ea[A]),Ma=this.getCellGeometry(ka);null!=Ea&&null!=Ma&&(Ma=Ma.clone(),Ma.height+=Ea.height,E.setGeometry(ka,Ma))}}else K.push(ea[A])}this.updateCustomLinks(this.createCellMapping(X,ja),ea,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,
+"cells",ea))}finally{E.endUpdate()}return K};Graph.prototype.insertImage=function(t,z,A){if(null!=t&&null!=this.cellEditor.textarea){for(var E=this.cellEditor.textarea.getElementsByTagName("img"),H=[],K=0;K<E.length;K++)H.push(E[K]);document.execCommand("insertimage",!1,t);t=this.cellEditor.textarea.getElementsByTagName("img");if(t.length==H.length+1)for(K=t.length-1;0<=K;K--)if(0==K||t[K]!=H[K-1]){t[K].setAttribute("width",z);t[K].setAttribute("height",A);break}}};Graph.prototype.insertLink=function(t){if(null!=
+this.cellEditor.textarea)if(0==t.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var z=this.cellEditor.textarea.getElementsByTagName("a"),A=[],E=0;E<z.length;E++)A.push(z[E]);document.execCommand("createlink",!1,mxUtils.trim(t));z=this.cellEditor.textarea.getElementsByTagName("a");if(z.length==A.length+1)for(E=z.length-1;0<=E;E--)if(z[E]!=A[E-1]){for(z=z[E].getElementsByTagName("a");0<z.length;){for(A=z[0].parentNode;null!=z[0].firstChild;)A.insertBefore(z[0].firstChild,z[0]);
+A.removeChild(z[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(t))};Graph.prototype.isCellResizable=function(t){var z=mxGraph.prototype.isCellResizable.apply(this,arguments),A=this.getCurrentCellStyle(t);return!this.isTableCell(t)&&!this.isTableRow(t)&&(z||"0"!=mxUtils.getValue(A,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==A[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(t,z){null==z&&(z=this.getSelectionCells());if(null!=z&&1<z.length){for(var A=[],E=null,
+H=null,K=0;K<z.length;K++)if(this.getModel().isVertex(z[K])){var X=this.view.getState(z[K]);if(null!=X){var ja=t?X.getCenterX():X.getCenterY();E=null!=E?Math.max(E,ja):ja;H=null!=H?Math.min(H,ja):ja;A.push(X)}}if(2<A.length){A.sort(function(Aa,Ea){return t?Aa.x-Ea.x:Aa.y-Ea.y});X=this.view.translate;ja=this.view.scale;H=H/ja-(t?X.x:X.y);E=E/ja-(t?X.x:X.y);this.getModel().beginUpdate();try{var ea=(E-H)/(A.length-1);E=H;for(K=1;K<A.length-1;K++){var ka=this.view.getState(this.model.getParent(A[K].cell)),
+ta=this.getCellGeometry(A[K].cell);E+=ea;null!=ta&&null!=ka&&(ta=ta.clone(),t?ta.x=Math.round(E-ta.width/2)-ka.origin.x:ta.y=Math.round(E-ta.height/2)-ka.origin.y,this.getModel().setGeometry(A[K].cell,ta))}}finally{this.getModel().endUpdate()}}}return z};Graph.prototype.isCloneEvent=function(t){return mxClient.IS_MAC&&mxEvent.isMetaDown(t)||mxEvent.isControlDown(t)};Graph.prototype.createSvgImageExport=function(){var t=new mxImageExport;t.getLinkForCellState=mxUtils.bind(this,function(z,A){return this.getLinkForCell(z.cell)});
+return t};Graph.prototype.parseBackgroundImage=function(t){var z=null;null!=t&&0<t.length&&(t=JSON.parse(t),z=new mxImage(t.src,t.width,t.height));return z};Graph.prototype.getBackgroundImageObject=function(t){return t};Graph.prototype.getSvg=function(t,z,A,E,H,K,X,ja,ea,ka,ta,Aa,Ea,Ma){var La=null;if(null!=Ma)for(La=new mxDictionary,ta=0;ta<Ma.length;ta++)La.put(Ma[ta],!0);if(Ma=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{z=null!=z?z:1;A=null!=A?
+A:0;H=null!=H?H:!0;K=null!=K?K:!0;X=null!=X?X:!0;ka=null!=ka?ka:!1;var Ia="page"==Ea?this.view.getBackgroundPageBounds():K&&null==La||E||"diagram"==Ea?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),Fa=this.view.scale;"diagram"==Ea&&null!=this.backgroundImage&&(Ia=mxRectangle.fromRectangle(Ia),Ia.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*Fa,(this.view.translate.y+this.backgroundImage.y)*Fa,this.backgroundImage.width*Fa,this.backgroundImage.height*Fa)));
+if(null==Ia)throw Error(mxResources.get("drawingEmpty"));E=z/Fa;Ea=H?-.5:0;var Ga=Graph.createSvgNode(Ea,Ea,Math.max(1,Math.ceil(Ia.width*E)+2*A)+(ka&&0==A?5:0),Math.max(1,Math.ceil(Ia.height*E)+2*A)+(ka&&0==A?5:0),t),Oa=Ga.ownerDocument,Pa=null!=Oa.createElementNS?Oa.createElementNS(mxConstants.NS_SVG,"g"):Oa.createElement("g");Ga.appendChild(Pa);var Na=this.createSvgCanvas(Pa);Na.foOffset=H?-.5:0;Na.textOffset=H?-.5:0;Na.imageOffset=H?-.5:0;Na.translate(Math.floor(A/z-Ia.x/Fa),Math.floor(A/z-Ia.y/
+Fa));var Sa=document.createElement("div"),eb=Na.getAlternateText;Na.getAlternateText=function(cb,mb,Za,ib,gb,Wa,qb,tb,nb,fb,Ra,rb,xb){if(null!=Wa&&0<this.state.fontSize)try{mxUtils.isNode(Wa)?Wa=Wa.innerText:(Sa.innerHTML=Wa,Wa=mxUtils.extractTextWithWhitespace(Sa.childNodes));for(var kb=Math.ceil(2*ib/this.state.fontSize),hb=[],ob=0,lb=0;(0==kb||ob<kb)&&lb<Wa.length;){var sb=Wa.charCodeAt(lb);if(10==sb||13==sb){if(0<ob)break}else hb.push(Wa.charAt(lb)),255>sb&&ob++;lb++}hb.length<Wa.length&&1<Wa.length-
+hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(c){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var ab=this.backgroundImage;if(null!=ab){t=Fa/z;var pb=this.view.translate;Ea=new mxRectangle((ab.x+pb.x)*t,(ab.y+pb.y)*t,ab.width*t,ab.height*t);mxUtils.intersects(Ia,Ea)&&Na.image(ab.x+pb.x,ab.y+pb.y,ab.width,ab.height,ab.src,!0)}Na.scale(E);Na.textEnabled=X;ja=null!=ja?ja:this.createSvgImageExport();var ub=ja.drawCellState,vb=ja.getLinkForCellState;ja.getLinkForCellState=
+function(cb,mb){var Za=vb.apply(this,arguments);return null==Za||cb.view.graph.isCustomLink(Za)?null:Za};ja.getLinkTargetForCellState=function(cb,mb){return cb.view.graph.getLinkTargetForCell(cb.cell)};ja.drawCellState=function(cb,mb){for(var Za=cb.view.graph,ib=null!=La?La.get(cb.cell):Za.isCellSelected(cb.cell),gb=Za.model.getParent(cb.cell);!(K&&null==La||ib)&&null!=gb;)ib=null!=La?La.get(gb):Za.isCellSelected(gb),gb=Za.model.getParent(gb);(K&&null==La||ib)&&ub.apply(this,arguments)};ja.drawState(this.getView().getState(this.model.root),
+Na);this.updateSvgLinks(Ga,ea,!0);this.addForeignObjectWarning(Na,Ga);return Ga}finally{Ma&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(t,z){if("0"!=urlParams["svg-warning"]&&0<z.getElementsByTagName("foreignObject").length){var A=t.createElement("switch"),E=t.createElement("g");E.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var H=t.createElement("a");H.setAttribute("transform","translate(0,-5)");
+null==H.setAttributeNS||z.ownerDocument!=document&&null==document.documentMode?(H.setAttribute("xlink:href",Graph.foreignObjectWarningLink),H.setAttribute("target","_blank")):(H.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),H.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));t=t.createElement("text");t.setAttribute("text-anchor","middle");t.setAttribute("font-size","10px");t.setAttribute("x","50%");t.setAttribute("y","100%");mxUtils.write(t,Graph.foreignObjectWarningText);
+A.appendChild(E);H.appendChild(t);A.appendChild(H);z.appendChild(A)}};Graph.prototype.updateSvgLinks=function(t,z,A){t=t.getElementsByTagName("a");for(var E=0;E<t.length;E++)if(null==t[E].getAttribute("target")){var H=t[E].getAttribute("href");null==H&&(H=t[E].getAttribute("xlink:href"));null!=H&&(null!=z&&/^https?:\/\//.test(H)?t[E].setAttribute("target",z):A&&this.isCustomLink(H)&&t[E].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(t){t=new mxSvgCanvas2D(t);
t.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;t.pointerEvents=!0;return t};Graph.prototype.getSelectedElement=function(){var t=null;if(window.getSelection){var z=window.getSelection();z.getRangeAt&&z.rangeCount&&(t=z.getRangeAt(0).commonAncestorContainer)}else document.selection&&(t=document.selection.createRange().parentElement());return t};Graph.prototype.getSelectedEditingElement=function(){for(var t=this.getSelectedElement();null!=t&&t.nodeType!=mxConstants.NODETYPE_ELEMENT;)t=t.parentNode;
-null!=t&&t==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(t=this.cellEditor.textarea.firstChild);return t};Graph.prototype.getParentByName=function(t,z,B){for(;null!=t&&t.nodeName!=z;){if(t==B)return null;t=t.parentNode}return t};Graph.prototype.getParentByNames=function(t,z,B){for(;null!=t&&!(0<=mxUtils.indexOf(z,t.nodeName));){if(t==B)return null;t=t.parentNode}return t};Graph.prototype.selectNode=
-function(t){var z=null;if(window.getSelection){if(z=window.getSelection(),z.getRangeAt&&z.rangeCount){var B=document.createRange();B.selectNode(t);z.removeAllRanges();z.addRange(B)}}else(z=document.selection)&&"Control"!=z.type&&(t=z.createRange(),t.collapse(!0),B=z.createRange(),B.setEndPoint("StartToStart",t),B.select())};Graph.prototype.flipEdgePoints=function(t,z,B){var E=this.getCellGeometry(t);if(null!=E){E=E.clone();if(null!=E.points)for(var G=0;G<E.points.length;G++)z?E.points[G].x=B+(B-E.points[G].x):
-E.points[G].y=B+(B-E.points[G].y);G=function(M){null!=M&&(z?M.x=B+(B-M.x):M.y=B+(B-M.y))};G(E.getTerminalPoint(!0));G(E.getTerminalPoint(!1));this.model.setGeometry(t,E)}};Graph.prototype.flipChildren=function(t,z,B){this.model.beginUpdate();try{for(var E=this.model.getChildCount(t),G=0;G<E;G++){var M=this.model.getChildAt(t,G);if(this.model.isEdge(M))this.flipEdgePoints(M,z,B);else{var X=this.getCellGeometry(M);null!=X&&(X=X.clone(),z?X.x=B+(B-X.x-X.width):X.y=B+(B-X.y-X.height),this.model.setGeometry(M,
-X))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(t,z){this.model.beginUpdate();try{t=this.model.getTopmostCells(t);for(var B=[],E=0;E<t.length;E++)if(this.model.isEdge(t[E])){var G=this.view.getState(t[E]);null!=G&&this.flipEdgePoints(t[E],z,(z?G.getCenterX():G.getCenterY())/this.view.scale-(z?G.origin.x:G.origin.y)-(z?this.view.translate.x:this.view.translate.y))}else{var M=this.getCellGeometry(t[E]);null!=M&&this.flipChildren(t[E],z,z?M.getCenterX()-M.x:M.getCenterY()-M.y);
-B.push(t[E])}this.toggleCellStyles(z?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,B)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(t,z){var B=null;if(null!=t&&0<t.length){this.model.beginUpdate();try{for(var E=0;E<t.length;E++){var G=this.model.getParent(t[E]);if(this.isTable(G)){var M=this.getCellGeometry(t[E]),X=this.getCellGeometry(G);null!=M&&null!=X&&(X=X.clone(),X.height-=M.height,this.model.setGeometry(G,X))}}var ia=this.selectParentAfterDelete?this.model.getParents(t):
-null;this.removeCells(t,z)}finally{this.model.endUpdate()}if(null!=ia)for(B=[],E=0;E<ia.length;E++)this.model.contains(ia[E])&&(this.model.isVertex(ia[E])||this.model.isEdge(ia[E]))&&B.push(ia[E])}return B};Graph.prototype.insertTableColumn=function(t,z){var B=this.getModel();B.beginUpdate();try{var E=t,G=0;if(this.isTableCell(t)){var M=B.getParent(t);E=B.getParent(M);G=mxUtils.indexOf(B.getChildCells(M,!0),t)}else this.isTableRow(t)?E=B.getParent(t):t=B.getChildCells(E,!0)[0],z||(G=B.getChildCells(t,
-!0).length-1);var X=B.getChildCells(E,!0),ia=Graph.minTableColumnWidth;for(t=0;t<X.length;t++){var da=B.getChildCells(X[t],!0)[G],ja=B.cloneCell(da,!1),sa=this.getCellGeometry(ja);ja.value=null;ja.style=mxUtils.setStyle(mxUtils.setStyle(ja.style,"rowspan",null),"colspan",null);if(null!=sa){null!=sa.alternateBounds&&(sa.width=sa.alternateBounds.width,sa.height=sa.alternateBounds.height,sa.alternateBounds=null);ia=sa.width;var Ba=this.getCellGeometry(X[t]);null!=Ba&&(sa.height=Ba.height)}B.add(X[t],
-ja,G+(z?0:1))}var Da=this.getCellGeometry(E);null!=Da&&(Da=Da.clone(),Da.width+=ia,B.setGeometry(E,Da))}finally{B.endUpdate()}};Graph.prototype.deleteLane=function(t){var z=this.getModel();z.beginUpdate();try{var B=null;B="stackLayout"==this.getCurrentCellStyle(t).childLayout?t:z.getParent(t);var E=z.getChildCells(B,!0);0==E.length?z.remove(B):(B==t&&(t=E[E.length-1]),z.remove(t))}finally{z.endUpdate()}};Graph.prototype.insertLane=function(t,z){var B=this.getModel();B.beginUpdate();try{var E=null;
-if("stackLayout"==this.getCurrentCellStyle(t).childLayout){E=t;var G=B.getChildCells(E,!0);t=G[z?0:G.length-1]}else E=B.getParent(t);var M=E.getIndex(t);t=B.cloneCell(t,!1);t.value=null;B.add(E,t,M+(z?0:1))}finally{B.endUpdate()}};Graph.prototype.insertTableRow=function(t,z){var B=this.getModel();B.beginUpdate();try{var E=t,G=t;if(this.isTableCell(t))G=B.getParent(t),E=B.getParent(G);else if(this.isTableRow(t))E=B.getParent(t);else{var M=B.getChildCells(E,!0);G=M[z?0:M.length-1]}var X=B.getChildCells(G,
-!0),ia=E.getIndex(G);G=B.cloneCell(G,!1);G.value=null;var da=this.getCellGeometry(G);if(null!=da){for(M=0;M<X.length;M++){t=B.cloneCell(X[M],!1);t.value=null;t.style=mxUtils.setStyle(mxUtils.setStyle(t.style,"rowspan",null),"colspan",null);var ja=this.getCellGeometry(t);null!=ja&&(null!=ja.alternateBounds&&(ja.width=ja.alternateBounds.width,ja.height=ja.alternateBounds.height,ja.alternateBounds=null),ja.height=da.height);G.insert(t)}B.add(E,G,ia+(z?0:1));var sa=this.getCellGeometry(E);null!=sa&&(sa=
-sa.clone(),sa.height+=da.height,B.setGeometry(E,sa))}}finally{B.endUpdate()}};Graph.prototype.deleteTableColumn=function(t){var z=this.getModel();z.beginUpdate();try{var B=t,E=t;this.isTableCell(t)&&(E=z.getParent(t));this.isTableRow(E)&&(B=z.getParent(E));var G=z.getChildCells(B,!0);if(0==G.length)z.remove(B);else{this.isTableRow(E)||(E=G[0]);var M=z.getChildCells(E,!0);if(1>=M.length)z.remove(B);else{var X=M.length-1;this.isTableCell(t)&&(X=mxUtils.indexOf(M,t));for(E=t=0;E<G.length;E++){var ia=
-z.getChildCells(G[E],!0)[X];z.remove(ia);var da=this.getCellGeometry(ia);null!=da&&(t=Math.max(t,da.width))}var ja=this.getCellGeometry(B);null!=ja&&(ja=ja.clone(),ja.width-=t,z.setGeometry(B,ja))}}}finally{z.endUpdate()}};Graph.prototype.deleteTableRow=function(t){var z=this.getModel();z.beginUpdate();try{var B=t,E=t;this.isTableCell(t)&&(t=E=z.getParent(t));this.isTableRow(t)&&(B=z.getParent(E));var G=z.getChildCells(B,!0);if(1>=G.length)z.remove(B);else{this.isTableRow(E)||(E=G[G.length-1]);z.remove(E);
-t=0;var M=this.getCellGeometry(E);null!=M&&(t=M.height);var X=this.getCellGeometry(B);null!=X&&(X=X.clone(),X.height-=t,z.setGeometry(B,X))}}finally{z.endUpdate()}};Graph.prototype.insertRow=function(t,z){for(var B=t.tBodies[0],E=B.rows[0].cells,G=t=0;G<E.length;G++){var M=E[G].getAttribute("colspan");t+=null!=M?parseInt(M):1}z=B.insertRow(z);for(G=0;G<t;G++)mxUtils.br(z.insertCell(-1));return z.cells[0]};Graph.prototype.deleteRow=function(t,z){t.tBodies[0].deleteRow(z)};Graph.prototype.insertColumn=
-function(t,z){var B=t.tHead;if(null!=B)for(var E=0;E<B.rows.length;E++){var G=document.createElement("th");B.rows[E].appendChild(G);mxUtils.br(G)}t=t.tBodies[0];for(B=0;B<t.rows.length;B++)E=t.rows[B].insertCell(z),mxUtils.br(E);return t.rows[0].cells[0<=z?z:t.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(t,z){if(0<=z){t=t.tBodies[0].rows;for(var B=0;B<t.length;B++)t[B].cells.length>z&&t[B].deleteCell(z)}};Graph.prototype.pasteHtmlAtCaret=function(t){if(window.getSelection){var z=
-window.getSelection();if(z.getRangeAt&&z.rangeCount){z=z.getRangeAt(0);z.deleteContents();var B=document.createElement("div");B.innerHTML=t;t=document.createDocumentFragment();for(var E;E=B.firstChild;)lastNode=t.appendChild(E);z.insertNode(t)}}else(z=document.selection)&&"Control"!=z.type&&z.createRange().pasteHTML(t)};Graph.prototype.createLinkForHint=function(t,z){function B(G,M){G.length>M&&(G=G.substring(0,Math.round(M/2))+"..."+G.substring(G.length-Math.round(M/4)));return G}t=null!=t?t:"javascript:void(0);";
-if(null==z||0==z.length)z=this.isCustomLink(t)?this.getLinkTitle(t):t;var E=document.createElement("a");E.setAttribute("rel",this.linkRelation);E.setAttribute("href",this.getAbsoluteUrl(t));E.setAttribute("title",B(this.isCustomLink(t)?this.getLinkTitle(t):t,80));null!=this.linkTarget&&E.setAttribute("target",this.linkTarget);mxUtils.write(E,B(z,40));this.isCustomLink(t)&&mxEvent.addListener(E,"click",mxUtils.bind(this,function(G){this.customLinkClicked(t);mxEvent.consume(G)}));return E};Graph.prototype.initTouch=
-function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(M,X){this.popupMenuHandler.hideMenu()});var t=this.updateMouseEvent;this.updateMouseEvent=function(M){M=t.apply(this,arguments);if(mxEvent.isTouchEvent(M.getEvent())&&null==M.getState()){var X=this.getCellAt(M.graphX,M.graphY);null!=X&&this.isSwimlane(X)&&this.hitsSwimlaneContent(X,M.graphX,M.graphY)||(M.state=this.view.getState(X),null!=M.state&&
-null!=M.state.shape&&(this.container.style.cursor=M.state.shape.node.style.cursor))}null==M.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return M};var z=!1,B=!1,E=!1,G=this.fireMouseEvent;this.fireMouseEvent=function(M,X,ia){M==mxEvent.MOUSE_DOWN&&(X=this.updateMouseEvent(X),z=this.isCellSelected(X.getCell()),B=this.isSelectionEmpty(),E=this.popupMenuHandler.isMenuShowing());G.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(M,X){var ia=mxEvent.isMouseEvent(X.getEvent());
-this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==X.getState()||!X.isSource(X.getState().control))&&(this.popupMenuHandler.popupTrigger||!E&&!ia&&(B&&null==X.getCell()&&this.isSelectionEmpty()||z&&this.isCellSelected(X.getCell())));ia=!z||ia?null:mxUtils.bind(this,function(da){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var ja=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(X.getX()+ja.x+1,X.getY()+ja.y+1,da,X.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,
-[M,X,ia])})};mxCellEditor.prototype.isContentEditing=function(){var t=this.graph.view.getState(this.editingCell);return null!=t&&1==t.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var t="";window.getSelection?t=window.getSelection():document.getSelection?t=document.getSelection():document.selection&&(t=document.selection.createRange().text);
-return""!=t};mxCellEditor.prototype.insertTab=function(t){var z=this.textarea.ownerDocument.defaultView.getSelection(),B=z.getRangeAt(0),E="\t";if(null!=t)for(E="";0<t;)E+=" ",t--;t=document.createElement("span");t.style.whiteSpace="pre";t.appendChild(document.createTextNode(E));B.insertNode(t);B.setStartAfter(t);B.setEndAfter(t);z.removeAllRanges();z.addRange(B)};mxCellEditor.prototype.alignText=function(t,z){var B=null!=z&&mxEvent.isShiftDown(z);if(B||null!=window.getSelection&&null!=window.getSelection().containsNode){var E=
-!0;this.graph.processElements(this.textarea,function(G){B||window.getSelection().containsNode(G,!0)?(G.removeAttribute("align"),G.style.textAlign=null):E=!1});E&&this.graph.cellEditor.setAlign(t)}document.execCommand("justify"+t.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var t=window.getSelection();if(t.getRangeAt&&t.rangeCount){for(var z=[],B=0,E=t.rangeCount;B<E;++B)z.push(t.getRangeAt(B));return z}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();
-return null};mxCellEditor.prototype.restoreSelection=function(t){try{if(t)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var z=0,B=t.length;z<B;++z)sel.addRange(t[z])}else document.selection&&t.select&&t.select()}catch(E){}};var F=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(t){null!=t.text&&(t.text.replaceLinefeeds="0"!=mxUtils.getValue(t.style,"nl2Br","1"));F.apply(this,arguments)};var K=mxConstraintHandler.prototype.update;
-mxConstraintHandler.prototype.update=function(t,z){this.isKeepFocusEvent(t)||!mxEvent.isAltDown(t.getEvent())?K.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(t){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var D=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(t,z){t=this.graph.getStartEditingCell(t,z);D.apply(this,arguments);var B=this.graph.view.getState(t);
-this.textarea.className=null!=B&&1==B.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(t);B=this.graph.getModel().getParent(t);var E=this.graph.getCellGeometry(t);if(this.graph.getModel().isEdge(B)&&null!=E&&E.relative||this.graph.getModel().isEdge(t))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var O=mxCellEditor.prototype.installListeners;
-mxCellEditor.prototype.installListeners=function(t){function z(G,M){M.originalNode=G;G=G.firstChild;for(var X=M.firstChild;null!=G&&null!=X;)z(G,X),G=G.nextSibling,X=X.nextSibling;return M}function B(G,M){if(null!=G)if(M.originalNode!=G)E(G);else for(G=G.firstChild,M=M.firstChild;null!=G;){var X=G.nextSibling;null==M?E(G):(B(G,M),M=M.nextSibling);G=X}}function E(G){for(var M=G.firstChild;null!=M;){var X=M.nextSibling;E(M);M=X}1==G.nodeType&&("BR"===G.nodeName||null!=G.firstChild)||3==G.nodeType&&
-0!=mxUtils.trim(mxUtils.getTextContent(G)).length?(3==G.nodeType&&mxUtils.setTextContent(G,mxUtils.getTextContent(G).replace(/\n|\r/g,"")),1==G.nodeType&&(G.removeAttribute("style"),G.removeAttribute("class"),G.removeAttribute("width"),G.removeAttribute("cellpadding"),G.removeAttribute("cellspacing"),G.removeAttribute("border"))):G.parentNode.removeChild(G)}O.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(G){var M=
-z(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]>")?B(this.textarea,M):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var t=this.graph.view.getState(this.editingCell);if(null!=t){var z=null!=t&&"0"!=mxUtils.getValue(t.style,"nl2Br","1"),B=this.saveSelection();if(this.codeViewMode){ia=
-mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ia.length&&"\n"==ia.charAt(ia.length-1)&&(ia=ia.substring(0,ia.length-1));ia=this.graph.sanitizeHtml(z?ia.replace(/\n/g,"<br/>"):ia,!0);this.textarea.className="mxCellEditor geContentEditable";da=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);z=mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var E=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),
-G=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,M=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,X=[];(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&X.push("underline");(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&X.push("line-through");this.textarea.style.lineHeight=
-mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(da*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(da)+"px";this.textarea.style.textDecoration=X.join(" ");this.textarea.style.fontWeight=G?"bold":"normal";this.textarea.style.fontStyle=M?"italic":"";this.textarea.style.fontFamily=z;this.textarea.style.textAlign=E;this.textarea.style.padding="0px";this.textarea.innerHTML!=ia&&(this.textarea.innerHTML=ia,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=
-this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ia=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ia=mxUtils.replaceTrailingNewlines(ia,"<div><br></div>"));ia=this.graph.sanitizeHtml(z?ia.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ia,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";
-var da=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(da*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(da)+"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!=
-ia&&(this.textarea.innerHTML=ia);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=B;this.resize()}};var Q=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(t,z){if(null!=this.textarea)if(t=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=t){var B=t.view.scale;this.bounds=mxRectangle.fromRectangle(t);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=
-160*B;this.bounds.height=60*B;var E=null!=t.text?t.text.margin:null;null==E&&(E=mxUtils.getAlignmentAsPoint(mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(t.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=E.x*this.bounds.width;this.bounds.y+=E.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/B)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/B)+"px";this.textarea.style.overflow=
-"auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/B)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*B);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/B)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*B);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("+B+","+B+")")}else this.textarea.style.height="",this.textarea.style.overflow="",Q.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(t,z){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var B=this.graph.getEditingValue(t.cell,z);"1"==
-mxUtils.getValue(t.style,"nl2Br","1")&&(B=B.replace(/\n/g,"<br/>"));return B=this.graph.sanitizeHtml(B,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(t){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var z=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return z="1"==mxUtils.getValue(t.style,"nl2Br","1")?z.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):z.replace(/\r\n/g,
+null!=t&&t==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(t=this.cellEditor.textarea.firstChild);return t};Graph.prototype.getParentByName=function(t,z,A){for(;null!=t&&t.nodeName!=z;){if(t==A)return null;t=t.parentNode}return t};Graph.prototype.getParentByNames=function(t,z,A){for(;null!=t&&!(0<=mxUtils.indexOf(z,t.nodeName));){if(t==A)return null;t=t.parentNode}return t};Graph.prototype.selectNode=
+function(t){var z=null;if(window.getSelection){if(z=window.getSelection(),z.getRangeAt&&z.rangeCount){var A=document.createRange();A.selectNode(t);z.removeAllRanges();z.addRange(A)}}else(z=document.selection)&&"Control"!=z.type&&(t=z.createRange(),t.collapse(!0),A=z.createRange(),A.setEndPoint("StartToStart",t),A.select())};Graph.prototype.flipEdgePoints=function(t,z,A){var E=this.getCellGeometry(t);if(null!=E){E=E.clone();if(null!=E.points)for(var H=0;H<E.points.length;H++)z?E.points[H].x=A+(A-E.points[H].x):
+E.points[H].y=A+(A-E.points[H].y);H=function(K){null!=K&&(z?K.x=A+(A-K.x):K.y=A+(A-K.y))};H(E.getTerminalPoint(!0));H(E.getTerminalPoint(!1));this.model.setGeometry(t,E)}};Graph.prototype.flipChildren=function(t,z,A){this.model.beginUpdate();try{for(var E=this.model.getChildCount(t),H=0;H<E;H++){var K=this.model.getChildAt(t,H);if(this.model.isEdge(K))this.flipEdgePoints(K,z,A);else{var X=this.getCellGeometry(K);null!=X&&(X=X.clone(),z?X.x=A+(A-X.x-X.width):X.y=A+(A-X.y-X.height),this.model.setGeometry(K,
+X))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(t,z){this.model.beginUpdate();try{t=this.model.getTopmostCells(t);for(var A=[],E=0;E<t.length;E++)if(this.model.isEdge(t[E])){var H=this.view.getState(t[E]);null!=H&&this.flipEdgePoints(t[E],z,(z?H.getCenterX():H.getCenterY())/this.view.scale-(z?H.origin.x:H.origin.y)-(z?this.view.translate.x:this.view.translate.y))}else{var K=this.getCellGeometry(t[E]);null!=K&&this.flipChildren(t[E],z,z?K.getCenterX()-K.x:K.getCenterY()-K.y);
+A.push(t[E])}this.toggleCellStyles(z?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,A)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(t,z){var A=null;if(null!=t&&0<t.length){this.model.beginUpdate();try{for(var E=0;E<t.length;E++){var H=this.model.getParent(t[E]);if(this.isTable(H)){var K=this.getCellGeometry(t[E]),X=this.getCellGeometry(H);null!=K&&null!=X&&(X=X.clone(),X.height-=K.height,this.model.setGeometry(H,X))}}var ja=this.selectParentAfterDelete?this.model.getParents(t):
+null;this.removeCells(t,z)}finally{this.model.endUpdate()}if(null!=ja)for(A=[],E=0;E<ja.length;E++)this.model.contains(ja[E])&&(this.model.isVertex(ja[E])||this.model.isEdge(ja[E]))&&A.push(ja[E])}return A};Graph.prototype.insertTableColumn=function(t,z){var A=this.getModel();A.beginUpdate();try{var E=t,H=0;if(this.isTableCell(t)){var K=A.getParent(t);E=A.getParent(K);H=mxUtils.indexOf(A.getChildCells(K,!0),t)}else this.isTableRow(t)?E=A.getParent(t):t=A.getChildCells(E,!0)[0],z||(H=A.getChildCells(t,
+!0).length-1);var X=A.getChildCells(E,!0),ja=Graph.minTableColumnWidth;for(t=0;t<X.length;t++){var ea=A.getChildCells(X[t],!0)[H],ka=A.cloneCell(ea,!1),ta=this.getCellGeometry(ka);ka.value=null;ka.style=mxUtils.setStyle(mxUtils.setStyle(ka.style,"rowspan",null),"colspan",null);if(null!=ta){null!=ta.alternateBounds&&(ta.width=ta.alternateBounds.width,ta.height=ta.alternateBounds.height,ta.alternateBounds=null);ja=ta.width;var Aa=this.getCellGeometry(X[t]);null!=Aa&&(ta.height=Aa.height)}A.add(X[t],
+ka,H+(z?0:1))}var Ea=this.getCellGeometry(E);null!=Ea&&(Ea=Ea.clone(),Ea.width+=ja,A.setGeometry(E,Ea))}finally{A.endUpdate()}};Graph.prototype.deleteLane=function(t){var z=this.getModel();z.beginUpdate();try{var A=null;A="stackLayout"==this.getCurrentCellStyle(t).childLayout?t:z.getParent(t);var E=z.getChildCells(A,!0);0==E.length?z.remove(A):(A==t&&(t=E[E.length-1]),z.remove(t))}finally{z.endUpdate()}};Graph.prototype.insertLane=function(t,z){var A=this.getModel();A.beginUpdate();try{var E=null;
+if("stackLayout"==this.getCurrentCellStyle(t).childLayout){E=t;var H=A.getChildCells(E,!0);t=H[z?0:H.length-1]}else E=A.getParent(t);var K=E.getIndex(t);t=A.cloneCell(t,!1);t.value=null;A.add(E,t,K+(z?0:1))}finally{A.endUpdate()}};Graph.prototype.insertTableRow=function(t,z){var A=this.getModel();A.beginUpdate();try{var E=t,H=t;if(this.isTableCell(t))H=A.getParent(t),E=A.getParent(H);else if(this.isTableRow(t))E=A.getParent(t);else{var K=A.getChildCells(E,!0);H=K[z?0:K.length-1]}var X=A.getChildCells(H,
+!0),ja=E.getIndex(H);H=A.cloneCell(H,!1);H.value=null;var ea=this.getCellGeometry(H);if(null!=ea){for(K=0;K<X.length;K++){t=A.cloneCell(X[K],!1);t.value=null;t.style=mxUtils.setStyle(mxUtils.setStyle(t.style,"rowspan",null),"colspan",null);var ka=this.getCellGeometry(t);null!=ka&&(null!=ka.alternateBounds&&(ka.width=ka.alternateBounds.width,ka.height=ka.alternateBounds.height,ka.alternateBounds=null),ka.height=ea.height);H.insert(t)}A.add(E,H,ja+(z?0:1));var ta=this.getCellGeometry(E);null!=ta&&(ta=
+ta.clone(),ta.height+=ea.height,A.setGeometry(E,ta))}}finally{A.endUpdate()}};Graph.prototype.deleteTableColumn=function(t){var z=this.getModel();z.beginUpdate();try{var A=t,E=t;this.isTableCell(t)&&(E=z.getParent(t));this.isTableRow(E)&&(A=z.getParent(E));var H=z.getChildCells(A,!0);if(0==H.length)z.remove(A);else{this.isTableRow(E)||(E=H[0]);var K=z.getChildCells(E,!0);if(1>=K.length)z.remove(A);else{var X=K.length-1;this.isTableCell(t)&&(X=mxUtils.indexOf(K,t));for(E=t=0;E<H.length;E++){var ja=
+z.getChildCells(H[E],!0)[X];z.remove(ja);var ea=this.getCellGeometry(ja);null!=ea&&(t=Math.max(t,ea.width))}var ka=this.getCellGeometry(A);null!=ka&&(ka=ka.clone(),ka.width-=t,z.setGeometry(A,ka))}}}finally{z.endUpdate()}};Graph.prototype.deleteTableRow=function(t){var z=this.getModel();z.beginUpdate();try{var A=t,E=t;this.isTableCell(t)&&(t=E=z.getParent(t));this.isTableRow(t)&&(A=z.getParent(E));var H=z.getChildCells(A,!0);if(1>=H.length)z.remove(A);else{this.isTableRow(E)||(E=H[H.length-1]);z.remove(E);
+t=0;var K=this.getCellGeometry(E);null!=K&&(t=K.height);var X=this.getCellGeometry(A);null!=X&&(X=X.clone(),X.height-=t,z.setGeometry(A,X))}}finally{z.endUpdate()}};Graph.prototype.insertRow=function(t,z){for(var A=t.tBodies[0],E=A.rows[0].cells,H=t=0;H<E.length;H++){var K=E[H].getAttribute("colspan");t+=null!=K?parseInt(K):1}z=A.insertRow(z);for(H=0;H<t;H++)mxUtils.br(z.insertCell(-1));return z.cells[0]};Graph.prototype.deleteRow=function(t,z){t.tBodies[0].deleteRow(z)};Graph.prototype.insertColumn=
+function(t,z){var A=t.tHead;if(null!=A)for(var E=0;E<A.rows.length;E++){var H=document.createElement("th");A.rows[E].appendChild(H);mxUtils.br(H)}t=t.tBodies[0];for(A=0;A<t.rows.length;A++)E=t.rows[A].insertCell(z),mxUtils.br(E);return t.rows[0].cells[0<=z?z:t.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(t,z){if(0<=z){t=t.tBodies[0].rows;for(var A=0;A<t.length;A++)t[A].cells.length>z&&t[A].deleteCell(z)}};Graph.prototype.pasteHtmlAtCaret=function(t){if(window.getSelection){var z=
+window.getSelection();if(z.getRangeAt&&z.rangeCount){z=z.getRangeAt(0);z.deleteContents();var A=document.createElement("div");A.innerHTML=t;t=document.createDocumentFragment();for(var E;E=A.firstChild;)lastNode=t.appendChild(E);z.insertNode(t)}}else(z=document.selection)&&"Control"!=z.type&&z.createRange().pasteHTML(t)};Graph.prototype.createLinkForHint=function(t,z){function A(H,K){H.length>K&&(H=H.substring(0,Math.round(K/2))+"..."+H.substring(H.length-Math.round(K/4)));return H}t=null!=t?t:"javascript:void(0);";
+if(null==z||0==z.length)z=this.isCustomLink(t)?this.getLinkTitle(t):t;var E=document.createElement("a");E.setAttribute("rel",this.linkRelation);E.setAttribute("href",this.getAbsoluteUrl(t));E.setAttribute("title",A(this.isCustomLink(t)?this.getLinkTitle(t):t,80));null!=this.linkTarget&&E.setAttribute("target",this.linkTarget);mxUtils.write(E,A(z,40));this.isCustomLink(t)&&mxEvent.addListener(E,"click",mxUtils.bind(this,function(H){this.customLinkClicked(t);mxEvent.consume(H)}));return E};Graph.prototype.initTouch=
+function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(K,X){this.popupMenuHandler.hideMenu()});var t=this.updateMouseEvent;this.updateMouseEvent=function(K){K=t.apply(this,arguments);if(mxEvent.isTouchEvent(K.getEvent())&&null==K.getState()){var X=this.getCellAt(K.graphX,K.graphY);null!=X&&this.isSwimlane(X)&&this.hitsSwimlaneContent(X,K.graphX,K.graphY)||(K.state=this.view.getState(X),null!=K.state&&
+null!=K.state.shape&&(this.container.style.cursor=K.state.shape.node.style.cursor))}null==K.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return K};var z=!1,A=!1,E=!1,H=this.fireMouseEvent;this.fireMouseEvent=function(K,X,ja){K==mxEvent.MOUSE_DOWN&&(X=this.updateMouseEvent(X),z=this.isCellSelected(X.getCell()),A=this.isSelectionEmpty(),E=this.popupMenuHandler.isMenuShowing());H.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(K,X){var ja=mxEvent.isMouseEvent(X.getEvent());
+this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==X.getState()||!X.isSource(X.getState().control))&&(this.popupMenuHandler.popupTrigger||!E&&!ja&&(A&&null==X.getCell()&&this.isSelectionEmpty()||z&&this.isCellSelected(X.getCell())));ja=!z||ja?null:mxUtils.bind(this,function(ea){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var ka=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(X.getX()+ka.x+1,X.getY()+ka.y+1,ea,X.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,
+[K,X,ja])})};mxCellEditor.prototype.isContentEditing=function(){var t=this.graph.view.getState(this.editingCell);return null!=t&&1==t.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var t="";window.getSelection?t=window.getSelection():document.getSelection?t=document.getSelection():document.selection&&(t=document.selection.createRange().text);
+return""!=t};mxCellEditor.prototype.insertTab=function(t){var z=this.textarea.ownerDocument.defaultView.getSelection(),A=z.getRangeAt(0),E="\t";if(null!=t)for(E="";0<t;)E+=" ",t--;t=document.createElement("span");t.style.whiteSpace="pre";t.appendChild(document.createTextNode(E));A.insertNode(t);A.setStartAfter(t);A.setEndAfter(t);z.removeAllRanges();z.addRange(A)};mxCellEditor.prototype.alignText=function(t,z){var A=null!=z&&mxEvent.isShiftDown(z);if(A||null!=window.getSelection&&null!=window.getSelection().containsNode){var E=
+!0;this.graph.processElements(this.textarea,function(H){A||window.getSelection().containsNode(H,!0)?(H.removeAttribute("align"),H.style.textAlign=null):E=!1});E&&this.graph.cellEditor.setAlign(t)}document.execCommand("justify"+t.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var t=window.getSelection();if(t.getRangeAt&&t.rangeCount){for(var z=[],A=0,E=t.rangeCount;A<E;++A)z.push(t.getRangeAt(A));return z}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();
+return null};mxCellEditor.prototype.restoreSelection=function(t){try{if(t)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var z=0,A=t.length;z<A;++z)sel.addRange(t[z])}else document.selection&&t.select&&t.select()}catch(E){}};var G=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(t){null!=t.text&&(t.text.replaceLinefeeds="0"!=mxUtils.getValue(t.style,"nl2Br","1"));G.apply(this,arguments)};var J=mxConstraintHandler.prototype.update;
+mxConstraintHandler.prototype.update=function(t,z){this.isKeepFocusEvent(t)||!mxEvent.isAltDown(t.getEvent())?J.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(t){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var D=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(t,z){t=this.graph.getStartEditingCell(t,z);D.apply(this,arguments);var A=this.graph.view.getState(t);
+this.textarea.className=null!=A&&1==A.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(t);A=this.graph.getModel().getParent(t);var E=this.graph.getCellGeometry(t);if(this.graph.getModel().isEdge(A)&&null!=E&&E.relative||this.graph.getModel().isEdge(t))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var N=mxCellEditor.prototype.installListeners;
+mxCellEditor.prototype.installListeners=function(t){function z(H,K){K.originalNode=H;H=H.firstChild;for(var X=K.firstChild;null!=H&&null!=X;)z(H,X),H=H.nextSibling,X=X.nextSibling;return K}function A(H,K){if(null!=H)if(K.originalNode!=H)E(H);else for(H=H.firstChild,K=K.firstChild;null!=H;){var X=H.nextSibling;null==K?E(H):(A(H,K),K=K.nextSibling);H=X}}function E(H){for(var K=H.firstChild;null!=K;){var X=K.nextSibling;E(K);K=X}1==H.nodeType&&("BR"===H.nodeName||null!=H.firstChild)||3==H.nodeType&&
+0!=mxUtils.trim(mxUtils.getTextContent(H)).length?(3==H.nodeType&&mxUtils.setTextContent(H,mxUtils.getTextContent(H).replace(/\n|\r/g,"")),1==H.nodeType&&(H.removeAttribute("style"),H.removeAttribute("class"),H.removeAttribute("width"),H.removeAttribute("cellpadding"),H.removeAttribute("cellspacing"),H.removeAttribute("border"))):H.parentNode.removeChild(H)}N.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(H){var K=
+z(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]>")?A(this.textarea,K):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var t=this.graph.view.getState(this.editingCell);if(null!=t){var z=null!=t&&"0"!=mxUtils.getValue(t.style,"nl2Br","1"),A=this.saveSelection();if(this.codeViewMode){ja=
+mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ja.length&&"\n"==ja.charAt(ja.length-1)&&(ja=ja.substring(0,ja.length-1));ja=this.graph.sanitizeHtml(z?ja.replace(/\n/g,"<br/>"):ja,!0);this.textarea.className="mxCellEditor geContentEditable";ea=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);z=mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var E=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),
+H=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,K=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,X=[];(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&X.push("underline");(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&X.push("line-through");this.textarea.style.lineHeight=
+mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(ea*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(ea)+"px";this.textarea.style.textDecoration=X.join(" ");this.textarea.style.fontWeight=H?"bold":"normal";this.textarea.style.fontStyle=K?"italic":"";this.textarea.style.fontFamily=z;this.textarea.style.textAlign=E;this.textarea.style.padding="0px";this.textarea.innerHTML!=ja&&(this.textarea.innerHTML=ja,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=
+this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ja=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ja=mxUtils.replaceTrailingNewlines(ja,"<div><br></div>"));ja=this.graph.sanitizeHtml(z?ja.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ja,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";
+var ea=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(ea*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(ea)+"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!=
+ja&&(this.textarea.innerHTML=ja);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=A;this.resize()}};var Q=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(t,z){if(null!=this.textarea)if(t=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=t){var A=t.view.scale;this.bounds=mxRectangle.fromRectangle(t);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=
+160*A;this.bounds.height=60*A;var E=null!=t.text?t.text.margin:null;null==E&&(E=mxUtils.getAlignmentAsPoint(mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(t.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=E.x*this.bounds.width;this.bounds.y+=E.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/A)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/A)+"px";this.textarea.style.overflow=
+"auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/A)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*A);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/A)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*A);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("+A+","+A+")")}else this.textarea.style.height="",this.textarea.style.overflow="",Q.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(t,z){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var A=this.graph.getEditingValue(t.cell,z);"1"==
+mxUtils.getValue(t.style,"nl2Br","1")&&(A=A.replace(/\n/g,"<br/>"));return A=this.graph.sanitizeHtml(A,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(t){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var z=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return z="1"==mxUtils.getValue(t.style,"nl2Br","1")?z.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):z.replace(/\r\n/g,
"").replace(/\n/g,"")};var R=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(t){this.codeViewMode&&this.toggleViewMode();R.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(t){}};var P=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(t,z){this.graph.getModel().beginUpdate();try{P.apply(this,arguments),""==z&&this.graph.isCellDeletable(t.cell)&&0==this.graph.model.getChildCount(t.cell)&&
this.graph.isTransparentState(t)&&this.graph.removeCells([t.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(t){var z=mxUtils.getValue(t.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=z&&z!=mxConstants.NONE||!(null!=t.cell.geometry&&0<t.cell.geometry.width)||0==mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(t.style,mxConstants.STYLE_HORIZONTAL,1)||(z=mxUtils.getValue(t.style,mxConstants.STYLE_FILLCOLOR,
null));z==mxConstants.NONE&&(z=null);return z};mxCellEditor.prototype.getBorderColor=function(t){var z=mxUtils.getValue(t.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=z&&z!=mxConstants.NONE||!(null!=t.cell.geometry&&0<t.cell.geometry.width)||0==mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(t.style,mxConstants.STYLE_HORIZONTAL,1)||(z=mxUtils.getValue(t.style,mxConstants.STYLE_STROKECOLOR,null));z==mxConstants.NONE&&(z=null);return z};mxCellEditor.prototype.getMinimumSize=
function(t){var z=this.graph.getView().scale;return new mxRectangle(0,0,null==t.text?30:t.text.size*z+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(t,z){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(z.getEvent)};mxGraphView.prototype.formatUnitText=function(t){return t?b(t,this.unit):t};mxGraphHandler.prototype.updateHint=function(t){if(null!=this.pBounds&&(null!=this.shape||
-this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,B=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/B-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/B-z.y);B=this.graph.view.unit;this.hint.innerHTML=b(t,B)+", "+b(z,B);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 Z=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(t,z){Z.apply(this,arguments);var B=this.graph.getCellStyle(t);if(null==B.childLayout){var E=this.graph.model.getParent(t),G=null!=E?this.graph.getCellGeometry(E):null;if(null!=G&&(B=this.graph.getCellStyle(E),"stackLayout"==B.childLayout)){var M=parseFloat(mxUtils.getValue(B,
-"stackBorder",mxStackLayout.prototype.border));B="1"==mxUtils.getValue(B,"horizontalStack","1");var X=this.graph.getActualStartSize(E);G=G.clone();B?G.height=z.height+X.y+X.height+2*M:G.width=z.width+X.x+X.width+2*M;this.graph.model.setGeometry(E,G)}}};var T=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function t(ia){B.get(ia)||(B.put(ia,!0),G.push(ia))}for(var z=T.apply(this,arguments),B=new mxDictionary,E=this.graph.model,
-G=[],M=0;M<z.length;M++){var X=z[M];this.graph.isTableCell(X)?t(E.getParent(E.getParent(X))):this.graph.isTableRow(X)&&t(E.getParent(X));t(X)}return G};var U=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(t){var z=U.apply(this,arguments);z.stroke="#C0C0C0";z.strokewidth=1;return z};var fa=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(t){var z=fa.apply(this,arguments);
+this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,A=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/A-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/A-z.y);A=this.graph.view.unit;this.hint.innerHTML=b(t,A)+", "+b(z,A);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 Z=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(t,z){Z.apply(this,arguments);var A=this.graph.getCellStyle(t);if(null==A.childLayout){var E=this.graph.model.getParent(t),H=null!=E?this.graph.getCellGeometry(E):null;if(null!=H&&(A=this.graph.getCellStyle(E),"stackLayout"==A.childLayout)){var K=parseFloat(mxUtils.getValue(A,
+"stackBorder",mxStackLayout.prototype.border));A="1"==mxUtils.getValue(A,"horizontalStack","1");var X=this.graph.getActualStartSize(E);H=H.clone();A?H.height=z.height+X.y+X.height+2*K:H.width=z.width+X.x+X.width+2*K;this.graph.model.setGeometry(E,H)}}};var U=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function t(ja){A.get(ja)||(A.put(ja,!0),H.push(ja))}for(var z=U.apply(this,arguments),A=new mxDictionary,E=this.graph.model,
+H=[],K=0;K<z.length;K++){var X=z[K];this.graph.isTableCell(X)?t(E.getParent(E.getParent(X))):this.graph.isTableRow(X)&&t(E.getParent(X));t(X)}return H};var V=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(t){var z=V.apply(this,arguments);z.stroke="#C0C0C0";z.strokewidth=1;return z};var ia=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(t){var z=ia.apply(this,arguments);
z.stroke="#C0C0C0";z.strokewidth=1;return z};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var t=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+t.x/2,this.bounds.y+this.rotationHandleVSpacing-t.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(t,z){return this.graph.isRecursiveVertexResize(t)&&!mxEvent.isAltDown(z.getEvent())};mxVertexHandler.prototype.isCenteredEvent=
function(t,z){return mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent())};var ha=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return ha.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 ba=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return ba.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var qa=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(t){return t.tableHandle||qa.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
-function(){var t=0;this.graph.isTableRow(this.state.cell)?t=1:this.graph.isTableCell(this.state.cell)&&(t=2);return t};var I=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return I.apply(this,arguments).grow(-this.getSelectionBorderInset())};var L=null,H=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==L&&(L=mxCellRenderer.defaultShapes.tableLine);var t=H.apply(this,arguments);
-if(this.graph.isTable(this.state.cell)){var z=function(La,Ia,Ea){for(var Fa=[],Oa=0;Oa<La.length;Oa++){var Pa=La[Oa];Fa.push(null==Pa?null:new mxPoint((da+Pa.x+Ia)*M,(ja+Pa.y+Ea)*M))}return Fa},B=this,E=this.graph,G=E.model,M=E.view.scale,X=this.state,ia=this.selectionBorder,da=this.state.origin.x+E.view.translate.x,ja=this.state.origin.y+E.view.translate.y;null==t&&(t=[]);var sa=E.view.getCellStates(G.getChildCells(this.state.cell,!0));if(0<sa.length){var Ba=G.getChildCells(sa[0].cell,!0),Da=E.getTableLines(this.state.cell,
-!1,!0),Ma=E.getTableLines(this.state.cell,!0,!1);for(G=0;G<sa.length;G++)mxUtils.bind(this,function(La){var Ia=sa[La],Ea=La<sa.length-1?sa[La+1]:null;Ea=null!=Ea?E.getCellGeometry(Ea.cell):null;var Fa=null!=Ea&&null!=Ea.alternateBounds?Ea.alternateBounds:Ea;Ea=null!=Ma[La]?new L(Ma[La],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);Ea.isDashed=ia.isDashed;Ea.svgStrokeTolerance++;Ia=new mxHandle(Ia,"row-resize",null,Ea);Ia.tableHandle=!0;var Oa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,
-Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Oa?mxConstants.NONE:ia.stroke;if(this.shape.constructor==L)this.shape.line=z(Ma[La],0,Oa),this.shape.updateBoundsFromLine();else{var Na=E.getActualStartSize(X.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Oa*M;this.shape.bounds.x=X.x+(La==sa.length-1?0:Na.x*M);this.shape.bounds.width=X.width-(La==sa.length-1?0:Na.width+Na.x+M)}this.shape.redraw()}};var Pa=!1;
-Ia.setPosition=function(Na,Sa,eb){Oa=Math.max(Graph.minTableRowHeight-Na.height,Sa.y-Na.y-Na.height);Pa=mxEvent.isShiftDown(eb.getEvent());null!=Fa&&Pa&&(Oa=Math.min(Oa,Fa.height-Graph.minTableRowHeight))};Ia.execute=function(Na){if(0!=Oa)E.setTableRowHeight(this.state.cell,Oa,!Pa);else if(!B.blockDelayedSelection){var Sa=E.getCellAt(Na.getGraphX(),Na.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(Sa,Na)}Oa=0};Ia.reset=function(){Oa=0};t.push(Ia)})(G);for(G=0;G<Ba.length;G++)mxUtils.bind(this,
-function(La){var Ia=E.view.getState(Ba[La]),Ea=E.getCellGeometry(Ba[La]),Fa=null!=Ea.alternateBounds?Ea.alternateBounds:Ea;null==Ia&&(Ia=new mxCellState(E.view,Ba[La],E.getCellStyle(Ba[La])),Ia.x=X.x+Ea.x*M,Ia.y=X.y+Ea.y*M,Ia.width=Fa.width*M,Ia.height=Fa.height*M,Ia.updateCachedBounds());Ea=La<Ba.length-1?Ba[La+1]:null;Ea=null!=Ea?E.getCellGeometry(Ea):null;var Oa=null!=Ea&&null!=Ea.alternateBounds?Ea.alternateBounds:Ea;Ea=null!=Da[La]?new L(Da[La],mxConstants.NONE,1):new mxLine(new mxRectangle,
-mxConstants.NONE,1,!0);Ea.isDashed=ia.isDashed;Ea.svgStrokeTolerance++;Ia=new mxHandle(Ia,"col-resize",null,Ea);Ia.tableHandle=!0;var Pa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Pa?mxConstants.NONE:ia.stroke;if(this.shape.constructor==L)this.shape.line=z(Da[La],Pa,0),this.shape.updateBoundsFromLine();else{var Sa=E.getActualStartSize(X.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=
-this.state.x+(Fa.width+Pa)*M;this.shape.bounds.y=X.y+(La==Ba.length-1?0:Sa.y*M);this.shape.bounds.height=X.height-(La==Ba.length-1?0:(Sa.height+Sa.y)*M)}this.shape.redraw()}};var Na=!1;Ia.setPosition=function(Sa,eb,Za){Pa=Math.max(Graph.minTableColumnWidth-Fa.width,eb.x-Sa.x-Fa.width);Na=mxEvent.isShiftDown(Za.getEvent());null==Oa||Na||(Pa=Math.min(Pa,Oa.width-Graph.minTableColumnWidth))};Ia.execute=function(Sa){if(0!=Pa)E.setTableColumnWidth(this.state.cell,Pa,Na);else if(!B.blockDelayedSelection){var eb=
-E.getCellAt(Sa.getGraphX(),Sa.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(eb,Sa)}Pa=0};Ia.positionChanged=function(){};Ia.reset=function(){Pa=0};t.push(Ia)})(G)}}return null!=t?t.reverse():null};var S=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(t){S.apply(this,arguments);if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.visibility=t?"":"hidden";if(null!=this.cornerHandles)for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].node.style.visibility=
-t?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var t=this.graph.model;if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}this.moveHandles=[];for(z=0;z<t.getChildCount(this.state.cell);z++)mxUtils.bind(this,function(B){if(null!=B&&t.isVertex(B.cell)){var E=mxUtils.createImage(Editor.rowMoveImage);E.style.position="absolute";E.style.cursor="pointer";E.style.width="7px";E.style.height=
-"4px";E.style.padding="4px 2px 4px 2px";E.rowState=B;mxEvent.addGestureListeners(E,mxUtils.bind(this,function(G){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(G)&&this.graph.isCellSelected(B.cell)||this.graph.selectCellForEvent(B.cell,G);mxEvent.isPopupTrigger(G)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(G),mxEvent.getClientY(G),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=
-mxEvent.isMouseEvent(G),this.graph.isMouseDown=!0);mxEvent.consume(G)}),null,mxUtils.bind(this,function(G){mxEvent.isPopupTrigger(G)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(G),mxEvent.getClientY(G),B.cell,G),mxEvent.consume(G))}));this.moveHandles.push(E);this.graph.container.appendChild(E)}})(this.graph.view.getState(t.getChildAt(this.state.cell,z)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var t=0;t<this.customHandles.length;t++)this.customHandles[t].destroy();
-this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var V=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var t=new mxPoint(0,0),z=this.tolerance,B=this.state.style.shape;null==mxCellRenderer.defaultShapes[B]&&mxStencilRegistry.getStencil(B);B=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!B&&null!=this.customHandles)for(var E=0;E<this.customHandles.length;E++)if(null!=
-this.customHandles[E].shape&&null!=this.customHandles[E].shape.bounds){var G=this.customHandles[E].shape.bounds,M=G.getCenterX(),X=G.getCenterY();if(Math.abs(this.state.x-M)<G.width/2||Math.abs(this.state.y-X)<G.height/2||Math.abs(this.state.x+this.state.width-M)<G.width/2||Math.abs(this.state.y+this.state.height-X)<G.height/2){B=!0;break}}B&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(z/=2,this.graph.isTable(this.state.cell)&&(z+=7),t.x=this.sizers[0].bounds.width+z,t.y=this.sizers[0].bounds.height+
-z):t=V.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){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{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/t),z)+" x "+b(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
-null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==t&&(t=this.bounds);this.hint.style.left=t.x+Math.round((t.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=t.y+t.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 ea=mxEdgeHandler.prototype.mouseMove;
-mxEdgeHandler.prototype.mouseMove=function(t,z){ea.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 ka=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(t,z){ka.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(t,z){null==this.hint&&
-(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var B=this.graph.view.translate,E=this.graph.view.scale,G=this.roundLength(z.x/E-B.x);B=this.roundLength(z.y/E-B.y);E=this.graph.view.unit;this.hint.innerHTML=b(G,E)+", "+b(B,E);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(t.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(t.getGraphY(),z.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"/>');
+function(){var t=0;this.graph.isTableRow(this.state.cell)?t=1:this.graph.isTableCell(this.state.cell)&&(t=2);return t};var O=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var S=null,F=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==S&&(S=mxCellRenderer.defaultShapes.tableLine);var t=F.apply(this,arguments);
+if(this.graph.isTable(this.state.cell)){var z=function(La,Ia,Fa){for(var Ga=[],Oa=0;Oa<La.length;Oa++){var Pa=La[Oa];Ga.push(null==Pa?null:new mxPoint((ea+Pa.x+Ia)*K,(ka+Pa.y+Fa)*K))}return Ga},A=this,E=this.graph,H=E.model,K=E.view.scale,X=this.state,ja=this.selectionBorder,ea=this.state.origin.x+E.view.translate.x,ka=this.state.origin.y+E.view.translate.y;null==t&&(t=[]);var ta=E.view.getCellStates(H.getChildCells(this.state.cell,!0));if(0<ta.length){var Aa=H.getChildCells(ta[0].cell,!0),Ea=E.getTableLines(this.state.cell,
+!1,!0),Ma=E.getTableLines(this.state.cell,!0,!1);for(H=0;H<ta.length;H++)mxUtils.bind(this,function(La){var Ia=ta[La],Fa=La<ta.length-1?ta[La+1]:null;Fa=null!=Fa?E.getCellGeometry(Fa.cell):null;var Ga=null!=Fa&&null!=Fa.alternateBounds?Fa.alternateBounds:Fa;Fa=null!=Ma[La]?new S(Ma[La],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);Fa.isDashed=ja.isDashed;Fa.svgStrokeTolerance++;Ia=new mxHandle(Ia,"row-resize",null,Fa);Ia.tableHandle=!0;var Oa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,
+Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Oa?mxConstants.NONE:ja.stroke;if(this.shape.constructor==S)this.shape.line=z(Ma[La],0,Oa),this.shape.updateBoundsFromLine();else{var Na=E.getActualStartSize(X.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Oa*K;this.shape.bounds.x=X.x+(La==ta.length-1?0:Na.x*K);this.shape.bounds.width=X.width-(La==ta.length-1?0:Na.width+Na.x+K)}this.shape.redraw()}};var Pa=!1;
+Ia.setPosition=function(Na,Sa,eb){Oa=Math.max(Graph.minTableRowHeight-Na.height,Sa.y-Na.y-Na.height);Pa=mxEvent.isShiftDown(eb.getEvent());null!=Ga&&Pa&&(Oa=Math.min(Oa,Ga.height-Graph.minTableRowHeight))};Ia.execute=function(Na){if(0!=Oa)E.setTableRowHeight(this.state.cell,Oa,!Pa);else if(!A.blockDelayedSelection){var Sa=E.getCellAt(Na.getGraphX(),Na.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(Sa,Na)}Oa=0};Ia.reset=function(){Oa=0};t.push(Ia)})(H);for(H=0;H<Aa.length;H++)mxUtils.bind(this,
+function(La){var Ia=E.view.getState(Aa[La]),Fa=E.getCellGeometry(Aa[La]),Ga=null!=Fa.alternateBounds?Fa.alternateBounds:Fa;null==Ia&&(Ia=new mxCellState(E.view,Aa[La],E.getCellStyle(Aa[La])),Ia.x=X.x+Fa.x*K,Ia.y=X.y+Fa.y*K,Ia.width=Ga.width*K,Ia.height=Ga.height*K,Ia.updateCachedBounds());Fa=La<Aa.length-1?Aa[La+1]:null;Fa=null!=Fa?E.getCellGeometry(Fa):null;var Oa=null!=Fa&&null!=Fa.alternateBounds?Fa.alternateBounds:Fa;Fa=null!=Ea[La]?new S(Ea[La],mxConstants.NONE,1):new mxLine(new mxRectangle,
+mxConstants.NONE,1,!0);Fa.isDashed=ja.isDashed;Fa.svgStrokeTolerance++;Ia=new mxHandle(Ia,"col-resize",null,Fa);Ia.tableHandle=!0;var Pa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Pa?mxConstants.NONE:ja.stroke;if(this.shape.constructor==S)this.shape.line=z(Ea[La],Pa,0),this.shape.updateBoundsFromLine();else{var Sa=E.getActualStartSize(X.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=
+this.state.x+(Ga.width+Pa)*K;this.shape.bounds.y=X.y+(La==Aa.length-1?0:Sa.y*K);this.shape.bounds.height=X.height-(La==Aa.length-1?0:(Sa.height+Sa.y)*K)}this.shape.redraw()}};var Na=!1;Ia.setPosition=function(Sa,eb,ab){Pa=Math.max(Graph.minTableColumnWidth-Ga.width,eb.x-Sa.x-Ga.width);Na=mxEvent.isShiftDown(ab.getEvent());null==Oa||Na||(Pa=Math.min(Pa,Oa.width-Graph.minTableColumnWidth))};Ia.execute=function(Sa){if(0!=Pa)E.setTableColumnWidth(this.state.cell,Pa,Na);else if(!A.blockDelayedSelection){var eb=
+E.getCellAt(Sa.getGraphX(),Sa.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(eb,Sa)}Pa=0};Ia.positionChanged=function(){};Ia.reset=function(){Pa=0};t.push(Ia)})(H)}}return null!=t?t.reverse():null};var L=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(t){L.apply(this,arguments);if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.visibility=t?"":"hidden";if(null!=this.cornerHandles)for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].node.style.visibility=
+t?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var t=this.graph.model;if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}this.moveHandles=[];for(z=0;z<t.getChildCount(this.state.cell);z++)mxUtils.bind(this,function(A){if(null!=A&&t.isVertex(A.cell)){var E=mxUtils.createImage(Editor.rowMoveImage);E.style.position="absolute";E.style.cursor="pointer";E.style.width="7px";E.style.height=
+"4px";E.style.padding="4px 2px 4px 2px";E.rowState=A;mxEvent.addGestureListeners(E,mxUtils.bind(this,function(H){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(H)&&this.graph.isCellSelected(A.cell)||this.graph.selectCellForEvent(A.cell,H);mxEvent.isPopupTrigger(H)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(H),mxEvent.getClientY(H),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=
+mxEvent.isMouseEvent(H),this.graph.isMouseDown=!0);mxEvent.consume(H)}),null,mxUtils.bind(this,function(H){mxEvent.isPopupTrigger(H)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(H),mxEvent.getClientY(H),A.cell,H),mxEvent.consume(H))}));this.moveHandles.push(E);this.graph.container.appendChild(E)}})(this.graph.view.getState(t.getChildAt(this.state.cell,z)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var t=0;t<this.customHandles.length;t++)this.customHandles[t].destroy();
+this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var T=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var t=new mxPoint(0,0),z=this.tolerance,A=this.state.style.shape;null==mxCellRenderer.defaultShapes[A]&&mxStencilRegistry.getStencil(A);A=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!A&&null!=this.customHandles)for(var E=0;E<this.customHandles.length;E++)if(null!=
+this.customHandles[E].shape&&null!=this.customHandles[E].shape.bounds){var H=this.customHandles[E].shape.bounds,K=H.getCenterX(),X=H.getCenterY();if(Math.abs(this.state.x-K)<H.width/2||Math.abs(this.state.y-X)<H.height/2||Math.abs(this.state.x+this.state.width-K)<H.width/2||Math.abs(this.state.y+this.state.height-X)<H.height/2){A=!0;break}}A&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(z/=2,this.graph.isTable(this.state.cell)&&(z+=7),t.x=this.sizers[0].bounds.width+z,t.y=this.sizers[0].bounds.height+
+z):t=T.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){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{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/t),z)+" x "+b(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
+null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==t&&(t=this.bounds);this.hint.style.left=t.x+Math.round((t.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=t.y+t.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 ca=mxEdgeHandler.prototype.mouseMove;
+mxEdgeHandler.prototype.mouseMove=function(t,z){ca.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 fa=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(t,z){fa.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(t,z){null==this.hint&&
+(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var A=this.graph.view.translate,E=this.graph.view.scale,H=this.roundLength(z.x/E-A.x);A=this.roundLength(z.y/E-A.y);E=this.graph.view.unit;this.hint.innerHTML=b(H,E)+", "+b(A,E);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(H=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*H.x)+
+"%, "+Math.round(100*H.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(t.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(t.getGraphY(),z.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="'+
@@ -3205,38 +3205,38 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(t){return!mxEvent.isShiftDown(t.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(t){return!mxEvent.isShiftDown(t.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(t){return mxEvent.isMouseEvent(t.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(t){var z=t.getEvent();return null==t.getState()&&!mxEvent.isMouseEvent(z)||mxEvent.isPopupTrigger(z)&&(null==t.getState()||mxEvent.isControlDown(z)||mxEvent.isShiftDown(z))};var wa=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(t,z){wa.apply(this,arguments);mxEvent.isTouchEvent(z.getEvent())&&this.graph.isCellSelected(z.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(t){var z=t.getEvent();return mxEvent.isLeftMouseButton(z)&&(this.useLeftButtonForPanning&&null==t.getState()||mxEvent.isControlDown(z)&&!mxEvent.isShiftDown(z))||this.usePopupTrigger&&mxEvent.isPopupTrigger(z)};mxRubberband.prototype.isSpaceEvent=function(t){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(t.getEvent())||mxEvent.isMetaDown(t.getEvent()))&&mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(t,z){if(this.cancelled)this.cancelled=!1,z.consume();else{var B=null!=this.div&&"none"!=this.div.style.display,E=null,G=null,M=t=null;null!=
-this.first&&null!=this.currentX&&null!=this.currentY&&(E=this.first.x,G=this.first.y,t=(this.currentX-E)/this.graph.view.scale,M=(this.currentY-G)/this.graph.view.scale,mxEvent.isAltDown(z.getEvent())||(t=this.graph.snap(t),M=this.graph.snap(M),this.graph.isGridEnabled()||(Math.abs(t)<this.graph.tolerance&&(t=0),Math.abs(M)<this.graph.tolerance&&(M=0))));this.reset();if(B){if(this.isSpaceEvent(z)){this.graph.model.beginUpdate();try{var X=this.graph.getCellsBeyond(E,G,this.graph.getDefaultParent(),
-!0,!0);for(B=0;B<X.length;B++)if(this.graph.isCellMovable(X[B])){var ia=this.graph.view.getState(X[B]),da=this.graph.getCellGeometry(X[B]);null!=ia&&null!=da&&(da=da.clone(),da.translate(t,M),this.graph.model.setGeometry(X[B],da))}}finally{this.graph.model.endUpdate()}}else X=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(X,z.getEvent());z.consume()}}};mxRubberband.prototype.mouseMove=function(t,z){if(!z.isConsumed()&&null!=this.first){var B=mxUtils.getScrollOrigin(this.graph.container);
-t=mxUtils.getOffset(this.graph.container);B.x-=t.x;B.y-=t.y;t=z.getX()+B.x;B=z.getY()+B.y;var E=this.first.x-t,G=this.first.y-B,M=this.graph.tolerance;if(null!=this.div||Math.abs(E)>M||Math.abs(G)>M)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(t,B),this.isSpaceEvent(z)?(t=this.x+this.width,B=this.y+this.height,E=this.graph.view.scale,mxEvent.isAltDown(z.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=t-this.width),this.y<this.first.y&&(this.y=B-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",
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(t.getEvent())||mxEvent.isMetaDown(t.getEvent()))&&mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(t,z){if(this.cancelled)this.cancelled=!1,z.consume();else{var A=null!=this.div&&"none"!=this.div.style.display,E=null,H=null,K=t=null;null!=
+this.first&&null!=this.currentX&&null!=this.currentY&&(E=this.first.x,H=this.first.y,t=(this.currentX-E)/this.graph.view.scale,K=(this.currentY-H)/this.graph.view.scale,mxEvent.isAltDown(z.getEvent())||(t=this.graph.snap(t),K=this.graph.snap(K),this.graph.isGridEnabled()||(Math.abs(t)<this.graph.tolerance&&(t=0),Math.abs(K)<this.graph.tolerance&&(K=0))));this.reset();if(A){if(this.isSpaceEvent(z)){this.graph.model.beginUpdate();try{var X=this.graph.getCellsBeyond(E,H,this.graph.getDefaultParent(),
+!0,!0);for(A=0;A<X.length;A++)if(this.graph.isCellMovable(X[A])){var ja=this.graph.view.getState(X[A]),ea=this.graph.getCellGeometry(X[A]);null!=ja&&null!=ea&&(ea=ea.clone(),ea.translate(t,K),this.graph.model.setGeometry(X[A],ea))}}finally{this.graph.model.endUpdate()}}else X=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(X,z.getEvent());z.consume()}}};mxRubberband.prototype.mouseMove=function(t,z){if(!z.isConsumed()&&null!=this.first){var A=mxUtils.getScrollOrigin(this.graph.container);
+t=mxUtils.getOffset(this.graph.container);A.x-=t.x;A.y-=t.y;t=z.getX()+A.x;A=z.getY()+A.y;var E=this.first.x-t,H=this.first.y-A,K=this.graph.tolerance;if(null!=this.div||Math.abs(E)>K||Math.abs(H)>K)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(t,A),this.isSpaceEvent(z)?(t=this.x+this.width,A=this.y+this.height,E=this.graph.view.scale,mxEvent.isAltDown(z.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=t-this.width),this.y<this.first.y&&(this.y=A-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)),z.consume()}};var W=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);W.apply(this,arguments)};var aa=(new Date).getTime(),oa=0,ua=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(t,z,B,E){ua.apply(this,arguments);B!=this.currentTerminalState?(aa=(new Date).getTime(),
-oa=0):oa=(new Date).getTime()-aa;this.currentTerminalState=B};var Ja=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(t){return mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())?!1:null!=this.currentTerminalState&&t.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&Ja.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
-function(t,z,B){z=null!=t&&0==t;var E=this.state.getVisibleTerminalState(z);t=null!=t&&(0==t||t>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==t)?this.graph.getConnectionConstraint(this.state,E,z):null;B=null!=(null!=t?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(z),t):null)?B?this.endFixedHandleImage:this.fixedHandleImage:null!=t&&null!=E?B?this.endTerminalHandleImage:this.terminalHandleImage:B?this.endHandleImage:this.handleImage;if(null!=B)return B=
-new mxImageShape(new mxRectangle(0,0,B.width,B.height),B.src),B.preserveImageAspect=!1,B;B=mxConstants.HANDLE_SIZE;this.preferHtml&&--B;return new mxRectangleShape(new mxRectangle(0,0,B,B),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var Ga=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(t,z,B){this.handleImage=z==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:z==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
-return Ga.apply(this,arguments)};var va=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(t){if(null!=t&&1==t.length){var z=this.graph.getModel(),B=z.getParent(t[0]),E=this.graph.getCellGeometry(t[0]);if(z.isEdge(B)&&null!=E&&E.relative&&(z=this.graph.view.getState(t[0]),null!=z&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox))return mxRectangle.fromRectangle(z.text.boundingBox)}return va.apply(this,arguments)};var za=mxGraphHandler.prototype.getGuideStates;
-mxGraphHandler.prototype.getGuideStates=function(){for(var t=za.apply(this,arguments),z=[],B=0;B<t.length;B++)"1"!=mxUtils.getValue(t[B].style,"part","0")&&z.push(t[B]);return z};var ra=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(t){var z=this.graph.getModel(),B=z.getParent(t.cell),E=this.graph.getCellGeometry(t.cell);return z.isEdge(B)&&null!=E&&E.relative&&2>t.width&&2>t.height&&null!=t.text&&null!=t.text.boundingBox?(z=t.text.unrotatedBoundingBox||
-t.text.boundingBox,new mxRectangle(Math.round(z.x),Math.round(z.y),Math.round(z.width),Math.round(z.height))):ra.apply(this,arguments)};var Ha=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(t,z){var B=this.graph.getModel(),E=B.getParent(this.state.cell),G=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(z)==mxEvent.ROTATION_HANDLE||!B.isEdge(E)||null==G||!G.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Ha.apply(this,arguments)};
+(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),z.consume()}};var W=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);W.apply(this,arguments)};var aa=(new Date).getTime(),oa=0,sa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(t,z,A,E){sa.apply(this,arguments);A!=this.currentTerminalState?(aa=(new Date).getTime(),
+oa=0):oa=(new Date).getTime()-aa;this.currentTerminalState=A};var Ka=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(t){return mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())?!1:null!=this.currentTerminalState&&t.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&Ka.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
+function(t,z,A){z=null!=t&&0==t;var E=this.state.getVisibleTerminalState(z);t=null!=t&&(0==t||t>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==t)?this.graph.getConnectionConstraint(this.state,E,z):null;A=null!=(null!=t?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(z),t):null)?A?this.endFixedHandleImage:this.fixedHandleImage:null!=t&&null!=E?A?this.endTerminalHandleImage:this.terminalHandleImage:A?this.endHandleImage:this.handleImage;if(null!=A)return A=
+new mxImageShape(new mxRectangle(0,0,A.width,A.height),A.src),A.preserveImageAspect=!1,A;A=mxConstants.HANDLE_SIZE;this.preferHtml&&--A;return new mxRectangleShape(new mxRectangle(0,0,A,A),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var Ha=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(t,z,A){this.handleImage=z==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:z==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
+return Ha.apply(this,arguments)};var ua=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(t){if(null!=t&&1==t.length){var z=this.graph.getModel(),A=z.getParent(t[0]),E=this.graph.getCellGeometry(t[0]);if(z.isEdge(A)&&null!=E&&E.relative&&(z=this.graph.view.getState(t[0]),null!=z&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox))return mxRectangle.fromRectangle(z.text.boundingBox)}return ua.apply(this,arguments)};var Ca=mxGraphHandler.prototype.getGuideStates;
+mxGraphHandler.prototype.getGuideStates=function(){for(var t=Ca.apply(this,arguments),z=[],A=0;A<t.length;A++)"1"!=mxUtils.getValue(t[A].style,"part","0")&&z.push(t[A]);return z};var ra=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(t){var z=this.graph.getModel(),A=z.getParent(t.cell),E=this.graph.getCellGeometry(t.cell);return z.isEdge(A)&&null!=E&&E.relative&&2>t.width&&2>t.height&&null!=t.text&&null!=t.text.boundingBox?(z=t.text.unrotatedBoundingBox||
+t.text.boundingBox,new mxRectangle(Math.round(z.x),Math.round(z.y),Math.round(z.width),Math.round(z.height))):ra.apply(this,arguments)};var Da=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(t,z){var A=this.graph.getModel(),E=A.getParent(this.state.cell),H=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(z)==mxEvent.ROTATION_HANDLE||!A.isEdge(E)||null==H||!H.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Da.apply(this,arguments)};
mxVertexHandler.prototype.rotateClick=function(){var t=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),z=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&t==mxConstants.NONE&&z==mxConstants.NONE?(t=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,t,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};
-var Ta=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(t,z){Ta.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 db=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(t,z){db.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 Ua=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){Ua.apply(this,arguments);var t=!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 z=0;4>z;z++){var B=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);B.dialect=mxConstants.DIALECT_SVG;B.init(this.graph.view.getOverlayPane());this.cornerHandles.push(B)}}var E=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(G,M){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));E()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(G,M){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
-z=this.graph.getLinkForCell(this.state.cell);B=this.graph.getLinksForState(this.state);this.updateLinkHint(z,B);if(null!=z||null!=B&&0<B.length)t=!0;t&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(t,z){try{if(null==t&&(null==z||0==z.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=t||null!=z&&0<z.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding=
-"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=t&&(this.linkHint.appendChild(this.graph.createLinkForHint(t)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var B=document.createElement("img");B.setAttribute("src",Editor.editImage);B.setAttribute("title",
-mxResources.get("editLink"));B.setAttribute("width","11");B.setAttribute("height","11");B.style.marginLeft="10px";B.style.marginBottom="-1px";B.style.cursor="pointer";Editor.isDarkMode()&&(B.style.filter="invert(100%)");this.linkHint.appendChild(B);mxEvent.addListener(B,"click",mxUtils.bind(this,function(M){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(M)}));var E=B.cloneNode(!0);E.setAttribute("src",Editor.trashImage);E.setAttribute("title",mxResources.get("removeIt",
-[mxResources.get("link")]));E.style.marginLeft="4px";this.linkHint.appendChild(E);mxEvent.addListener(E,"click",mxUtils.bind(this,function(M){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(M)}))}if(null!=z)for(B=0;B<z.length;B++){var G=document.createElement("div");G.style.marginTop=null!=t||0<B?"6px":"0px";G.appendChild(this.graph.createLinkForHint(z[B].getAttribute("href"),mxUtils.getTextContent(z[B])));this.linkHint.appendChild(G)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(M){}};
-mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Va=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Va.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var t=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(E,G){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));t();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var z=this.graph.getLinkForCell(this.state.cell),B=this.graph.getLinksForState(this.state);if(null!=
-z||null!=B&&0<B.length)this.updateLinkHint(z,B),this.redrawHandles()};var Ya=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Ya.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var bb=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var t=0;t<this.moveHandles.length;t++)this.moveHandles[t].style.left=this.moveHandles[t].rowState.x+
-this.moveHandles[t].rowState.width-5+"px",this.moveHandles[t].style.top=this.moveHandles[t].rowState.y+this.moveHandles[t].rowState.height/2-6+"px";if(null!=this.cornerHandles){t=this.getSelectionBorderInset();var z=this.cornerHandles,B=z[0].bounds.height/2;z[0].bounds.x=this.state.x-z[0].bounds.width/2+t;z[0].bounds.y=this.state.y-B+t;z[0].redraw();z[1].bounds.x=z[0].bounds.x+this.state.width-2*t;z[1].bounds.y=z[0].bounds.y;z[1].redraw();z[2].bounds.x=z[0].bounds.x;z[2].bounds.y=this.state.y+this.state.height-
-2*t;z[2].redraw();z[3].bounds.x=z[1].bounds.x;z[3].bounds.y=z[2].bounds.y;z[3].redraw();for(t=0;t<this.cornerHandles.length;t++)this.cornerHandles[t].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":"");bb.apply(this);null!=this.state&&null!=this.linkHint&&(t=new mxPoint(this.state.getCenterX(),
-this.state.getCenterY()),z=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),B=mxUtils.getBoundingBox(z,this.state.style[mxConstants.STYLE_ROTATION]||"0",t),t=null!=B?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,z=null!=this.state.text?this.state.text.boundingBox:null,null==B&&(B=this.state),B=B.y+B.height,null!=z&&(B=Math.max(B,z.y+z.height)),this.linkHint.style.left=Math.max(0,Math.round(t.x+(t.width-this.linkHint.clientWidth)/
-2))+"px",this.linkHint.style.top=Math.round(B+this.verticalOffset/2+Editor.hintOffset)+"px")};var cb=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){cb.apply(this,arguments);if(null!=this.moveHandles){for(var t=0;t<this.moveHandles.length;t++)null!=this.moveHandles[t]&&null!=this.moveHandles[t].parentNode&&this.moveHandles[t].parentNode.removeChild(this.moveHandles[t]);this.moveHandles=null}if(null!=this.cornerHandles){for(t=0;t<this.cornerHandles.length;t++)null!=this.cornerHandles[t]&&
+var Ua=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(t,z){Ua.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 db=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(t,z){db.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 Ta=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){Ta.apply(this,arguments);var t=!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 z=0;4>z;z++){var A=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);A.dialect=mxConstants.DIALECT_SVG;A.init(this.graph.view.getOverlayPane());this.cornerHandles.push(A)}}var E=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(H,K){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));E()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(H,K){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
+z=this.graph.getLinkForCell(this.state.cell);A=this.graph.getLinksForState(this.state);this.updateLinkHint(z,A);if(null!=z||null!=A&&0<A.length)t=!0;t&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(t,z){try{if(null==t&&(null==z||0==z.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=t||null!=z&&0<z.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding=
+"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=t&&(this.linkHint.appendChild(this.graph.createLinkForHint(t)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var A=document.createElement("img");A.setAttribute("src",Editor.editImage);A.setAttribute("title",
+mxResources.get("editLink"));A.setAttribute("width","11");A.setAttribute("height","11");A.style.marginLeft="10px";A.style.marginBottom="-1px";A.style.cursor="pointer";Editor.isDarkMode()&&(A.style.filter="invert(100%)");this.linkHint.appendChild(A);mxEvent.addListener(A,"click",mxUtils.bind(this,function(K){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(K)}));var E=A.cloneNode(!0);E.setAttribute("src",Editor.trashImage);E.setAttribute("title",mxResources.get("removeIt",
+[mxResources.get("link")]));E.style.marginLeft="4px";this.linkHint.appendChild(E);mxEvent.addListener(E,"click",mxUtils.bind(this,function(K){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(K)}))}if(null!=z)for(A=0;A<z.length;A++){var H=document.createElement("div");H.style.marginTop=null!=t||0<A?"6px":"0px";H.appendChild(this.graph.createLinkForHint(z[A].getAttribute("href"),mxUtils.getTextContent(z[A])));this.linkHint.appendChild(H)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(K){}};
+mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var $a=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){$a.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var t=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(E,H){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));t();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var z=this.graph.getLinkForCell(this.state.cell),A=this.graph.getLinksForState(this.state);if(null!=
+z||null!=A&&0<A.length)this.updateLinkHint(z,A),this.redrawHandles()};var Xa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Xa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Va=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var t=0;t<this.moveHandles.length;t++)this.moveHandles[t].style.left=this.moveHandles[t].rowState.x+
+this.moveHandles[t].rowState.width-5+"px",this.moveHandles[t].style.top=this.moveHandles[t].rowState.y+this.moveHandles[t].rowState.height/2-6+"px";if(null!=this.cornerHandles){t=this.getSelectionBorderInset();var z=this.cornerHandles,A=z[0].bounds.height/2;z[0].bounds.x=this.state.x-z[0].bounds.width/2+t;z[0].bounds.y=this.state.y-A+t;z[0].redraw();z[1].bounds.x=z[0].bounds.x+this.state.width-2*t;z[1].bounds.y=z[0].bounds.y;z[1].redraw();z[2].bounds.x=z[0].bounds.x;z[2].bounds.y=this.state.y+this.state.height-
+2*t;z[2].redraw();z[3].bounds.x=z[1].bounds.x;z[3].bounds.y=z[2].bounds.y;z[3].redraw();for(t=0;t<this.cornerHandles.length;t++)this.cornerHandles[t].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":"");Va.apply(this);null!=this.state&&null!=this.linkHint&&(t=new mxPoint(this.state.getCenterX(),
+this.state.getCenterY()),z=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),A=mxUtils.getBoundingBox(z,this.state.style[mxConstants.STYLE_ROTATION]||"0",t),t=null!=A?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,z=null!=this.state.text?this.state.text.boundingBox:null,null==A&&(A=this.state),A=A.y+A.height,null!=z&&(A=Math.max(A,z.y+z.height)),this.linkHint.style.left=Math.max(0,Math.round(t.x+(t.width-this.linkHint.clientWidth)/
+2))+"px",this.linkHint.style.top=Math.round(A+this.verticalOffset/2+Editor.hintOffset)+"px")};var Ya=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){Ya.apply(this,arguments);if(null!=this.moveHandles){for(var t=0;t<this.moveHandles.length;t++)null!=this.moveHandles[t]&&null!=this.moveHandles[t].parentNode&&this.moveHandles[t].parentNode.removeChild(this.moveHandles[t]);this.moveHandles=null}if(null!=this.cornerHandles){for(t=0;t<this.cornerHandles.length;t++)null!=this.cornerHandles[t]&&
null!=this.cornerHandles[t].node&&null!=this.cornerHandles[t].node.parentNode&&this.cornerHandles[t].node.parentNode.removeChild(this.cornerHandles[t].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 jb=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(jb.apply(this),null!=this.state&&null!=this.linkHint)){var t=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(t=new mxRectangle(t.x,t.y,t.width,t.height),t.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(t.x+(t.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=
-Math.round(t.y+t.height+Editor.hintOffset)+"px"}};var $a=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){$a.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.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),
+Math.round(t.y+t.height+Editor.hintOffset)+"px"}};var bb=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){bb.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var da=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){da.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)}}();Format=function(a,b){this.editorUi=a;this.container=b};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.openFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 0 L 0 8 L 8 16 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.openThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 4 L 0 8 L 8 12 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);
Format.openAsyncFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 4 L 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.blockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
@@ -3259,40 +3259,40 @@ Format.prototype.labelIndex=0;Format.prototype.diagramIndex=0;Format.prototype.c
Format.prototype.init=function(){var a=this.editorUi,b=a.editor,f=b.graph;this.update=mxUtils.bind(this,function(d,g){this.refresh()});f.getSelectionModel().addListener(mxEvent.CHANGE,this.update);f.getModel().addListener(mxEvent.CHANGE,this.update);f.addListener(mxEvent.EDITING_STARTED,this.update);f.addListener(mxEvent.EDITING_STOPPED,this.update);f.getView().addListener("unitChanged",this.update);b.addListener("autosaveChanged",this.update);f.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
this.update);this.refresh()};Format.prototype.clear=function(){this.container.innerText="";if(null!=this.panels)for(var a=0;a<this.panels.length;a++)this.panels[a].destroy();this.panels=[]};Format.prototype.refresh=function(){null!=this.pendingRefresh&&(window.clearTimeout(this.pendingRefresh),this.pendingRefresh=null);this.pendingRefresh=window.setTimeout(mxUtils.bind(this,function(){this.immediateRefresh()}))};
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,b=a.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.color="rgb(112, 112, 112)";f.style.textAlign="left";f.style.cursor="default";var d=document.createElement("div");d.className="geFormatSection";d.style.textAlign="center";d.style.fontWeight="bold";d.style.paddingTop="8px";d.style.fontSize="13px";d.style.borderWidth="0px 0px 1px 1px";d.style.borderStyle=
-"solid";d.style.display="inline-block";d.style.height="25px";d.style.overflow="hidden";d.style.width="100%";this.container.appendChild(f);mxEvent.addListener(d,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),e=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,F,K,D){var O=mxUtils.bind(this,function(Q){k!=C&&(e?this.labelIndex=K:b.isSelectionEmpty()?this.diagramIndex=K:this.currentIndex=K,null!=k&&(k.style.backgroundColor=
-Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=F&&(null!=n&&(n.style.display="none"),n=F,n.style.display=""))});mxEvent.addListener(C,"click",O);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(Q){Q.preventDefault()}));(D&&null==k||K==(e?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&O()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(d,mxResources.get("diagram"));
+"solid";d.style.display="inline-block";d.style.height="25px";d.style.overflow="hidden";d.style.width="100%";this.container.appendChild(f);mxEvent.addListener(d,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),e=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,G,J,D){var N=mxUtils.bind(this,function(Q){k!=C&&(e?this.labelIndex=J:b.isSelectionEmpty()?this.diagramIndex=J:this.currentIndex=J,null!=k&&(k.style.backgroundColor=
+Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=G&&(null!=n&&(n.style.display="none"),n=G,n.style.display=""))});mxEvent.addListener(C,"click",N);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(Q){Q.preventDefault()}));(D&&null==k||J==(e?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&N()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(d,mxResources.get("diagram"));
d.style.borderLeftWidth="0px";f.appendChild(d);g=f.cloneNode(!1);this.panels.push(new DiagramFormatPanel(this,a,g));this.container.appendChild(g);if(null!=Editor.styles){g.style.display="none";d.style.width=this.showCloseButton?"106px":"50%";d.style.cursor="pointer";d.style.backgroundColor=Format.inactiveTabBackgroundColor;var r=d.cloneNode(!1);r.style.borderLeftWidth="1px";r.style.borderRightWidth="1px";r.style.backgroundColor=Format.inactiveTabBackgroundColor;u(d,g,m++);var x=f.cloneNode(!1);x.style.display=
"none";mxUtils.write(r,mxResources.get("style"));f.appendChild(r);this.panels.push(new DiagramStylePanel(this,a,x));this.container.appendChild(x);u(r,x,m++)}this.showCloseButton&&(r=d.cloneNode(!1),r.style.borderLeftWidth="1px",r.style.borderRightWidth="1px",r.style.borderBottomWidth="1px",r.style.backgroundColor=Format.inactiveTabBackgroundColor,r.style.position="absolute",r.style.right="0px",r.style.top="0px",r.style.width="25px",u=document.createElement("img"),u.setAttribute("border","0"),u.setAttribute("src",
Dialog.prototype.closeImage),u.setAttribute("title",mxResources.get("hide")),u.style.position="absolute",u.style.display="block",u.style.right="0px",u.style.top="8px",u.style.cursor="pointer",u.style.marginTop="1px",u.style.marginRight="6px",u.style.border="1px solid transparent",u.style.padding="1px",u.style.opacity=.5,r.appendChild(u),mxEvent.addListener(u,"click",function(){a.actions.get("formatPanel").funct()}),f.appendChild(r))}else if(b.isEditing())mxUtils.write(d,mxResources.get("text")),f.appendChild(d),
-this.panels.push(new TextFormatPanel(this,a,f));else{d.style.backgroundColor=Format.inactiveTabBackgroundColor;d.style.borderLeftWidth="1px";d.style.cursor="pointer";d.style.width=e||0==g.cells.length?"50%":"33.3%";r=d.cloneNode(!1);var A=r.cloneNode(!1);r.style.backgroundColor=Format.inactiveTabBackgroundColor;A.style.backgroundColor=Format.inactiveTabBackgroundColor;e?r.style.borderLeftWidth="0px":(d.style.borderLeftWidth="0px",mxUtils.write(d,mxResources.get("style")),f.appendChild(d),x=f.cloneNode(!1),
-x.style.display="none",this.panels.push(new StyleFormatPanel(this,a,x)),this.container.appendChild(x),u(d,x,m++));mxUtils.write(r,mxResources.get("text"));f.appendChild(r);d=f.cloneNode(!1);d.style.display="none";this.panels.push(new TextFormatPanel(this,a,d));this.container.appendChild(d);mxUtils.write(A,mxResources.get("arrange"));f.appendChild(A);f=f.cloneNode(!1);f.style.display="none";this.panels.push(new ArrangePanel(this,a,f));this.container.appendChild(f);0<g.cells.length?u(r,d,m++):r.style.display=
-"none";u(A,f,m++,!0)}}};BaseFormatPanel=function(a,b,f){this.format=a;this.editorUi=b;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
-BaseFormatPanel.prototype.installInputHandler=function(a,b,f,d,g,e,k,n){e=null!=e?e:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;d=null!=d?d:1;g=null!=g?g:999;var r=null,x=!1,A=mxUtils.bind(this,function(C){var F=n?parseFloat(a.value):parseInt(a.value);isNaN(F)||b!=mxConstants.STYLE_ROTATION||(F=mxUtils.mod(Math.round(100*F),36E3)/100);F=Math.min(g,Math.max(d,isNaN(F)?f:F));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(F),a.value=F+e,
-x=!1);else if(F!=mxUtils.getValue(u.getSelectionState().style,b,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var K=u.getSelectionState().cells;m.setCellStyles(b,F,K);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(K,function(O){O.style.fontSize=F+"px";O.removeAttribute("size")});for(var D=0;D<K.length;D++)0==m.model.getChildCount(K[D])&&m.autoSizeCell(K[D],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[F],"cells",K))}finally{m.getModel().endUpdate()}}a.value=
-F+e;mxEvent.consume(C)});k&&m.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",A);mxEvent.addListener(a,"blur",A);return A};
+this.panels.push(new TextFormatPanel(this,a,f));else{d.style.backgroundColor=Format.inactiveTabBackgroundColor;d.style.borderLeftWidth="1px";d.style.cursor="pointer";d.style.width=e||0==g.cells.length?"50%":"33.3%";r=d.cloneNode(!1);var B=r.cloneNode(!1);r.style.backgroundColor=Format.inactiveTabBackgroundColor;B.style.backgroundColor=Format.inactiveTabBackgroundColor;e?r.style.borderLeftWidth="0px":(d.style.borderLeftWidth="0px",mxUtils.write(d,mxResources.get("style")),f.appendChild(d),x=f.cloneNode(!1),
+x.style.display="none",this.panels.push(new StyleFormatPanel(this,a,x)),this.container.appendChild(x),u(d,x,m++));mxUtils.write(r,mxResources.get("text"));f.appendChild(r);d=f.cloneNode(!1);d.style.display="none";this.panels.push(new TextFormatPanel(this,a,d));this.container.appendChild(d);mxUtils.write(B,mxResources.get("arrange"));f.appendChild(B);f=f.cloneNode(!1);f.style.display="none";this.panels.push(new ArrangePanel(this,a,f));this.container.appendChild(f);0<g.cells.length?u(r,d,m++):r.style.display=
+"none";u(B,f,m++,!0)}}};BaseFormatPanel=function(a,b,f){this.format=a;this.editorUi=b;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
+BaseFormatPanel.prototype.installInputHandler=function(a,b,f,d,g,e,k,n){e=null!=e?e:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;d=null!=d?d:1;g=null!=g?g:999;var r=null,x=!1,B=mxUtils.bind(this,function(C){var G=n?parseFloat(a.value):parseInt(a.value);isNaN(G)||b!=mxConstants.STYLE_ROTATION||(G=mxUtils.mod(Math.round(100*G),36E3)/100);G=Math.min(g,Math.max(d,isNaN(G)?f:G));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(G),a.value=G+e,
+x=!1);else if(G!=mxUtils.getValue(u.getSelectionState().style,b,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var J=u.getSelectionState().cells;m.setCellStyles(b,G,J);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(J,function(N){N.style.fontSize=G+"px";N.removeAttribute("size")});for(var D=0;D<J.length;D++)0==m.model.getChildCount(J[D])&&m.autoSizeCell(J[D],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[G],"cells",J))}finally{m.getModel().endUpdate()}}a.value=
+G+e;mxEvent.consume(C)});k&&m.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",B);mxEvent.addListener(a,"blur",B);return B};
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 f=this.editorUi.actions.get(b);b=null;null!=f&&f.isEnabled()&&(b=mxUtils.button(f.label,function(d){f.funct(d,d)}),b.setAttribute("title",f.label+(null!=f.shortcut?" ("+f.shortcut+")":"")),b.style.marginBottom="2px",b.style.width="210px",a.appendChild(b),result=!0);return b};
BaseFormatPanel.prototype.addActions=function(a,b){for(var f=null,d=null,g=0,e=0;e<b.length;e++){var k=this.addAction(a,b[e]);null!=k&&(g++,0==mxUtils.mod(g,2)&&(d.style.marginRight="2px",d.style.width="104px",k.style.width="104px",f.parentNode.removeChild(f)),f=mxUtils.br(a),d=k)}return g};
BaseFormatPanel.prototype.createStepper=function(a,b,f,d,g,e,k){f=null!=f?f:1;d=null!=d?d:9;var n=10*f,u=document.createElement("div");mxUtils.setPrefixedStyle(u.style,"borderRadius","3px");u.style.border="1px solid rgb(192, 192, 192)";u.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=d+"px";m.style.width="10px";m.className="geBtnUp";u.appendChild(m);var r=m.cloneNode(!1);r.style.border="none";
-r.style.height=d+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=e||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(A)?n:f),null!=b&&b(A));mxEvent.consume(A)});mxEvent.addGestureListeners(m,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=e||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(A)?
-n:f),null!=b&&b(A));mxEvent.consume(A)});if(g){var x=null;mxEvent.addGestureListeners(u,function(A){mxEvent.consume(A)},null,function(A){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(A)}})}else mxEvent.addListener(u,"click",function(A){mxEvent.consume(A)});return u};
+r.style.height=d+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(B){mxEvent.consume(B)},null,function(B){""==a.value&&(a.value=e||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(B)?n:f),null!=b&&b(B));mxEvent.consume(B)});mxEvent.addGestureListeners(m,function(B){mxEvent.consume(B)},null,function(B){""==a.value&&(a.value=e||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(B)?
+n:f),null!=b&&b(B));mxEvent.consume(B)});if(g){var x=null;mxEvent.addGestureListeners(u,function(B){mxEvent.consume(B)},null,function(B){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(B)}})}else mxEvent.addListener(u,"click",function(B){mxEvent.consume(B)});return u};
BaseFormatPanel.prototype.createOption=function(a,b,f,d,g){var e=document.createElement("div");e.style.padding="3px 0px 3px 0px";e.style.whiteSpace="nowrap";e.style.textOverflow="ellipsis";e.style.overflow="hidden";e.style.width="200px";e.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";e.appendChild(k);var n=document.createElement("span");n.style.verticalAlign="top";n.style.userSelect="none";mxUtils.write(n,
-a);e.appendChild(n);var u=!1,m=b(),r=function(x,A){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,b()!=m&&f(m,A)),u=!1)};mxEvent.addListener(e,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var A=mxEvent.getSource(x);if(A==e||A==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=d&&(d.install(r),this.listeners.push(d));null!=g&&g(e);return e};
-BaseFormatPanel.prototype.createCellOption=function(a,b,f,d,g,e,k,n,u){var m=this.editorUi,r=m.editor.graph;d=null!=d?"null"==d?null:d:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,b,f)!=g},function(A){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;A=A?d:g;r.setCellStyles(b,A,C);null!=e&&e(C,A);m.fireEvent(new mxEventObject("styleChanged",
-"keys",[b],"values",[A],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(A){this.listener=function(){A(mxUtils.getValue(x,b,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
+a);e.appendChild(n);var u=!1,m=b(),r=function(x,B){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,b()!=m&&f(m,B)),u=!1)};mxEvent.addListener(e,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var B=mxEvent.getSource(x);if(B==e||B==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=d&&(d.install(r),this.listeners.push(d));null!=g&&g(e);return e};
+BaseFormatPanel.prototype.createCellOption=function(a,b,f,d,g,e,k,n,u){var m=this.editorUi,r=m.editor.graph;d=null!=d?"null"==d?null:d:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,b,f)!=g},function(B){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;B=B?d:g;r.setCellStyles(b,B,C);null!=e&&e(C,B);m.fireEvent(new mxEventObject("styleChanged",
+"keys",[b],"values",[B],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(B){this.listener=function(){B(mxUtils.getValue(x,b,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,b,f,d,g,e,k,n){var u=document.createElement("div");u.style.padding="3px 0px 3px 0px";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.width="200px";u.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||u.appendChild(m);var r=document.createElement("span");r.style.verticalAlign="top";mxUtils.write(r,a);u.appendChild(r);var x=b(),
-A=!1,C=null,F=function(D,O,Q){if(!A){var R="null"==d?null:d;A=!0;D=/(^#?[a-zA-Z0-9]*$)/.test(D)?D:R;R=null!=D&&D!=mxConstants.NONE?D:R;var P=document.createElement("div");P.style.width="36px";P.style.height="12px";P.style.margin="3px";P.style.border="1px solid black";P.style.backgroundColor="default"==R?n:R;C.innerText="";C.appendChild(P);null!=D&&D!=mxConstants.NONE&&1<D.length&&"string"===typeof D&&(R="#"==D.charAt(0)?D.substring(1).toUpperCase():D,R=ColorDialog.prototype.colorNames[R],C.setAttribute("title",
-null!=R?R+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=D&&D!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=e&&e("null"==D?null:D);x=D;O||(Q||k||b()!=x)&&f("null"==x?null:x,x);A=!1}},K=document.createElement("input");K.setAttribute("type","color");K.style.visibility="hidden";K.style.width="0px";K.style.height="0px";K.style.border=
-"none";u.appendChild(K);C=mxUtils.button("",mxUtils.bind(this,function(D){var O=x;"default"==O&&(O=n);!mxEvent.isShiftDown(D)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(O,function(Q){F(Q,null,!0)},n):(K.value=O,K.click(),mxEvent.addListener(K,"input",function(){F(K.value,null,!0)}));mxEvent.consume(D)}));C.style.position="absolute";C.style.marginTop="-3px";C.style.left="178px";C.style.height="22px";C.className="geColorBtn";C.style.display=m.checked||k?"":"none";u.appendChild(C);a=null!=
-x&&"string"===typeof x&&"#"==x.charAt(0)?x.substring(1).toUpperCase():x;a=ColorDialog.prototype.colorNames[a];C.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(u,"click",function(D){D=mxEvent.getSource(D);if(D==m||"INPUT"!=D.nodeName)D!=m&&(m.checked=!m.checked),m.checked||null==x||x==mxConstants.NONE||d==mxConstants.NONE||(d=x),F(m.checked?d:mxConstants.NONE)});F(x,!0);null!=g&&(g.install(F),this.listeners.push(g));return u};
+B=!1,C=null,G=function(D,N,Q){if(!B){var R="null"==d?null:d;B=!0;D=/(^#?[a-zA-Z0-9]*$)/.test(D)?D:R;R=null!=D&&D!=mxConstants.NONE?D:R;var P=document.createElement("div");P.style.width="36px";P.style.height="12px";P.style.margin="3px";P.style.border="1px solid black";P.style.backgroundColor="default"==R?n:R;C.innerText="";C.appendChild(P);null!=D&&D!=mxConstants.NONE&&1<D.length&&"string"===typeof D&&(R="#"==D.charAt(0)?D.substring(1).toUpperCase():D,R=ColorDialog.prototype.colorNames[R],C.setAttribute("title",
+null!=R?R+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=D&&D!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=e&&e("null"==D?null:D);x=D;N||(Q||k||b()!=x)&&f("null"==x?null:x,x);B=!1}},J=document.createElement("input");J.setAttribute("type","color");J.style.visibility="hidden";J.style.width="0px";J.style.height="0px";J.style.border=
+"none";u.appendChild(J);C=mxUtils.button("",mxUtils.bind(this,function(D){var N=x;"default"==N&&(N=n);!mxEvent.isShiftDown(D)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(N,function(Q){G(Q,null,!0)},n):(J.value=N,J.click(),mxEvent.addListener(J,"input",function(){G(J.value,null,!0)}));mxEvent.consume(D)}));C.style.position="absolute";C.style.marginTop="-3px";C.style.left="178px";C.style.height="22px";C.className="geColorBtn";C.style.display=m.checked||k?"":"none";u.appendChild(C);a=null!=
+x&&"string"===typeof x&&"#"==x.charAt(0)?x.substring(1).toUpperCase():x;a=ColorDialog.prototype.colorNames[a];C.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(u,"click",function(D){D=mxEvent.getSource(D);if(D==m||"INPUT"!=D.nodeName)D!=m&&(m.checked=!m.checked),m.checked||null==x||x==mxConstants.NONE||d==mxConstants.NONE||(d=x),G(m.checked?d:mxConstants.NONE)});G(x,!0);null!=g&&(g.install(G),this.listeners.push(g));return u};
BaseFormatPanel.prototype.createCellColorOption=function(a,b,f,d,g,e){var k=this.editorUi,n=k.editor.graph;return this.createColorOption(a,function(){var u=n.view.getState(k.getSelectionState().cells[0]);return null!=u?mxUtils.getValue(u.style,b,null):null},function(u,m){n.getModel().beginUpdate();try{var r=k.getSelectionState().cells;n.setCellStyles(b,u,r);null!=g&&g(u);k.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[u],"cells",r))}finally{n.getModel().endUpdate()}},f||mxConstants.NONE,
{install:function(u){this.listener=function(){var m=n.view.getState(k.getSelectionState().cells[0]);null!=m&&u(mxUtils.getValue(m.style,b,null),!0)};n.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){n.getModel().removeListener(this.listener)}},d,null,e)};
BaseFormatPanel.prototype.addArrow=function(a,b,f){b=null!=b?b:10;var d=document.createElement("div");d.style.borderLeft="1px solid #a0a0a0";d.style.display="inline-block";d.style.height=b+"px";d.style.paddingRight="4px";d.style.padding="6px";f?(d.style.verticalAlign="top",d.style.marginLeft="1px"):(b=10-b,2==b?d.style.paddingTop="6px":0<b?d.style.paddingTop=6-b+"px":d.style.marginTop="-2px");b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",
Toolbar.prototype.dropDownImage);d.appendChild(b);b=d.getElementsByTagName("img")[0];b.style.position="relative";b.style.left="1px";b.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(d,70);b=a.getElementsByTagName("div")[0];null!=b&&(b.style.paddingRight="6px",b.style.marginLeft="4px",b.style.marginTop="-1px",b.style.display="inline-block",mxUtils.setOpacity(b,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage=
"none";a.style.width="auto";a.className+=" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(d);return b};
BaseFormatPanel.prototype.addUnitInput=function(a,b,f,d,g,e,k,n,u){k=null!=k?k:0;b=document.createElement("input");b.style.position="absolute";b.style.textAlign="right";b.style.marginTop="-2px";b.style.left=228-f-d+"px";b.style.width=d+"px";b.style.height="21px";b.style.border="1px solid rgb(160, 160, 160)";b.style.borderRadius="4px";b.style.boxSizing="border-box";a.appendChild(b);d=this.createStepper(b,g,e,null,n,null,u);d.style.marginTop=k-2+"px";d.style.left=228-f+"px";a.appendChild(d);return b};
-BaseFormatPanel.prototype.createRelativeOption=function(a,b,f,d,g){f=null!=f?f:52;var e=this.editorUi,k=e.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=d)d(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var A=k.view.getState(e.getSelectionState().cells[0]);null!=A&&x!=mxUtils.getValue(A.style,b,100)&&(100==x&&(x=null),A=e.getSelectionState().cells,
-k.setCellStyles(b,x,A),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[x],"cells",A)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=d);if(null!=b){var m=mxUtils.bind(this,function(r,x,A){if(A||u!=document.activeElement)r=e.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,b,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
+BaseFormatPanel.prototype.createRelativeOption=function(a,b,f,d,g){f=null!=f?f:52;var e=this.editorUi,k=e.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=d)d(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var B=k.view.getState(e.getSelectionState().cells[0]);null!=B&&x!=mxUtils.getValue(B.style,b,100)&&(100==x&&(x=null),B=e.getSelectionState().cells,
+k.setCellStyles(b,x,B),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[x],"cells",B)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=d);if(null!=b){var m=mxUtils.bind(this,function(r,x,B){if(B||u!=document.activeElement)r=e.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,b,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
27==r.keyCode&&(m(null,null,!0),k.container.focus(),mxEvent.consume(r))});k.getModel().addListener(mxEvent.CHANGE,m);this.listeners.push({destroy:function(){k.getModel().removeListener(m)}});m()}mxEvent.addListener(u,"blur",a);mxEvent.addListener(u,"change",a);null!=g&&g(u);return n};
BaseFormatPanel.prototype.addLabel=function(a,b,f,d){d=null!=d?d:61;var g=document.createElement("div");mxUtils.write(g,b);g.style.position="absolute";g.style.left=240-f-d+"px";g.style.width=d+"px";g.style.marginTop="6px";g.style.textAlign="center";a.appendChild(g)};
BaseFormatPanel.prototype.addKeyHandler=function(a,b){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(f){13==f.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(f)):27==f.keyCode&&(null!=b&&b(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(f))}))};
@@ -3323,111 +3323,111 @@ 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,f=this.editorUi,d=f.editor.graph,g=d.getModel(),e=f.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var n=document.createElement("div");n.style.position="absolute";n.style.width="50px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("size"));k.appendChild(n);var u=this.addUnitInput(k,this.getUnit(),87,52,function(){C.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
-m=this.addUnitInput(k,this.getUnit(),16,52,function(){F.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,
+m=this.addUnitInput(k,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(){f.actions.get("autosize").funct()});k.appendChild(r);e.row?(u.style.visibility="hidden",u.nextSibling.style.visibility="hidden"):this.addLabel(k,mxResources.get("width"),87);this.addLabel(k,mxResources.get("height"),16);mxUtils.br(k);n=document.createElement("div");n.style.paddingTop="8px";n.style.paddingRight="20px";n.style.whiteSpace="nowrap";n.style.textAlign="right";var x=this.createCellOption(mxResources.get("constrainProportions"),
-mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);e.cell||e.row?r.style.visibility="hidden":k.appendChild(n);var A=x.getElementsByTagName("input")[0];this.addKeyHandler(u,Q);this.addKeyHandler(m,Q);var C=this.addGeometryHandler(u,function(T,U,fa){if(d.isTableCell(fa))return d.setTableColumnWidth(fa,U-T.width,!0),!0;0<T.width&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.height=Math.round(T.height*U*100/T.width)/100),T.width=U)});var F=this.addGeometryHandler(m,function(T,
-U,fa){d.isTableCell(fa)&&(fa=d.model.getParent(fa));if(d.isTableRow(fa))return d.setTableRowHeight(fa,U-T.height),!0;0<T.height&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.width=Math.round(T.width*U*100/T.height)/100),T.height=U)});(e.resizable||e.row||e.cell)&&a.appendChild(k);var K=this.createPanel();K.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
-K.appendChild(n);var D=this.addUnitInput(K,this.getUnit(),87,52,function(){R.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),O=this.addUnitInput(K,this.getUnit(),16,52,function(){P.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(K);this.addLabel(K,mxResources.get("left"),87);this.addLabel(K,mxResources.get("top"),16);var Q=mxUtils.bind(this,function(T,U,fa){e=f.getSelectionState();if(e.containsLabel||e.vertices.length!=d.getSelectionCount()||
-null==e.width||null==e.height)k.style.display="none";else{k.style.display="";if(fa||document.activeElement!=u)u.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(fa||document.activeElement!=m)m.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){K.style.display="";if(fa||document.activeElement!=D)D.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(fa||document.activeElement!=O)O.value=this.inUnit(e.y)+
-(""==e.y?"":" "+this.getUnit())}else K.style.display="none"});this.addKeyHandler(D,Q);this.addKeyHandler(O,Q);g.addListener(mxEvent.CHANGE,Q);this.listeners.push({destroy:function(){g.removeListener(Q)}});Q();var R=this.addGeometryHandler(D,function(T,U){U=b.fromUnit(U);T.relative?T.offset.x=U:T.x=U});var P=this.addGeometryHandler(O,function(T,U){U=b.fromUnit(U);T.relative?T.offset.y=U:T.y=U});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&g.isEdge(g.getParent(e.vertices[0]))){var Z=d.getCellGeometry(e.vertices[0]);
-null!=Z&&Z.relative&&(n=mxUtils.button(mxResources.get("center"),mxUtils.bind(this,function(T){g.beginUpdate();try{Z=Z.clone(),Z.x=0,Z.y=0,Z.offset=new mxPoint,g.setGeometry(e.vertices[0],Z)}finally{g.endUpdate()}})),n.setAttribute("title",mxResources.get("center")),n.style.width="210px",n.style.position="absolute",mxUtils.br(K),mxUtils.br(K),K.appendChild(n))}a.appendChild(K)}};
-ArrangePanel.prototype.addGeometryHandler=function(a,b){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=e+" "+k.getUnit();else if(u!=e){g.getModel().beginUpdate();try{for(var m=d.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!b(x,u,m[r]))){var A=g.view.getState(m[r]);null!=A&&g.isRecursiveVertexResize(A)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}e=
+mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);e.cell||e.row?r.style.visibility="hidden":k.appendChild(n);var B=x.getElementsByTagName("input")[0];this.addKeyHandler(u,Q);this.addKeyHandler(m,Q);var C=this.addGeometryHandler(u,function(U,V,ia){if(d.isTableCell(ia))return d.setTableColumnWidth(ia,V-U.width,!0),!0;0<U.width&&(V=Math.max(1,b.fromUnit(V)),B.checked&&(U.height=Math.round(U.height*V*100/U.width)/100),U.width=V)});var G=this.addGeometryHandler(m,function(U,
+V,ia){d.isTableCell(ia)&&(ia=d.model.getParent(ia));if(d.isTableRow(ia))return d.setTableRowHeight(ia,V-U.height),!0;0<U.height&&(V=Math.max(1,b.fromUnit(V)),B.checked&&(U.width=Math.round(U.width*V*100/U.height)/100),U.height=V)});(e.resizable||e.row||e.cell)&&a.appendChild(k);var J=this.createPanel();J.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
+J.appendChild(n);var D=this.addUnitInput(J,this.getUnit(),87,52,function(){R.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),N=this.addUnitInput(J,this.getUnit(),16,52,function(){P.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(J);this.addLabel(J,mxResources.get("left"),87);this.addLabel(J,mxResources.get("top"),16);var Q=mxUtils.bind(this,function(U,V,ia){e=f.getSelectionState();if(e.containsLabel||e.vertices.length!=d.getSelectionCount()||
+null==e.width||null==e.height)k.style.display="none";else{k.style.display="";if(ia||document.activeElement!=u)u.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(ia||document.activeElement!=m)m.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){J.style.display="";if(ia||document.activeElement!=D)D.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(ia||document.activeElement!=N)N.value=this.inUnit(e.y)+
+(""==e.y?"":" "+this.getUnit())}else J.style.display="none"});this.addKeyHandler(D,Q);this.addKeyHandler(N,Q);g.addListener(mxEvent.CHANGE,Q);this.listeners.push({destroy:function(){g.removeListener(Q)}});Q();var R=this.addGeometryHandler(D,function(U,V){V=b.fromUnit(V);U.relative?U.offset.x=V:U.x=V});var P=this.addGeometryHandler(N,function(U,V){V=b.fromUnit(V);U.relative?U.offset.y=V:U.y=V});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&g.isEdge(g.getParent(e.vertices[0]))){var Z=d.getCellGeometry(e.vertices[0]);
+null!=Z&&Z.relative&&(n=mxUtils.button(mxResources.get("center"),mxUtils.bind(this,function(U){g.beginUpdate();try{Z=Z.clone(),Z.x=0,Z.y=0,Z.offset=new mxPoint,g.setGeometry(e.vertices[0],Z)}finally{g.endUpdate()}})),n.setAttribute("title",mxResources.get("center")),n.style.width="210px",n.style.position="absolute",mxUtils.br(J),mxUtils.br(J),J.appendChild(n))}a.appendChild(J)}};
+ArrangePanel.prototype.addGeometryHandler=function(a,b){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=e+" "+k.getUnit();else if(u!=e){g.getModel().beginUpdate();try{for(var m=d.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!b(x,u,m[r]))){var B=g.view.getState(m[r]);null!=B&&g.isRecursiveVertexResize(B)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}e=
u;a.value=u+" "+k.getUnit()}}mxEvent.consume(n)}var d=this.editorUi,g=d.editor.graph,e=null,k=this;mxEvent.addListener(a,"blur",f);mxEvent.addListener(a,"change",f);mxEvent.addListener(a,"focus",function(){e=a.value});return f};
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function f(k){if(""!=a.value){var n=parseFloat(a.value);if(isNaN(n))a.value=e+" pt";else if(n!=e){g.getModel().beginUpdate();try{for(var u=d.getSelectionState().cells,m=0;m<u.length;m++)if(g.getModel().isEdge(u[m])){var r=g.getCellGeometry(u[m]);null!=r&&(r=r.clone(),b(r,n),g.getModel().setGeometry(u[m],r))}}finally{g.getModel().endUpdate()}e=n;a.value=n+" pt"}}mxEvent.consume(k)}var d=this.editorUi,g=d.editor.graph,e=null;mxEvent.addListener(a,
"blur",f);mxEvent.addListener(a,"change",f);mxEvent.addListener(a,"focus",function(){e=a.value});return f};
-ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState(),g=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"));g.appendChild(e);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,F);var n=mxUtils.bind(this,function(R){var P=parseInt(k.value);P=Math.min(999,
+ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState(),g=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"));g.appendChild(e);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,G);var n=mxUtils.bind(this,function(R){var P=parseInt(k.value);P=Math.min(999,
Math.max(1,isNaN(P)?1:P));if(P!=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var Z=b.getSelectionState().cells;f.setCellStyles("width",P,Z);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[P],"cells",Z))}k.value=P+" pt";mxEvent.consume(R)});mxEvent.addListener(k,"blur",n);mxEvent.addListener(k,"change",n);a.appendChild(g);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("linestart"));u.appendChild(e);var m=this.addUnitInput(u,"pt",87,52,function(){K.apply(this,arguments)}),r=this.addUnitInput(u,"pt",16,52,function(){D.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(m,F);this.addKeyHandler(r,F);var x=this.createPanel();x.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"));x.appendChild(e);var A=this.addUnitInput(x,"pt",87,52,function(){O.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){Q.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(A,F);this.addKeyHandler(C,F);var F=mxUtils.bind(this,function(R,P,Z){d=b.getSelectionState();
+"absolute";e.style.width="70px";e.style.marginTop="0px";mxUtils.write(e,mxResources.get("linestart"));u.appendChild(e);var m=this.addUnitInput(u,"pt",87,52,function(){J.apply(this,arguments)}),r=this.addUnitInput(u,"pt",16,52,function(){D.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(m,G);this.addKeyHandler(r,G);var x=this.createPanel();x.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"));x.appendChild(e);var B=this.addUnitInput(x,"pt",87,52,function(){N.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){Q.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(B,G);this.addKeyHandler(C,G);var G=mxUtils.bind(this,function(R,P,Z){d=b.getSelectionState();
R=d.cells[0];if("link"==d.style.shape||"flexArrow"==d.style.shape){if(g.style.display="",Z||document.activeElement!=k)Z=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),k.value=Z+" pt"}else g.style.display="none";1==d.cells.length&&f.model.isEdge(R)?(Z=f.model.getGeometry(R),null!=Z.sourcePoint&&null==f.model.getTerminal(R,!0)?(m.value=Z.sourcePoint.x,r.value=Z.sourcePoint.y):u.style.display="none",null!=Z.targetPoint&&null==f.model.getTerminal(R,!1)?
-(A.value=Z.targetPoint.x,C.value=Z.targetPoint.y):x.style.display="none"):(u.style.display="none",x.style.display="none")});var K=this.addEdgeGeometryHandler(m,function(R,P){R.sourcePoint.x=P});var D=this.addEdgeGeometryHandler(r,function(R,P){R.sourcePoint.y=P});var O=this.addEdgeGeometryHandler(A,function(R,P){R.targetPoint.x=P});var Q=this.addEdgeGeometryHandler(C,function(R,P){R.targetPoint.y=P});f.getModel().addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){f.getModel().removeListener(F)}});
-F()};TextFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);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(ca,t){ca.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,d=f.editor.graph,g=f.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=
+(B.value=Z.targetPoint.x,C.value=Z.targetPoint.y):x.style.display="none"):(u.style.display="none",x.style.display="none")});var J=this.addEdgeGeometryHandler(m,function(R,P){R.sourcePoint.x=P});var D=this.addEdgeGeometryHandler(r,function(R,P){R.sourcePoint.y=P});var N=this.addEdgeGeometryHandler(B,function(R,P){R.targetPoint.x=P});var Q=this.addEdgeGeometryHandler(C,function(R,P){R.targetPoint.y=P});f.getModel().addListener(mxEvent.CHANGE,G);this.listeners.push({destroy:function(){f.getModel().removeListener(G)}});
+G()};TextFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);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(da,t){da.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,d=f.editor.graph,g=f.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 k=e.cloneNode(),n=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",k,null,!0);n.style.color="rgb(112, 112, 112)";n.style.whiteSpace="nowrap";n.style.overflow="hidden";n.style.margin="0px";this.addArrow(n);n.style.width="200px";n.style.height="15px";n=n.getElementsByTagName("div")[0];n.style.cssFloat="right";a.appendChild(k)}a.appendChild(e);
k=this.createPanel();k.style.marginTop="8px";k.style.borderTop="1px solid #c0c0c0";k.style.paddingTop="6px";k.style.paddingBottom="6px";var u=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",e,null,!0);u.style.color="rgb(112, 112, 112)";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.margin="0px";this.addArrow(u);u.style.width="200px";u.style.height="15px";n=e.cloneNode(!1);n.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold",
"italic","underline"],n,!0);m[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");m[1].setAttribute("title",mxResources.get("italic")+" ("+this.editorUi.actions.get("italic").shortcut+")");m[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var r=this.editorUi.toolbar.addItems(["vertical"],n,!0)[0];a.appendChild(n);this.styleButtons(m);this.styleButtons([r]);var x=e.cloneNode(!1);x.style.marginLeft=
-"-3px";x.style.paddingBottom="0px";var A=function(ca){return function(){return ca()}},C=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),d.cellEditor.isContentEditing()?function(ca){d.cellEditor.alignText(mxConstants.ALIGN_LEFT,ca);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",g.cells))}:A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),x),F=this.editorUi.toolbar.addButton("geSprite-center",
-mxResources.get("center"),d.cellEditor.isContentEditing()?function(ca){d.cellEditor.alignText(mxConstants.ALIGN_CENTER,ca);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",g.cells))}:A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),x),K=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),d.cellEditor.isContentEditing()?function(ca){d.cellEditor.alignText(mxConstants.ALIGN_RIGHT,
-ca);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",g.cells))}:A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),x);this.styleButtons([C,F,K]);if(d.cellEditor.isContentEditing()){var D=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},n);this.styleButtons([D]);D.firstChild.style.background=
+"-3px";x.style.paddingBottom="0px";var B=function(da){return function(){return da()}},C=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),d.cellEditor.isContentEditing()?function(da){d.cellEditor.alignText(mxConstants.ALIGN_LEFT,da);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",g.cells))}:B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),x),G=this.editorUi.toolbar.addButton("geSprite-center",
+mxResources.get("center"),d.cellEditor.isContentEditing()?function(da){d.cellEditor.alignText(mxConstants.ALIGN_CENTER,da);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",g.cells))}:B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),x),J=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),d.cellEditor.isContentEditing()?function(da){d.cellEditor.alignText(mxConstants.ALIGN_RIGHT,
+da);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",g.cells))}:B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),x);this.styleButtons([C,G,J]);if(d.cellEditor.isContentEditing()){var D=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},n);this.styleButtons([D]);D.firstChild.style.background=
"url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
-D.firstChild.style.backgroundPosition="2px 2px";D.firstChild.style.backgroundSize="18px 18px";this.styleButtons([D])}var O=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),x),Q=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),x),R=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),x);this.styleButtons([O,Q,R]);a.appendChild(x);var P,Z,T,U,fa;if(d.cellEditor.isContentEditing()){O.style.display="none";Q.style.display="none";R.style.display="none";r.style.display="none";var ha=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==ha.style.opacity&&document.execCommand("justifyfull",!1,null)},x);ha.style.marginRight=
-"9px";ha.style.opacity=1;this.styleButtons([ha,P=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},x),Z=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},x)]);P.style.marginLeft="10px";A=x.cloneNode(!1);A.style.paddingTop="4px";x=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
-mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
-!1,null)},A),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){d.cellEditor.toggleViewMode()},A)];this.styleButtons(x);x[x.length-2].style.marginLeft="10px";a.appendChild(A)}else m[2].style.marginRight="12px",K.style.marginRight="12px";x=e.cloneNode(!1);x.style.marginLeft="0px";x.style.paddingTop="8px";x.style.paddingBottom=
+D.firstChild.style.backgroundPosition="2px 2px";D.firstChild.style.backgroundSize="18px 18px";this.styleButtons([D])}var N=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),x),Q=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),x),R=this.editorUi.toolbar.addButton("geSprite-bottom",
+mxResources.get("bottom"),B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),x);this.styleButtons([N,Q,R]);a.appendChild(x);var P,Z,U,V,ia;if(d.cellEditor.isContentEditing()){N.style.display="none";Q.style.display="none";R.style.display="none";r.style.display="none";var ha=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==ha.style.opacity&&document.execCommand("justifyfull",!1,null)},x);ha.style.marginRight=
+"9px";ha.style.opacity=1;this.styleButtons([ha,P=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},x),Z=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},x)]);P.style.marginLeft="10px";B=x.cloneNode(!1);B.style.paddingTop="4px";x=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
+mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
+!1,null)},B),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){d.cellEditor.toggleViewMode()},B)];this.styleButtons(x);x[x.length-2].style.marginLeft="10px";a.appendChild(B)}else m[2].style.marginRight="12px",J.style.marginRight="12px";x=e.cloneNode(!1);x.style.marginLeft="0px";x.style.paddingTop="8px";x.style.paddingBottom=
"4px";x.style.fontWeight="normal";mxUtils.write(x,mxResources.get("position"));var ba=document.createElement("select");ba.style.position="absolute";ba.style.left="126px";ba.style.width="98px";ba.style.border="1px solid rgb(160, 160, 160)";ba.style.borderRadius="4px";ba.style.marginTop="-2px";D="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" ");var qa={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]};for(A=0;A<D.length;A++){var I=document.createElement("option");I.setAttribute("value",D[A]);mxUtils.write(I,mxResources.get(D[A]));ba.appendChild(I)}x.appendChild(ba);D=e.cloneNode(!1);D.style.marginLeft="0px";D.style.paddingTop=
-"4px";D.style.paddingBottom="4px";D.style.fontWeight="normal";mxUtils.write(D,mxResources.get("writingDirection"));var L=document.createElement("select");L.style.position="absolute";L.style.border="1px solid rgb(160, 160, 160)";L.style.left="126px";L.style.width="98px";L.style.borderRadius="4px";L.style.marginTop="-2px";I=["automatic","leftToRight","rightToLeft"];var H={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL};for(A=0;A<I.length;A++){var S=
-document.createElement("option");S.setAttribute("value",I[A]);mxUtils.write(S,mxResources.get(I[A]));L.appendChild(S)}D.appendChild(L);d.isEditing()||(a.appendChild(x),mxEvent.addListener(ba,"change",function(ca){d.getModel().beginUpdate();try{var t=qa[ba.value];null!=t&&(d.setCellStyles(mxConstants.STYLE_LABEL_POSITION,t[0],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,t[1],g.cells),d.setCellStyles(mxConstants.STYLE_ALIGN,t[2],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
-t[3],g.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(ca)}),a.appendChild(D),mxEvent.addListener(L,"change",function(ca){d.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,H[L.value],g.cells);mxEvent.consume(ca)}));var V=document.createElement("input");V.style.position="absolute";V.style.border="1px solid rgb(160, 160, 160)";V.style.textAlign="right";V.style.marginTop="4px";V.style.left="161px";V.style.width="53px";V.style.borderRadius="4px";V.style.height="23px";V.style.boxSizing="border-box";
-n.appendChild(V);var ea=null;x=this.installInputHandler(V,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(ca){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var t=function(G,M){null!=d.cellEditor.textarea&&G!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(G)&&(M||z.containsNode(G,!0))&&("FONT"==G.nodeName?(G.removeAttribute("size"),G.style.fontSize=ca+"px"):mxUtils.getCurrentStyle(G).fontSize!=ca+"px"&&(mxUtils.getCurrentStyle(G.parentNode).fontSize!=
-ca+"px"?G.style.fontSize=ca+"px":G.style.fontSize=""));f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],"values",[ca],"cells",g.cells))},z=window.getSelection(),B=0<z.rangeCount?z.getRangeAt(0).commonAncestorContainer:d.cellEditor.textarea;B!=d.cellEditor.textarea&&B.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");B!=d.cellEditor.textarea&&(B=B.parentNode);if(null!=B&&B.nodeType==mxConstants.NODETYPE_ELEMENT){var E=B.getElementsByTagName("*");
-t(B);for(B=0;B<E.length;B++)t(E[B])}V.value=ca+" pt"}else if(window.getSelection||document.selection)if(t=function(G,M){for(;null!=M;){if(M===G)return!0;M=M.parentNode}return!1},E=null,document.selection?E=document.selection.createRange().parentElement():(z=window.getSelection(),0<z.rangeCount&&(E=z.getRangeAt(0).commonAncestorContainer)),null!=E&&t(d.cellEditor.textarea,E))for(ea=ca,document.execCommand("fontSize",!1,"4"),E=d.cellEditor.textarea.getElementsByTagName("font"),B=0;B<E.length;B++)if("4"==
-E[B].getAttribute("size")){E[B].removeAttribute("size");E[B].style.fontSize=ea+"px";window.setTimeout(function(){V.value=ea+" pt";ea=null},0);break}},!0);x=this.createStepper(V,x,1,10,!0,Menus.prototype.defaultFontSize);x.style.display=V.style.display;x.style.marginTop="4px";x.style.left="214px";n.appendChild(x);n=u.getElementsByTagName("div")[0];n.style.cssFloat="right";var ka=null,wa=d.shapeBackgroundColor,W=null,aa=d.shapeForegroundColor,oa=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
-function(){return wa},function(ca){document.execCommand("backcolor",!1,ca!=mxConstants.NONE?ca:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],"values",[ca],"cells",g.cells))},d.shapeBackgroundColor,{install:function(ca){ka=ca},destroy:function(){ka=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"default",null,function(ca){d.updateLabelElements(g.cells,function(t){t.style.backgroundColor=
-null})},d.shapeBackgroundColor);oa.style.fontWeight="bold";var ua=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,d.shapeForegroundColor);ua.style.fontWeight="bold";n=1<=g.vertices.length?d.stylesheet.getDefaultVertexStyle():d.stylesheet.getDefaultEdgeStyle();n=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return aa},function(ca){if(mxClient.IS_FF){for(var t=d.cellEditor.textarea.getElementsByTagName("font"),
-z=[],B=0;B<t.length;B++)z.push({node:t[B],color:t[B].getAttribute("color")});document.execCommand("forecolor",!1,ca!=mxConstants.NONE?ca:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[ca],"cells",g.cells));ca=d.cellEditor.textarea.getElementsByTagName("font");for(B=0;B<ca.length;B++)if(B>=z.length||ca[B]!=z[B].node||ca[B]==z[B].node&&ca[B].getAttribute("color")!=z[B].color){z=ca[B].firstChild;if(null!=z&&"A"==z.nodeName&&null==z.nextSibling&&
-null!=z.firstChild){ca[B].parentNode.insertBefore(z,ca[B]);for(t=z.firstChild;null!=t;){var E=t.nextSibling;ca[B].appendChild(t);t=E}z.appendChild(ca[B])}break}}else document.execCommand("forecolor",!1,ca!=mxConstants.NONE?ca:"transparent"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[ca],"cells",g.cells))},null!=n[mxConstants.STYLE_FONTCOLOR]?n[mxConstants.STYLE_FONTCOLOR]:d.shapeForegroundColor,{install:function(ca){W=ca},destroy:function(){W=null}},
-null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR,"default",function(ca){oa.style.display=ca==mxConstants.NONE?"none":"";ua.style.display=oa.style.display},function(ca){ca==mxConstants.NONE?d.setCellStyles(mxConstants.STYLE_NOLABEL,"1",g.cells):d.setCellStyles(mxConstants.STYLE_NOLABEL,null,g.cells);d.setCellStyles(mxConstants.STYLE_FONTCOLOR,ca,g.cells);d.updateLabelElements(g.cells,function(t){t.removeAttribute("color");t.style.color=null})},d.shapeForegroundColor);
-n.style.fontWeight="bold";k.appendChild(n);k.appendChild(oa);d.cellEditor.isContentEditing()||k.appendChild(ua);a.appendChild(k);k=this.createPanel();k.style.paddingTop="2px";k.style.paddingBottom="4px";n=d.filterSelectionCells(mxUtils.bind(this,function(ca){var t=d.view.getState(ca);return null==t||d.isAutoSizeState(t)||d.getModel().isEdge(ca)||!d.isTableRow(ca)&&!d.isTableCell(ca)&&!d.isCellResizable(ca)}));x=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap",
+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]};for(B=0;B<D.length;B++){var O=document.createElement("option");O.setAttribute("value",D[B]);mxUtils.write(O,mxResources.get(D[B]));ba.appendChild(O)}x.appendChild(ba);D=e.cloneNode(!1);D.style.marginLeft="0px";D.style.paddingTop=
+"4px";D.style.paddingBottom="4px";D.style.fontWeight="normal";mxUtils.write(D,mxResources.get("writingDirection"));var S=document.createElement("select");S.style.position="absolute";S.style.border="1px solid rgb(160, 160, 160)";S.style.left="126px";S.style.width="98px";S.style.borderRadius="4px";S.style.marginTop="-2px";O=["automatic","leftToRight","rightToLeft"];var F={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL};for(B=0;B<O.length;B++){var L=
+document.createElement("option");L.setAttribute("value",O[B]);mxUtils.write(L,mxResources.get(O[B]));S.appendChild(L)}D.appendChild(S);d.isEditing()||(a.appendChild(x),mxEvent.addListener(ba,"change",function(da){d.getModel().beginUpdate();try{var t=qa[ba.value];null!=t&&(d.setCellStyles(mxConstants.STYLE_LABEL_POSITION,t[0],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,t[1],g.cells),d.setCellStyles(mxConstants.STYLE_ALIGN,t[2],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
+t[3],g.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(da)}),a.appendChild(D),mxEvent.addListener(S,"change",function(da){d.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,F[S.value],g.cells);mxEvent.consume(da)}));var T=document.createElement("input");T.style.position="absolute";T.style.border="1px solid rgb(160, 160, 160)";T.style.textAlign="right";T.style.marginTop="4px";T.style.left="161px";T.style.width="53px";T.style.borderRadius="4px";T.style.height="23px";T.style.boxSizing="border-box";
+n.appendChild(T);var ca=null;x=this.installInputHandler(T,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(da){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var t=function(H,K){null!=d.cellEditor.textarea&&H!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(H)&&(K||z.containsNode(H,!0))&&("FONT"==H.nodeName?(H.removeAttribute("size"),H.style.fontSize=da+"px"):mxUtils.getCurrentStyle(H).fontSize!=da+"px"&&(mxUtils.getCurrentStyle(H.parentNode).fontSize!=
+da+"px"?H.style.fontSize=da+"px":H.style.fontSize=""));f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],"values",[da],"cells",g.cells))},z=window.getSelection(),A=0<z.rangeCount?z.getRangeAt(0).commonAncestorContainer:d.cellEditor.textarea;A!=d.cellEditor.textarea&&A.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");A!=d.cellEditor.textarea&&(A=A.parentNode);if(null!=A&&A.nodeType==mxConstants.NODETYPE_ELEMENT){var E=A.getElementsByTagName("*");
+t(A);for(A=0;A<E.length;A++)t(E[A])}T.value=da+" pt"}else if(window.getSelection||document.selection)if(t=function(H,K){for(;null!=K;){if(K===H)return!0;K=K.parentNode}return!1},E=null,document.selection?E=document.selection.createRange().parentElement():(z=window.getSelection(),0<z.rangeCount&&(E=z.getRangeAt(0).commonAncestorContainer)),null!=E&&t(d.cellEditor.textarea,E))for(ca=da,document.execCommand("fontSize",!1,"4"),E=d.cellEditor.textarea.getElementsByTagName("font"),A=0;A<E.length;A++)if("4"==
+E[A].getAttribute("size")){E[A].removeAttribute("size");E[A].style.fontSize=ca+"px";window.setTimeout(function(){T.value=ca+" pt";ca=null},0);break}},!0);x=this.createStepper(T,x,1,10,!0,Menus.prototype.defaultFontSize);x.style.display=T.style.display;x.style.marginTop="4px";x.style.left="214px";n.appendChild(x);n=u.getElementsByTagName("div")[0];n.style.cssFloat="right";var fa=null,wa=d.shapeBackgroundColor,W=null,aa=d.shapeForegroundColor,oa=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
+function(){return wa},function(da){document.execCommand("backcolor",!1,da!=mxConstants.NONE?da:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],"values",[da],"cells",g.cells))},d.shapeBackgroundColor,{install:function(da){fa=da},destroy:function(){fa=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"default",null,function(da){d.updateLabelElements(g.cells,function(t){t.style.backgroundColor=
+null})},d.shapeBackgroundColor);oa.style.fontWeight="bold";var sa=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,d.shapeForegroundColor);sa.style.fontWeight="bold";n=1<=g.vertices.length?d.stylesheet.getDefaultVertexStyle():d.stylesheet.getDefaultEdgeStyle();n=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return aa},function(da){if(mxClient.IS_FF){for(var t=d.cellEditor.textarea.getElementsByTagName("font"),
+z=[],A=0;A<t.length;A++)z.push({node:t[A],color:t[A].getAttribute("color")});document.execCommand("forecolor",!1,da!=mxConstants.NONE?da:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[da],"cells",g.cells));da=d.cellEditor.textarea.getElementsByTagName("font");for(A=0;A<da.length;A++)if(A>=z.length||da[A]!=z[A].node||da[A]==z[A].node&&da[A].getAttribute("color")!=z[A].color){z=da[A].firstChild;if(null!=z&&"A"==z.nodeName&&null==z.nextSibling&&
+null!=z.firstChild){da[A].parentNode.insertBefore(z,da[A]);for(t=z.firstChild;null!=t;){var E=t.nextSibling;da[A].appendChild(t);t=E}z.appendChild(da[A])}break}}else document.execCommand("forecolor",!1,da!=mxConstants.NONE?da:"transparent"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[da],"cells",g.cells))},null!=n[mxConstants.STYLE_FONTCOLOR]?n[mxConstants.STYLE_FONTCOLOR]:d.shapeForegroundColor,{install:function(da){W=da},destroy:function(){W=null}},
+null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR,"default",function(da){oa.style.display=da==mxConstants.NONE?"none":"";sa.style.display=oa.style.display},function(da){da==mxConstants.NONE?d.setCellStyles(mxConstants.STYLE_NOLABEL,"1",g.cells):d.setCellStyles(mxConstants.STYLE_NOLABEL,null,g.cells);d.setCellStyles(mxConstants.STYLE_FONTCOLOR,da,g.cells);d.updateLabelElements(g.cells,function(t){t.removeAttribute("color");t.style.color=null})},d.shapeForegroundColor);
+n.style.fontWeight="bold";k.appendChild(n);k.appendChild(oa);d.cellEditor.isContentEditing()||k.appendChild(sa);a.appendChild(k);k=this.createPanel();k.style.paddingTop="2px";k.style.paddingBottom="4px";n=d.filterSelectionCells(mxUtils.bind(this,function(da){var t=d.view.getState(da);return null==t||d.isAutoSizeState(t)||d.getModel().isEdge(da)||!d.isTableRow(da)&&!d.isTableCell(da)&&!d.isCellResizable(da)}));x=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap",
"null",null,null,!0,n);x.style.fontWeight="bold";0<n.length&&k.appendChild(x);n=this.createCellOption(mxResources.get("formattedText"),"html",0,null,null,null,f.actions.get("formattedText"));n.style.fontWeight="bold";k.appendChild(n);n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="28px";n.style.fontWeight="normal";x=document.createElement("div");x.style.position="absolute";x.style.width="70px";x.style.marginTop="0px";x.style.fontWeight="bold";mxUtils.write(x,mxResources.get("spacing"));
-n.appendChild(x);var Ja=this.addUnitInput(n,"pt",87,52,function(){Ya.apply(this,arguments)}),Ga=this.addUnitInput(n,"pt",16,52,function(){Va.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("top"),87);this.addLabel(n,mxResources.get("global"),16);mxUtils.br(n);mxUtils.br(n);var va=this.addUnitInput(n,"pt",158,52,function(){jb.apply(this,arguments)}),za=this.addUnitInput(n,"pt",87,52,function(){cb.apply(this,arguments)}),ra=this.addUnitInput(n,"pt",16,52,function(){bb.apply(this,
-arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),158);this.addLabel(n,mxResources.get("bottom"),87);this.addLabel(n,mxResources.get("right"),16);if(d.cellEditor.isContentEditing()){var Ha=null,Ta=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(ca){var t=""==ca.value?120:parseInt(ca.value);t=Math.max(0,isNaN(t)?120:t);null!=Ha&&(d.cellEditor.restoreSelection(Ha),Ha=null);for(var z=d.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=
-z.parentNode;null!=z&&z==d.cellEditor.textarea&&null!=d.cellEditor.textarea.firstChild&&("P"!=d.cellEditor.textarea.firstChild.nodeName&&(d.cellEditor.textarea.innerHTML="<p>"+d.cellEditor.textarea.innerHTML+"</p>"),z=d.cellEditor.textarea.firstChild);null!=z&&null!=d.cellEditor.textarea&&z!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(z)&&(z.style.lineHeight=t/100);ca.value=t+" %"},function(ca){Ta=ca;mxEvent.addListener(ca,"mousedown",function(){document.activeElement==d.cellEditor.textarea&&
-(Ha=d.cellEditor.saveSelection())});mxEvent.addListener(ca,"touchstart",function(){document.activeElement==d.cellEditor.textarea&&(Ha=d.cellEditor.saveSelection())});ca.value="120 %"}));k=e.cloneNode(!1);k.style.paddingLeft="0px";n=this.editorUi.toolbar.addItems(["link","image"],k,!0);x=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},k),this.editorUi.toolbar.addMenuFunctionInContainer(k,
-"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(ca){this.editorUi.menus.addInsertTableItem(ca,null,null,!1)}))];this.styleButtons(n);this.styleButtons(x);n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";n.appendChild(this.createTitle(mxResources.get("insert")));n.appendChild(k);a.appendChild(n);n=e.cloneNode(!1);n.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,
-function(){try{null!=T&&d.insertColumn(T,null!=U?U.cellIndex:0)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=T&&d.insertColumn(T,null!=U?U.cellIndex+1:-1)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=T&&null!=U&&d.deleteColumn(T,U.cellIndex)}catch(ca){this.editorUi.handleError(ca)}}),
-n),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=T&&null!=fa&&d.insertRow(T,fa.sectionRowIndex)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=T&&null!=fa&&d.insertRow(T,fa.sectionRowIndex+1)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-deleterow",
-mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=T&&null!=fa&&d.deleteRow(T,fa.sectionRowIndex)}catch(ca){this.editorUi.handleError(ca)}}),n)];this.styleButtons(x);x[2].style.marginRight="10px";k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("table")));k.appendChild(n);e=e.cloneNode(!1);e.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,
-function(ca){if(null!=T){var t=T.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,B,E,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(t,function(z){var B=null==U||null!=ca&&mxEvent.isShiftDown(ca)?T:U;d.processElements(B,function(E){E.style.border=null});null==z||z==mxConstants.NONE?(B.removeAttribute("border"),B.style.border="",B.style.borderCollapse=
-""):(B.setAttribute("border","1"),B.style.border="1px solid "+z,B.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(ca){if(null!=T){var t=T.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,B,E,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(t,
-function(z){var B=null==U||null!=ca&&mxEvent.isShiftDown(ca)?T:U;d.processElements(B,function(E){E.style.backgroundColor=null});B.style.backgroundColor=null==z||z==mxConstants.NONE?"":z})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=T){var ca=T.getAttribute("cellPadding")||0;ca=new FilenameDialog(f,ca,mxResources.get("apply"),mxUtils.bind(this,function(t){null!=t&&0<t.length?T.setAttribute("cellPadding",t):T.removeAttribute("cellPadding")}),mxResources.get("spacing"));
-f.showDialog(ca.container,300,80,!0,!0);ca.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=T&&T.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=T&&T.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=T&&T.setAttribute("align","right")},e)];this.styleButtons(x);x[2].style.marginRight="10px";k.appendChild(e);
-a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);for(A=0;3>A;A++)(function(ca){mxEvent.addListener(m[ca],"click",function(){b(m[ca],""==m[ca].style.backgroundImage)})})(A);var Ua=mxUtils.bind(this,function(ca,t,z){g=f.getSelectionState();ca=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(ca&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(ca&mxConstants.FONT_ITALIC)==
-mxConstants.FONT_ITALIC);b(m[2],(ca&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=V)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),V.value=isNaN(ca)?"":ca+" pt";ca=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);
-b(C,ca==mxConstants.ALIGN_LEFT);b(F,ca==mxConstants.ALIGN_CENTER);b(K,ca==mxConstants.ALIGN_RIGHT);ca=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);b(O,ca==mxConstants.ALIGN_TOP);b(Q,ca==mxConstants.ALIGN_MIDDLE);b(R,ca==mxConstants.ALIGN_BOTTOM);ca=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=ca==mxConstants.ALIGN_LEFT&&
-t==mxConstants.ALIGN_TOP?"topLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":ca==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_TOP?"topRight":ca==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_BOTTOM?"bottomLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_BOTTOM?"bottom":ca==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_BOTTOM?"bottomRight":ca==mxConstants.ALIGN_LEFT?"left":ca==mxConstants.ALIGN_RIGHT?"right":"center";ca=mxUtils.getValue(g.style,mxConstants.STYLE_TEXT_DIRECTION,
-mxConstants.DEFAULT_TEXT_DIRECTION);ca==mxConstants.TEXT_DIRECTION_RTL?L.value="rightToLeft":ca==mxConstants.TEXT_DIRECTION_LTR?L.value="leftToRight":ca==mxConstants.TEXT_DIRECTION_AUTO&&(L.value="automatic");if(z||document.activeElement!=Ga)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING,2)),Ga.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=Ja)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_TOP,0)),Ja.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=
-ra)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_RIGHT,0)),ra.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=za)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_BOTTOM,0)),za.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=va)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_LEFT,0)),va.value=isNaN(ca)?"":ca+" pt"});var Va=this.installInputHandler(Ga,mxConstants.STYLE_SPACING,2,-999,999," pt");var Ya=this.installInputHandler(Ja,
-mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");var bb=this.installInputHandler(ra,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");var cb=this.installInputHandler(za,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");var jb=this.installInputHandler(va,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(V,Ua);this.addKeyHandler(Ga,Ua);this.addKeyHandler(Ja,Ua);this.addKeyHandler(ra,Ua);this.addKeyHandler(za,Ua);this.addKeyHandler(va,Ua);d.getModel().addListener(mxEvent.CHANGE,Ua);
-this.listeners.push({destroy:function(){d.getModel().removeListener(Ua)}});Ua();if(d.cellEditor.isContentEditing()){var $a=!1;e=function(){$a||($a=!0,window.setTimeout(function(){var ca=d.getSelectedEditingElement();if(null!=ca){var t=function(Ba,Da){if(null!=Ba&&null!=Da){if(Ba==Da)return!0;if(Ba.length>Da.length+1)return Ba.substring(Ba.length-Da.length-1,Ba.length)=="-"+Da}return!1},z=function(Ba){if(null!=d.getParentByName(ca,Ba,d.cellEditor.textarea))return!0;for(var Da=ca;null!=Da&&1==Da.childNodes.length;)if(Da=
-Da.childNodes[0],Da.nodeName==Ba)return!0;return!1},B=function(Ba){Ba=null!=Ba?Ba.fontSize:null;return null!=Ba&&"px"==Ba.substring(Ba.length-2)?parseFloat(Ba):mxConstants.DEFAULT_FONTSIZE},E=function(Ba,Da,Ma){return null!=Ma.style&&null!=Da?(Da=Da.lineHeight,null!=Ma.style.lineHeight&&"%"==Ma.style.lineHeight.substring(Ma.style.lineHeight.length-1)?parseInt(Ma.style.lineHeight)/100:"px"==Da.substring(Da.length-2)?parseFloat(Da)/Ba:parseInt(Da)):""},G=mxUtils.getCurrentStyle(ca),M=B(G),X=E(M,G,ca),
-ia=ca.getElementsByTagName("*");if(0<ia.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var da=window.getSelection(),ja=0;ja<ia.length;ja++)if(da.containsNode(ia[ja],!0)){temp=mxUtils.getCurrentStyle(ia[ja]);M=Math.max(B(temp),M);var sa=E(M,temp,ia[ja]);if(sa!=X||isNaN(sa))X=""}null!=G&&(b(m[0],"bold"==G.fontWeight||400<G.fontWeight||z("B")||z("STRONG")),b(m[1],"italic"==G.fontStyle||z("I")||z("EM")),b(m[2],z("U")),b(Z,z("SUP")),b(P,z("SUB")),d.cellEditor.isTableSelected()?(b(ha,
-t(G.textAlign,"justify")),b(C,t(G.textAlign,"left")),b(F,t(G.textAlign,"center")),b(K,t(G.textAlign,"right"))):(z=d.cellEditor.align||mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(G.textAlign,"justify")?(b(ha,t(G.textAlign,"justify")),b(C,!1),b(F,!1),b(K,!1)):(b(ha,!1),b(C,z==mxConstants.ALIGN_LEFT),b(F,z==mxConstants.ALIGN_CENTER),b(K,z==mxConstants.ALIGN_RIGHT))),T=d.getParentByName(ca,"TABLE",d.cellEditor.textarea),fa=null==T?null:d.getParentByName(ca,"TR",T),U=null==
-T?null:d.getParentByNames(ca,["TD","TH"],T),db.style.display=null!=T?"":"none",document.activeElement!=V&&("FONT"==ca.nodeName&&"4"==ca.getAttribute("size")&&null!=ea?(ca.removeAttribute("size"),ca.style.fontSize=ea+" pt",ea=null):V.value=isNaN(M)?"":M+" pt",sa=parseFloat(X),isNaN(sa)?Ta.value="100 %":Ta.value=Math.round(100*sa)+" %"),null!=W&&(aa="rgba(0, 0, 0, 0)"==G.color||"transparent"==G.color?mxConstants.NONE:mxUtils.rgba2hex(G.color),W(aa,!0)),null!=ka&&(wa="rgba(0, 0, 0, 0)"==G.backgroundColor||
-"transparent"==G.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(G.backgroundColor),ka(wa,!0)),null!=u.firstChild&&(u.firstChild.nodeValue=Graph.stripQuotes(G.fontFamily)))}$a=!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,
+n.appendChild(x);var Ka=this.addUnitInput(n,"pt",87,52,function(){Xa.apply(this,arguments)}),Ha=this.addUnitInput(n,"pt",16,52,function(){$a.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("top"),87);this.addLabel(n,mxResources.get("global"),16);mxUtils.br(n);mxUtils.br(n);var ua=this.addUnitInput(n,"pt",158,52,function(){jb.apply(this,arguments)}),Ca=this.addUnitInput(n,"pt",87,52,function(){Ya.apply(this,arguments)}),ra=this.addUnitInput(n,"pt",16,52,function(){Va.apply(this,
+arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),158);this.addLabel(n,mxResources.get("bottom"),87);this.addLabel(n,mxResources.get("right"),16);if(d.cellEditor.isContentEditing()){var Da=null,Ua=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(da){var t=""==da.value?120:parseInt(da.value);t=Math.max(0,isNaN(t)?120:t);null!=Da&&(d.cellEditor.restoreSelection(Da),Da=null);for(var z=d.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=
+z.parentNode;null!=z&&z==d.cellEditor.textarea&&null!=d.cellEditor.textarea.firstChild&&("P"!=d.cellEditor.textarea.firstChild.nodeName&&(d.cellEditor.textarea.innerHTML="<p>"+d.cellEditor.textarea.innerHTML+"</p>"),z=d.cellEditor.textarea.firstChild);null!=z&&null!=d.cellEditor.textarea&&z!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(z)&&(z.style.lineHeight=t/100);da.value=t+" %"},function(da){Ua=da;mxEvent.addListener(da,"mousedown",function(){document.activeElement==d.cellEditor.textarea&&
+(Da=d.cellEditor.saveSelection())});mxEvent.addListener(da,"touchstart",function(){document.activeElement==d.cellEditor.textarea&&(Da=d.cellEditor.saveSelection())});da.value="120 %"}));k=e.cloneNode(!1);k.style.paddingLeft="0px";n=this.editorUi.toolbar.addItems(["link","image"],k,!0);x=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},k),this.editorUi.toolbar.addMenuFunctionInContainer(k,
+"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(da){this.editorUi.menus.addInsertTableItem(da,null,null,!1)}))];this.styleButtons(n);this.styleButtons(x);n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";n.appendChild(this.createTitle(mxResources.get("insert")));n.appendChild(k);a.appendChild(n);n=e.cloneNode(!1);n.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,
+function(){try{null!=U&&d.insertColumn(U,null!=V?V.cellIndex:0)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=U&&d.insertColumn(U,null!=V?V.cellIndex+1:-1)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=U&&null!=V&&d.deleteColumn(U,V.cellIndex)}catch(da){this.editorUi.handleError(da)}}),
+n),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=U&&null!=ia&&d.insertRow(U,ia.sectionRowIndex)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=U&&null!=ia&&d.insertRow(U,ia.sectionRowIndex+1)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-deleterow",
+mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=U&&null!=ia&&d.deleteRow(U,ia.sectionRowIndex)}catch(da){this.editorUi.handleError(da)}}),n)];this.styleButtons(x);x[2].style.marginRight="10px";k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("table")));k.appendChild(n);e=e.cloneNode(!1);e.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,
+function(da){if(null!=U){var t=U.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,A,E,H){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(H).toString(16)).substr(-2)});this.editorUi.pickColor(t,function(z){var A=null==V||null!=da&&mxEvent.isShiftDown(da)?U:V;d.processElements(A,function(E){E.style.border=null});null==z||z==mxConstants.NONE?(A.removeAttribute("border"),A.style.border="",A.style.borderCollapse=
+""):(A.setAttribute("border","1"),A.style.border="1px solid "+z,A.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(da){if(null!=U){var t=U.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,A,E,H){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(H).toString(16)).substr(-2)});this.editorUi.pickColor(t,
+function(z){var A=null==V||null!=da&&mxEvent.isShiftDown(da)?U:V;d.processElements(A,function(E){E.style.backgroundColor=null});A.style.backgroundColor=null==z||z==mxConstants.NONE?"":z})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=U){var da=U.getAttribute("cellPadding")||0;da=new FilenameDialog(f,da,mxResources.get("apply"),mxUtils.bind(this,function(t){null!=t&&0<t.length?U.setAttribute("cellPadding",t):U.removeAttribute("cellPadding")}),mxResources.get("spacing"));
+f.showDialog(da.container,300,80,!0,!0);da.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=U&&U.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=U&&U.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=U&&U.setAttribute("align","right")},e)];this.styleButtons(x);x[2].style.marginRight="10px";k.appendChild(e);
+a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);for(B=0;3>B;B++)(function(da){mxEvent.addListener(m[da],"click",function(){b(m[da],""==m[da].style.backgroundImage)})})(B);var Ta=mxUtils.bind(this,function(da,t,z){g=f.getSelectionState();da=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(da&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(da&mxConstants.FONT_ITALIC)==
+mxConstants.FONT_ITALIC);b(m[2],(da&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=T)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),T.value=isNaN(da)?"":da+" pt";da=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);
+b(C,da==mxConstants.ALIGN_LEFT);b(G,da==mxConstants.ALIGN_CENTER);b(J,da==mxConstants.ALIGN_RIGHT);da=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);b(N,da==mxConstants.ALIGN_TOP);b(Q,da==mxConstants.ALIGN_MIDDLE);b(R,da==mxConstants.ALIGN_BOTTOM);da=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=da==mxConstants.ALIGN_LEFT&&
+t==mxConstants.ALIGN_TOP?"topLeft":da==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":da==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_TOP?"topRight":da==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_BOTTOM?"bottomLeft":da==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_BOTTOM?"bottom":da==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_BOTTOM?"bottomRight":da==mxConstants.ALIGN_LEFT?"left":da==mxConstants.ALIGN_RIGHT?"right":"center";da=mxUtils.getValue(g.style,mxConstants.STYLE_TEXT_DIRECTION,
+mxConstants.DEFAULT_TEXT_DIRECTION);da==mxConstants.TEXT_DIRECTION_RTL?S.value="rightToLeft":da==mxConstants.TEXT_DIRECTION_LTR?S.value="leftToRight":da==mxConstants.TEXT_DIRECTION_AUTO&&(S.value="automatic");if(z||document.activeElement!=Ha)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING,2)),Ha.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=Ka)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_TOP,0)),Ka.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=
+ra)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_RIGHT,0)),ra.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=Ca)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Ca.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=ua)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_LEFT,0)),ua.value=isNaN(da)?"":da+" pt"});var $a=this.installInputHandler(Ha,mxConstants.STYLE_SPACING,2,-999,999," pt");var Xa=this.installInputHandler(Ka,
+mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");var Va=this.installInputHandler(ra,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");var Ya=this.installInputHandler(Ca,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");var jb=this.installInputHandler(ua,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(T,Ta);this.addKeyHandler(Ha,Ta);this.addKeyHandler(Ka,Ta);this.addKeyHandler(ra,Ta);this.addKeyHandler(Ca,Ta);this.addKeyHandler(ua,Ta);d.getModel().addListener(mxEvent.CHANGE,Ta);
+this.listeners.push({destroy:function(){d.getModel().removeListener(Ta)}});Ta();if(d.cellEditor.isContentEditing()){var bb=!1;e=function(){bb||(bb=!0,window.setTimeout(function(){var da=d.getSelectedEditingElement();if(null!=da){var t=function(Aa,Ea){if(null!=Aa&&null!=Ea){if(Aa==Ea)return!0;if(Aa.length>Ea.length+1)return Aa.substring(Aa.length-Ea.length-1,Aa.length)=="-"+Ea}return!1},z=function(Aa){if(null!=d.getParentByName(da,Aa,d.cellEditor.textarea))return!0;for(var Ea=da;null!=Ea&&1==Ea.childNodes.length;)if(Ea=
+Ea.childNodes[0],Ea.nodeName==Aa)return!0;return!1},A=function(Aa){Aa=null!=Aa?Aa.fontSize:null;return null!=Aa&&"px"==Aa.substring(Aa.length-2)?parseFloat(Aa):mxConstants.DEFAULT_FONTSIZE},E=function(Aa,Ea,Ma){return null!=Ma.style&&null!=Ea?(Ea=Ea.lineHeight,null!=Ma.style.lineHeight&&"%"==Ma.style.lineHeight.substring(Ma.style.lineHeight.length-1)?parseInt(Ma.style.lineHeight)/100:"px"==Ea.substring(Ea.length-2)?parseFloat(Ea)/Aa:parseInt(Ea)):""},H=mxUtils.getCurrentStyle(da),K=A(H),X=E(K,H,da),
+ja=da.getElementsByTagName("*");if(0<ja.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var ea=window.getSelection(),ka=0;ka<ja.length;ka++)if(ea.containsNode(ja[ka],!0)){temp=mxUtils.getCurrentStyle(ja[ka]);K=Math.max(A(temp),K);var ta=E(K,temp,ja[ka]);if(ta!=X||isNaN(ta))X=""}null!=H&&(b(m[0],"bold"==H.fontWeight||400<H.fontWeight||z("B")||z("STRONG")),b(m[1],"italic"==H.fontStyle||z("I")||z("EM")),b(m[2],z("U")),b(Z,z("SUP")),b(P,z("SUB")),d.cellEditor.isTableSelected()?(b(ha,
+t(H.textAlign,"justify")),b(C,t(H.textAlign,"left")),b(G,t(H.textAlign,"center")),b(J,t(H.textAlign,"right"))):(z=d.cellEditor.align||mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(H.textAlign,"justify")?(b(ha,t(H.textAlign,"justify")),b(C,!1),b(G,!1),b(J,!1)):(b(ha,!1),b(C,z==mxConstants.ALIGN_LEFT),b(G,z==mxConstants.ALIGN_CENTER),b(J,z==mxConstants.ALIGN_RIGHT))),U=d.getParentByName(da,"TABLE",d.cellEditor.textarea),ia=null==U?null:d.getParentByName(da,"TR",U),V=null==
+U?null:d.getParentByNames(da,["TD","TH"],U),db.style.display=null!=U?"":"none",document.activeElement!=T&&("FONT"==da.nodeName&&"4"==da.getAttribute("size")&&null!=ca?(da.removeAttribute("size"),da.style.fontSize=ca+" pt",ca=null):T.value=isNaN(K)?"":K+" pt",ta=parseFloat(X),isNaN(ta)?Ua.value="100 %":Ua.value=Math.round(100*ta)+" %"),null!=W&&(aa="rgba(0, 0, 0, 0)"==H.color||"transparent"==H.color?mxConstants.NONE:mxUtils.rgba2hex(H.color),W(aa,!0)),null!=fa&&(wa="rgba(0, 0, 0, 0)"==H.backgroundColor||
+"transparent"==H.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(H.backgroundColor),fa(wa,!0)),null!=u.firstChild&&(u.firstChild.nodeValue=Graph.stripQuotes(H.fontFamily)))}bb=!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,f){BaseFormatPanel.call(this,a,b,f);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())),
a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY),a.style.paddingTop="8px",a.style.paddingBottom="8px",this.container.appendChild(a),this.container.appendChild(this.addEffects(this.createPanel())));a=this.addEditOps(this.createPanel());null!=a.firstChild&&mxUtils.br(a);this.container.appendChild(this.addStyleOps(a))};
StyleFormatPanel.prototype.getCssRules=function(a){var b=document.implementation.createHTMLDocument(""),f=document.createElement("style");mxUtils.setTextContent(f,a);b.body.appendChild(f);return f.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var f=b.style.editableCssRules;if(null!=f){var d=new RegExp(f),g=b.style.image.substring(b.style.image.indexOf(",")+1),e=window.atob?atob(g):Base64.decode(g,!0),k=mxUtils.parseXml(e);if(null!=k){var n=k.getElementsByTagName("style");for(b=0;b<n.length;b++){var u=this.getCssRules(mxUtils.getTextContent(n[b]));
for(f=0;f<u.length;f++)this.addSvgRule(a,u[f],k,n[b],u,f,d)}}}}catch(m){}return a};
-StyleFormatPanel.prototype.addSvgRule=function(a,b,f,d,g,e,k){var n=this.editorUi,u=n.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var A=mxUtils.trim(m.style[r]);""!=A&&"url("!=A.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=A;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
-10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[e].style[r]=C;C="";for(var F=0;F<g.length;F++)C+=g[F].cssText+" ";d.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
+StyleFormatPanel.prototype.addSvgRule=function(a,b,f,d,g,e,k){var n=this.editorUi,u=n.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var B=mxUtils.trim(m.style[r]);""!=B&&"url("!=B.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=B;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
+10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[e].style[r]=C;C="";for(var G=0;G<g.length;G++)C+=g[G].cssText+" ";d.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
mxResources.get("gradient")))};
StyleFormatPanel.prototype.addEditOps=function(a){var b=this.editorUi.getSelectionState(),f=null;1==b.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(d){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",a.appendChild(f));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(d){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==f?b.style.width="210px":(f.style.width="104px",b.style.width="104px",b.style.marginLeft="2px"),a.appendChild(b));return a};
StyleFormatPanel.prototype.addFill=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var g=document.createElement("select");g.style.position="absolute";g.style.left="104px";g.style.width="70px";g.style.height="22px";g.style.padding="0px";g.style.marginTop="-3px";g.style.borderRadius="4px";g.style.border="1px solid rgb(160, 160, 160)";g.style.boxSizing="border-box";var e=g.cloneNode(!1);mxEvent.addListener(g,"click",function(C){mxEvent.consume(C)});
mxEvent.addListener(e,"click",function(C){mxEvent.consume(C)});var k=1<=d.vertices.length?f.stylesheet.getDefaultVertexStyle():f.stylesheet.getDefaultEdgeStyle(),n=this.createCellColorOption(mxResources.get("gradient"),mxConstants.STYLE_GRADIENTCOLOR,null!=k[mxConstants.STYLE_GRADIENTCOLOR]?k[mxConstants.STYLE_GRADIENTCOLOR]:"#ffffff",function(C){g.style.display=null==C||C==mxConstants.NONE?"none":""},function(C){f.updateCellStyles({gradientColor:C},f.getSelectionCells())}),u="image"==d.style.shape?
mxConstants.STYLE_IMAGE_BACKGROUND:mxConstants.STYLE_FILLCOLOR;k=this.createCellColorOption(mxResources.get("fill"),u,"default",null,mxUtils.bind(this,function(C){f.setCellStyles(u,C,d.cells)}),f.shapeBackgroundColor);k.style.fontWeight="bold";var m=mxUtils.getValue(d.style,u,null);n.style.display=null!=m&&m!=mxConstants.NONE&&d.fill&&"image"!=d.style.shape?"":"none";var r=[mxConstants.DIRECTION_NORTH,mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_RADIAL];
-for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),e.appendChild(r);k.appendChild(e);var A=mxUtils.bind(this,function(){d=b.getSelectionState();var C=mxUtils.getValue(d.style,mxConstants.STYLE_GRADIENT_DIRECTION,
-mxConstants.DIRECTION_SOUTH),F=mxUtils.getValue(d.style,"fillStyle","auto");""==C&&(C=mxConstants.DIRECTION_SOUTH);g.value=C;e.value=F;a.style.display=d.fill?"":"none";C=mxUtils.getValue(d.style,u,null);d.fill&&null!=C&&C!=mxConstants.NONE&&"filledEdge"!=d.style.shape?(e.style.display="1"==d.style.sketch?"":"none",n.style.display=d.containsImage||"1"==d.style.sketch&&"solid"!=F&&"auto"!=F?"none":""):(e.style.display="none",n.style.display="none")});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});
-A();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",d.cells));mxEvent.consume(C)});mxEvent.addListener(e,"change",function(C){f.setCellStyles("fillStyle",e.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[e.value],"cells",d.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
+for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),e.appendChild(r);k.appendChild(e);var B=mxUtils.bind(this,function(){d=b.getSelectionState();var C=mxUtils.getValue(d.style,mxConstants.STYLE_GRADIENT_DIRECTION,
+mxConstants.DIRECTION_SOUTH),G=mxUtils.getValue(d.style,"fillStyle","auto");""==C&&(C=mxConstants.DIRECTION_SOUTH);g.value=C;e.value=G;a.style.display=d.fill?"":"none";C=mxUtils.getValue(d.style,u,null);d.fill&&null!=C&&C!=mxConstants.NONE&&"filledEdge"!=d.style.shape?(e.style.display="1"==d.style.sketch?"":"none",n.style.display=d.containsImage||"1"==d.style.sketch&&"solid"!=G&&"auto"!=G?"none":""):(e.style.display="none",n.style.display="none")});f.getModel().addListener(mxEvent.CHANGE,B);this.listeners.push({destroy:function(){f.getModel().removeListener(B)}});
+B();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",d.cells));mxEvent.consume(C)});mxEvent.addListener(e,"change",function(C){f.setCellStyles("fillStyle",e.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[e.value],"cells",d.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
k=this.getCustomColors();for(m=0;m<k.length;m++)a.appendChild(this.createCellColorOption(k[m].title,k[m].key,k[m].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(W){var aa=parseFloat(D.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));D.value=aa+" pt";mxEvent.consume(W)}function f(W){var aa=parseFloat(O.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,
-mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));O.value=aa+" pt";mxEvent.consume(W)}var d=this.editorUi,g=d.editor.graph,e=d.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var k=document.createElement("div");k.style.fontWeight="bold";e.stroke||(k.style.display="none");var n=document.createElement("select");
+StyleFormatPanel.prototype.addStroke=function(a){function b(W){var aa=parseFloat(D.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));D.value=aa+" pt";mxEvent.consume(W)}function f(W){var aa=parseFloat(N.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,
+mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));N.value=aa+" pt";mxEvent.consume(W)}var d=this.editorUi,g=d.editor.graph,e=d.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var k=document.createElement("div");k.style.fontWeight="bold";e.stroke||(k.style.display="none");var n=document.createElement("select");
n.style.position="absolute";n.style.height="22px";n.style.padding="0px";n.style.marginTop="-3px";n.style.boxSizing="border-box";n.style.left="94px";n.style.width="80px";n.style.border="1px solid rgb(160, 160, 160)";n.style.borderRadius="4px";for(var u=["sharp","rounded","curved"],m=0;m<u.length;m++){var r=document.createElement("option");r.setAttribute("value",u[m]);mxUtils.write(r,mxResources.get(u[m]));n.appendChild(r)}mxEvent.addListener(n,"change",function(W){g.getModel().beginUpdate();try{var aa=
-[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],oa=["0",null];"rounded"==n.value?oa=["1",null]:"curved"==n.value&&(oa=[null,"1"]);for(var ua=0;ua<aa.length;ua++)g.setCellStyles(aa[ua],oa[ua],e.cells);d.fireEvent(new mxEventObject("styleChanged","keys",aa,"values",oa,"cells",e.cells))}finally{g.getModel().endUpdate()}mxEvent.consume(W)});mxEvent.addListener(n,"click",function(W){mxEvent.consume(W)});var x="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR;u="image"==
-e.style.shape?mxResources.get("border"):mxResources.get("line");u=this.createCellColorOption(u,x,"default",null,mxUtils.bind(this,function(W){g.setCellStyles(x,W,e.cells)}),g.shapeForegroundColor);u.appendChild(n);k.appendChild(u);var A=k.cloneNode(!1);A.style.fontWeight="normal";A.style.whiteSpace="nowrap";A.style.position="relative";A.style.paddingLeft="0px";A.style.marginBottom="2px";A.style.overflow="hidden";A.style.marginTop="2px";A.style.width="220px";A.className="geToolbarContainer";var C=
-mxUtils.bind(this,function(W,aa,oa,ua,Ja){W=this.editorUi.menus.styleChange(W,"",ua,Ja,"geIcon",null);ua=document.createElement("div");ua.style.width=aa+"px";ua.style.height="1px";ua.style.borderBottom="1px "+oa+" "+this.defaultStrokeColor;ua.style.paddingTop="6px";W.firstChild.firstChild.style.padding="0px 4px 0px 4px";W.firstChild.firstChild.style.width=aa+"px";W.firstChild.firstChild.appendChild(ua);return W});m=this.editorUi.toolbar.addMenuFunctionInContainer(A,"geSprite-orthogonal",mxResources.get("pattern"),
+[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],oa=["0",null];"rounded"==n.value?oa=["1",null]:"curved"==n.value&&(oa=[null,"1"]);for(var sa=0;sa<aa.length;sa++)g.setCellStyles(aa[sa],oa[sa],e.cells);d.fireEvent(new mxEventObject("styleChanged","keys",aa,"values",oa,"cells",e.cells))}finally{g.getModel().endUpdate()}mxEvent.consume(W)});mxEvent.addListener(n,"click",function(W){mxEvent.consume(W)});var x="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR;u="image"==
+e.style.shape?mxResources.get("border"):mxResources.get("line");u=this.createCellColorOption(u,x,"default",null,mxUtils.bind(this,function(W){g.setCellStyles(x,W,e.cells)}),g.shapeForegroundColor);u.appendChild(n);k.appendChild(u);var B=k.cloneNode(!1);B.style.fontWeight="normal";B.style.whiteSpace="nowrap";B.style.position="relative";B.style.paddingLeft="0px";B.style.marginBottom="2px";B.style.overflow="hidden";B.style.marginTop="2px";B.style.width="220px";B.className="geToolbarContainer";var C=
+mxUtils.bind(this,function(W,aa,oa,sa,Ka){W=this.editorUi.menus.styleChange(W,"",sa,Ka,"geIcon",null);sa=document.createElement("div");sa.style.width=aa+"px";sa.style.height="1px";sa.style.borderBottom="1px "+oa+" "+this.defaultStrokeColor;sa.style.paddingTop="6px";W.firstChild.firstChild.style.padding="0px 4px 0px 4px";W.firstChild.firstChild.style.width=aa+"px";W.firstChild.firstChild.appendChild(sa);return W});m=this.editorUi.toolbar.addMenuFunctionInContainer(B,"geSprite-orthogonal",mxResources.get("pattern"),
!1,mxUtils.bind(this,function(W){C(W,75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));C(W,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],
-["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));var F=A.cloneNode(!1),K=this.editorUi.toolbar.addMenuFunctionInContainer(F,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(W){this.editorUi.menus.styleChange(W,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,
+["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));var G=B.cloneNode(!1),J=this.editorUi.toolbar.addMenuFunctionInContainer(G,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(W){this.editorUi.menus.styleChange(W,"",[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(W,"",[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(W,"",[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(W,"",[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"))}));r=this.editorUi.toolbar.addMenuFunctionInContainer(F,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(W){C(W,33,"solid",[mxConstants.STYLE_DASHED,
+"geIcon geSprite geSprite-arrow",null,!0).setAttribute("title",mxResources.get("arrow"));this.editorUi.menus.styleChange(W,"",[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"))}));r=this.editorUi.toolbar.addMenuFunctionInContainer(G,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(W){C(W,33,"solid",[mxConstants.STYLE_DASHED,
mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));C(W,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+
-" (2)");C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));u=A.cloneNode(!1);var D=document.createElement("input");D.style.position="absolute";D.style.textAlign="right";D.style.marginTop="2px";D.style.width="52px";D.style.height="21px";D.style.left="146px";D.style.border="1px solid rgb(160, 160, 160)";D.style.borderRadius="4px";D.style.boxSizing="border-box";D.setAttribute("title",mxResources.get("linewidth"));
-A.appendChild(D);var O=D.cloneNode(!0);F.appendChild(O);var Q=this.createStepper(D,b,1,9);Q.style.display=D.style.display;Q.style.marginTop="2px";Q.style.left="198px";A.appendChild(Q);Q=this.createStepper(O,f,1,9);Q.style.display=O.style.display;Q.style.marginTop="2px";O.style.position="absolute";Q.style.left="198px";F.appendChild(Q);mxEvent.addListener(D,"blur",b);mxEvent.addListener(D,"change",b);mxEvent.addListener(O,"blur",f);mxEvent.addListener(O,"change",f);var R=this.editorUi.toolbar.addMenuFunctionInContainer(u,
+" (2)");C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));u=B.cloneNode(!1);var D=document.createElement("input");D.style.position="absolute";D.style.textAlign="right";D.style.marginTop="2px";D.style.width="52px";D.style.height="21px";D.style.left="146px";D.style.border="1px solid rgb(160, 160, 160)";D.style.borderRadius="4px";D.style.boxSizing="border-box";D.setAttribute("title",mxResources.get("linewidth"));
+B.appendChild(D);var N=D.cloneNode(!0);G.appendChild(N);var Q=this.createStepper(D,b,1,9);Q.style.display=D.style.display;Q.style.marginTop="2px";Q.style.left="198px";B.appendChild(Q);Q=this.createStepper(N,f,1,9);Q.style.display=N.style.display;Q.style.marginTop="2px";N.style.position="absolute";Q.style.left="198px";G.appendChild(Q);mxEvent.addListener(D,"blur",b);mxEvent.addListener(D,"change",b);mxEvent.addListener(N,"blur",f);mxEvent.addListener(N,"change",f);var R=this.editorUi.toolbar.addMenuFunctionInContainer(u,
"geSprite-orthogonal",mxResources.get("waypoints"),!1,mxUtils.bind(this,function(W){"arrow"!=e.style.shape&&(this.editorUi.menus.edgeStyleChange(W,"",[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(W,"",[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(W,"",[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(W,"",[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(W,"",[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(W,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,
@@ -3459,48 +3459,48 @@ mxUtils.bind(this,function(W){if("connector"==e.style.shape||"flexArrow"==e.styl
"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["baseDash",0],null,null,!1,Format.baseDashMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],null,null,!1,Format.EROneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],null,null,!1,Format.ERmandOneMarkerImage.src),
"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],null,null,!1,Format.ERmanyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],null,null,!1,Format.ERoneToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToOne",0],null,null,
!1,Format.ERzeroToOneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",0],null,null,!1,Format.ERzeroToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["doubleBlock",0],null,null,!1,Format.doubleBlockMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,
-"endFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src),"scaleX(-1)")):this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));W.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){null!=W.div&&mxUtils.fit(W.div)}),0)}}));Q=this.addArrow(K,8);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-2px";Q=this.addArrow(R,
-10);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-3px";R.getElementsByTagName("img")[0].style.top="-1px";this.addArrow(P,null,!0);this.addArrow(Z,null,!0);Q=this.addArrow(m,9);Q.className="geIcon";Q.style.width="auto";var T=this.addArrow(r,9);T.className="geIcon";T.style.width="22px";var U=document.createElement("div");U.style.width="84px";U.style.height="1px";U.style.borderBottom="1px solid "+this.defaultStrokeColor;U.style.marginBottom="7px";Q.appendChild(U);var fa=document.createElement("div");
-fa.style.width="23px";fa.style.height="1px";fa.style.borderBottom="1px solid "+this.defaultStrokeColor;fa.style.marginBottom="7px";T.appendChild(fa);m.style.height="15px";m.style.marginLeft="16px";r.style.height="15px";r.style.marginLeft="3px";K.style.marginLeft="10px";K.style.height="15px";R.style.marginLeft="10px";R.style.height="17px";P.style.marginLeft="3px";P.style.height="17px";Z.style.marginLeft="3px";Z.style.height="17px";a.appendChild(k);a.appendChild(F);a.appendChild(A);m=A.cloneNode(!1);
-m.style.padding="5px 4px 6px 0px";m.style.fontWeight="normal";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="0px";r.style.marginBottom="12px";r.style.marginTop="2px";r.style.fontWeight="normal";r.style.width="76px";mxUtils.write(r,mxResources.get("lineend"));m.appendChild(r);var ha=this.addUnitInput(m,"pt",98,52,function(){ka.apply(this,arguments)}),ba=this.addUnitInput(m,"pt",30,52,function(){ea.apply(this,arguments)});mxUtils.br(m);Q=document.createElement("div");
-Q.style.height="8px";m.appendChild(Q);r=r.cloneNode(!1);mxUtils.write(r,mxResources.get("linestart"));m.appendChild(r);var qa=this.addUnitInput(m,"pt",98,52,function(){V.apply(this,arguments)}),I=this.addUnitInput(m,"pt",30,52,function(){S.apply(this,arguments)});mxUtils.br(m);this.addLabel(m,mxResources.get("spacing"),98,52);this.addLabel(m,mxResources.get("size"),30,52);mxUtils.br(m);k=k.cloneNode(!1);k.style.fontWeight="normal";k.style.position="relative";k.style.paddingLeft="16px";k.style.marginBottom=
-"2px";k.style.marginTop="6px";k.style.borderWidth="0px";k.style.paddingBottom="18px";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="3px";r.style.marginBottom="12px";r.style.marginTop="1px";r.style.fontWeight="normal";r.style.width="120px";mxUtils.write(r,mxResources.get("perimeter"));k.appendChild(r);var L=this.addUnitInput(k,"pt",30,52,function(){wa.apply(this,arguments)});e.edges.length==e.cells.length?(a.appendChild(u),a.appendChild(m)):e.vertices.length==e.cells.length&&
-a.appendChild(k);var H=mxUtils.bind(this,function(W,aa,oa){function ua(Ja,Ga,va,za){va=va.getElementsByTagName("div")[0];null!=va&&d.updateCssForMarker(va,za,e.style.shape,Ja,Ga);return va}e=d.getSelectionState();if(oa||document.activeElement!=D)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),D.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=O)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),O.value=isNaN(W)?"":W+" pt";n.style.visibility="connector"==
-e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?n.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(n.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?U.style.borderBottom="1px dashed "+this.defaultStrokeColor:U.style.borderBottom="1px dotted "+this.defaultStrokeColor:U.style.borderBottom="1px solid "+this.defaultStrokeColor;
-fa.style.borderBottom=U.style.borderBottom;W=R.getElementsByTagName("div")[0];null!=W&&(aa=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(aa=null),"orthogonalEdgeStyle"==aa&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?W.className="geSprite geSprite-curved":W.className="straight"==aa||"none"==aa||null==aa?"geSprite geSprite-straight":"entityRelationEdgeStyle"==aa?"geSprite geSprite-entity":"elbowEdgeStyle"==
-aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");W=K.getElementsByTagName("div")[0];null!=W&&(W.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?(F.style.display="",A.style.display="none"):(F.style.display="none",A.style.display="");Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps&&(a.style.borderBottomStyle="none");W=ua(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),P,"start");aa=ua(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
+"endFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src),"scaleX(-1)")):this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));W.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){null!=W.div&&mxUtils.fit(W.div)}),0)}}));Q=this.addArrow(J,8);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-2px";Q=this.addArrow(R,
+10);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-3px";R.getElementsByTagName("img")[0].style.top="-1px";this.addArrow(P,null,!0);this.addArrow(Z,null,!0);Q=this.addArrow(m,9);Q.className="geIcon";Q.style.width="auto";var U=this.addArrow(r,9);U.className="geIcon";U.style.width="22px";var V=document.createElement("div");V.style.width="84px";V.style.height="1px";V.style.borderBottom="1px solid "+this.defaultStrokeColor;V.style.marginBottom="7px";Q.appendChild(V);var ia=document.createElement("div");
+ia.style.width="23px";ia.style.height="1px";ia.style.borderBottom="1px solid "+this.defaultStrokeColor;ia.style.marginBottom="7px";U.appendChild(ia);m.style.height="15px";m.style.marginLeft="16px";r.style.height="15px";r.style.marginLeft="3px";J.style.marginLeft="10px";J.style.height="15px";R.style.marginLeft="10px";R.style.height="17px";P.style.marginLeft="3px";P.style.height="17px";Z.style.marginLeft="3px";Z.style.height="17px";a.appendChild(k);a.appendChild(G);a.appendChild(B);m=B.cloneNode(!1);
+m.style.padding="5px 4px 6px 0px";m.style.fontWeight="normal";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="0px";r.style.marginBottom="12px";r.style.marginTop="2px";r.style.fontWeight="normal";r.style.width="76px";mxUtils.write(r,mxResources.get("lineend"));m.appendChild(r);var ha=this.addUnitInput(m,"pt",98,52,function(){fa.apply(this,arguments)}),ba=this.addUnitInput(m,"pt",30,52,function(){ca.apply(this,arguments)});mxUtils.br(m);Q=document.createElement("div");
+Q.style.height="8px";m.appendChild(Q);r=r.cloneNode(!1);mxUtils.write(r,mxResources.get("linestart"));m.appendChild(r);var qa=this.addUnitInput(m,"pt",98,52,function(){T.apply(this,arguments)}),O=this.addUnitInput(m,"pt",30,52,function(){L.apply(this,arguments)});mxUtils.br(m);this.addLabel(m,mxResources.get("spacing"),98,52);this.addLabel(m,mxResources.get("size"),30,52);mxUtils.br(m);k=k.cloneNode(!1);k.style.fontWeight="normal";k.style.position="relative";k.style.paddingLeft="16px";k.style.marginBottom=
+"2px";k.style.marginTop="6px";k.style.borderWidth="0px";k.style.paddingBottom="18px";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="3px";r.style.marginBottom="12px";r.style.marginTop="1px";r.style.fontWeight="normal";r.style.width="120px";mxUtils.write(r,mxResources.get("perimeter"));k.appendChild(r);var S=this.addUnitInput(k,"pt",30,52,function(){wa.apply(this,arguments)});e.edges.length==e.cells.length?(a.appendChild(u),a.appendChild(m)):e.vertices.length==e.cells.length&&
+a.appendChild(k);var F=mxUtils.bind(this,function(W,aa,oa){function sa(Ka,Ha,ua,Ca){ua=ua.getElementsByTagName("div")[0];null!=ua&&d.updateCssForMarker(ua,Ca,e.style.shape,Ka,Ha);return ua}e=d.getSelectionState();if(oa||document.activeElement!=D)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),D.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=N)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),N.value=isNaN(W)?"":W+" pt";n.style.visibility="connector"==
+e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?n.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(n.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?V.style.borderBottom="1px dashed "+this.defaultStrokeColor:V.style.borderBottom="1px dotted "+this.defaultStrokeColor:V.style.borderBottom="1px solid "+this.defaultStrokeColor;
+ia.style.borderBottom=V.style.borderBottom;W=R.getElementsByTagName("div")[0];null!=W&&(aa=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(aa=null),"orthogonalEdgeStyle"==aa&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?W.className="geSprite geSprite-curved":W.className="straight"==aa||"none"==aa||null==aa?"geSprite geSprite-straight":"entityRelationEdgeStyle"==aa?"geSprite geSprite-entity":"elbowEdgeStyle"==
+aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");W=J.getElementsByTagName("div")[0];null!=W&&(W.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?(G.style.display="",B.style.display="none"):(G.style.display="none",B.style.display="");Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps&&(a.style.borderBottomStyle="none");W=sa(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),P,"start");aa=sa(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
"endFill","1"),Z,"end");null!=W&&null!=aa&&("arrow"==e.style.shape?(W.className="geSprite geSprite-noarrow",aa.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(W.className="geSprite geSprite-noarrow",aa.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(R,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(P,30),mxUtils.setOpacity(Z,30)):(mxUtils.setOpacity(P,100),mxUtils.setOpacity(Z,100));
-if(oa||document.activeElement!=I)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),I.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),qa.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=ba)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),ba.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,
-mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),ha.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=L)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),L.value=isNaN(W)?"":W+" pt"});var S=this.installInputHandler(I,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");var V=this.installInputHandler(qa,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");var ea=this.installInputHandler(ba,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,
-0,999," pt");var ka=this.installInputHandler(ha,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");var wa=this.installInputHandler(L,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(D,H);this.addKeyHandler(I,H);this.addKeyHandler(qa,H);this.addKeyHandler(ba,H);this.addKeyHandler(ha,H);this.addKeyHandler(L,H);g.getModel().addListener(mxEvent.CHANGE,H);this.listeners.push({destroy:function(){g.getModel().removeListener(H)}});H();return a};
+if(oa||document.activeElement!=O)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),O.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),qa.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=ba)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),ba.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,
+mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),ha.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=S)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),S.value=isNaN(W)?"":W+" pt"});var L=this.installInputHandler(O,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");var T=this.installInputHandler(qa,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");var ca=this.installInputHandler(ba,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,
+0,999," pt");var fa=this.installInputHandler(ha,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");var wa=this.installInputHandler(S,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(D,F);this.addKeyHandler(O,F);this.addKeyHandler(qa,F);this.addKeyHandler(ba,F);this.addKeyHandler(ha,F);this.addKeyHandler(S,F);g.getModel().addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){g.getModel().removeListener(F)}});F();return a};
StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.editorUi,f=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 g=document.createElement("div");g.style.position="absolute";g.style.maxWidth="82px";g.style.overflow="hidden";g.style.textOverflow="ellipsis";mxUtils.write(g,mxResources.get("lineJumps"));a.appendChild(g);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";g=["none","arc","gap","sharp","line"];for(var k=0;k<g.length;k++){var n=document.createElement("option");n.setAttribute("value",g[k]);mxUtils.write(n,mxResources.get(g[k]));e.appendChild(n)}mxEvent.addListener(e,"change",function(x){f.getModel().beginUpdate();try{f.setCellStyles("jumpStyle",
-e.value,d.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",d.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(e,"click",function(x){mxEvent.consume(x)});a.appendChild(e);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,A,C){d=b.getSelectionState();e.value=mxUtils.getValue(d.style,
+e.value,d.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",d.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(e,"click",function(x){mxEvent.consume(x)});a.appendChild(e);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,B,C){d=b.getSelectionState();e.value=mxUtils.getValue(d.style,
"jumpStyle","none");if(C||document.activeElement!=u)x=parseInt(mxUtils.getValue(d.style,"jumpSize",Graph.defaultJumpSize)),u.value=isNaN(x)?"":x+" pt"});this.addKeyHandler(u,r);f.getModel().addListener(mxEvent.CHANGE,r);this.listeners.push({destroy:function(){f.getModel().removeListener(r)}});r()}else a.style.display="none";return a};
StyleFormatPanel.prototype.addEffects=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";g.style.tableLayout="fixed";var e=document.createElement("tbody"),k=document.createElement("tr");k.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","top");var u=n.cloneNode(!0);u.style.paddingLeft=
-"8px";k.appendChild(n);k.appendChild(u);e.appendChild(k);g.appendChild(e);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,F,K){C=this.createCellOption(C,F,K);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),A=mxUtils.bind(this,function(C,F,K){d=b.getSelectionState();n.innerText="";u.innerText="";m=n;d.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);d.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);d.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
-0);d.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});A();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
+"8px";k.appendChild(n);k.appendChild(u);e.appendChild(k);g.appendChild(e);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,G,J){C=this.createCellOption(C,G,J);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),B=mxUtils.bind(this,function(C,G,J){d=b.getSelectionState();n.innerText="";u.innerText="";m=n;d.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);d.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);d.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
+0);d.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,B);this.listeners.push({destroy:function(){f.getModel().removeListener(B)}});B();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
mxUtils.extend(DiagramStylePanel,BaseFormatPanel);DiagramStylePanel.prototype.init=function(){var a=this.editorUi;this.darkModeChangedListener=mxUtils.bind(this,function(){this.format.cachedStyleEntries=[]});a.addListener("darkModeChanged",this.darkModeChangedListener);this.container.appendChild(this.addView(this.createPanel()))};
DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,f=b.editor.graph,d=f.getModel(),g=f.view.gridColor;a.style.whiteSpace="normal";var e="1"==f.currentVertexStyle.sketch&&"1"==f.currentEdgeStyle.sketch,k="1"==f.currentVertexStyle.rounded,n="1"==f.currentEdgeStyle.curved,u=document.createElement("div");u.style.marginRight="16px";a.style.paddingTop="8px";var m=document.createElement("table");m.style.width="210px";m.style.fontWeight="bold";var r=document.createElement("tbody"),x=document.createElement("tr");
-x.style.padding="0px";var A=document.createElement("td");A.style.padding="0px";A.style.width="50%";A.setAttribute("valign","middle");var C=A.cloneNode(!0);C.style.paddingLeft="8px";"1"!=urlParams.sketch&&(u.style.paddingBottom="12px",x.appendChild(A),A.appendChild(this.createOption(mxResources.get("sketch"),function(){return e},function(ba){(e=ba)?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(delete f.currentEdgeStyle.sketch,delete f.currentVertexStyle.sketch);f.updateCellStyles({sketch:ba?
+x.style.padding="0px";var B=document.createElement("td");B.style.padding="0px";B.style.width="50%";B.setAttribute("valign","middle");var C=B.cloneNode(!0);C.style.paddingLeft="8px";"1"!=urlParams.sketch&&(u.style.paddingBottom="12px",x.appendChild(B),B.appendChild(this.createOption(mxResources.get("sketch"),function(){return e},function(ba){(e=ba)?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(delete f.currentEdgeStyle.sketch,delete f.currentVertexStyle.sketch);f.updateCellStyles({sketch:ba?
"1":null},f.getVerticesAndEdges())},null,function(ba){ba.style.width="auto"})));x.appendChild(C);r.appendChild(x);m.appendChild(r);C.appendChild(this.createOption(mxResources.get("rounded"),function(){return k},function(ba){(k=ba)?(f.currentEdgeStyle.rounded="1",f.currentVertexStyle.rounded="1"):(delete f.currentEdgeStyle.rounded,delete f.currentVertexStyle.rounded);f.updateCellStyles({rounded:ba?"1":"0"},f.getVerticesAndEdges())},null,function(ba){ba.style.width="auto"}));"1"!=urlParams.sketch&&
-(A=A.cloneNode(!1),C=C.cloneNode(!1),x=x.cloneNode(!1),x.appendChild(A),x.appendChild(C),r.appendChild(x),A.appendChild(this.createOption(mxResources.get("curved"),function(){return n},function(ba){(n=ba)?f.currentEdgeStyle.curved="1":delete f.currentEdgeStyle.curved;f.updateCellStyles({curved:ba?"1":null},f.getVerticesAndEdges(!1,!0))},null,function(ba){ba.style.width="auto"})));u.appendChild(m);a.appendChild(u);var F=["fillColor","strokeColor","fontColor","gradientColor"],K=mxUtils.bind(this,function(ba,
-qa){var I=f.getVerticesAndEdges();d.beginUpdate();try{for(var L=0;L<I.length;L++){var H=f.getCellStyle(I[L]);null!=H.labelBackgroundColor&&f.updateCellStyles({labelBackgroundColor:null!=qa?qa.background:null},[I[L]]);for(var S=d.isEdge(I[L]),V=d.getStyle(I[L]),ea=S?f.currentEdgeStyle:f.currentVertexStyle,ka=0;ka<ba.length;ka++)if(null!=H[ba[ka]]&&H[ba[ka]]!=mxConstants.NONE||ba[ka]!=mxConstants.STYLE_FILLCOLOR&&ba[ka]!=mxConstants.STYLE_STROKECOLOR)V=mxUtils.setStyle(V,ba[ka],ea[ba[ka]]);d.setStyle(I[L],
-V)}}finally{d.endUpdate()}}),D=mxUtils.bind(this,function(ba,qa,I){if(null!=ba)for(var L=0;L<qa.length;L++)if(null!=ba[qa[L]]&&ba[qa[L]]!=mxConstants.NONE||qa[L]!=mxConstants.STYLE_FILLCOLOR&&qa[L]!=mxConstants.STYLE_STROKECOLOR)ba[qa[L]]=I[qa[L]]}),O=mxUtils.bind(this,function(ba,qa,I,L,H){if(null!=ba){null!=I&&null!=qa.labelBackgroundColor&&(L=null!=L?L.background:null,H=null!=H?H:f,null==L&&(L=H.background),null==L&&(L=H.defaultPageBackgroundColor),qa.labelBackgroundColor=L);for(var S in ba)if(null==
-I||null!=qa[S]&&qa[S]!=mxConstants.NONE||S!=mxConstants.STYLE_FILLCOLOR&&S!=mxConstants.STYLE_STROKECOLOR)qa[S]=ba[S]}});"1"!=urlParams.sketch&&(A=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){d.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),A.setAttribute("title",mxResources.get("reset")),A.style.textOverflow=
-"ellipsis",A.style.maxWidth="90px",C.appendChild(A));var Q=mxUtils.bind(this,function(ba,qa,I,L,H){var S=document.createElement("div");S.style.position="absolute";S.style.display="inline-block";S.style.overflow="hidden";S.style.pointerEvents="none";S.style.width="100%";S.style.height="100%";H.appendChild(S);var V=new Graph(S,null,null,f.getStylesheet());V.resetViewOnRootChange=!1;V.foldingEnabled=!1;V.gridEnabled=!1;V.autoScroll=!1;V.setTooltips(!1);V.setConnectable(!1);V.setPanning(!1);V.setEnabled(!1);
-V.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(f.getCellStyle.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),ua=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),ua=I);D(aa,F,oa);O(ba,aa,wa,L,V);O(ua,aa,wa,L,V);W&&(aa=f.postProcessCellStyle(wa,aa));return aa};V.model.beginUpdate();try{var ea=V.insertVertex(V.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),ka=V.insertEdge(V.getDefaultParent(),null,"Connector",ea,ea,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");
-ka.geometry.points=[new mxPoint(32,70)];ka.geometry.offset=new mxPoint(0,8)}finally{V.model.endUpdate()}}),R=document.createElement("div");R.style.position="relative";a.appendChild(R);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var P=mxUtils.bind(this,function(ba,qa,I,L,H){var S=this.format.cachedStyleEntries[H];null==S&&(S=document.createElement("div"),S.style.display="inline-block",S.style.position="relative",S.style.width="96px",S.style.height="90px",S.style.cursor=
-"pointer",S.style.border="1px solid gray",S.style.borderRadius="8px",S.style.margin="2px",S.style.overflow="hidden",null!=L&&null!=L.background&&(S.style.backgroundColor=L.background),Q(ba,qa,I,L,S),mxEvent.addGestureListeners(S,mxUtils.bind(this,function(V){S.style.opacity=.5}),null,mxUtils.bind(this,function(V){S.style.opacity=1;f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);O(ba,f.currentVertexStyle);O(ba,f.currentEdgeStyle);O(qa,f.currentVertexStyle);
-O(I,f.currentEdgeStyle);"1"==urlParams.sketch&&(e=Editor.sketchMode);e?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";d.beginUpdate();try{var ea=F.slice(),ka;for(ka in ba)ea.push(ka);K(ea,L);var wa=new ChangePageSetup(b,null!=L?L.background:null);wa.ignoreImage=!0;d.execute(wa);d.execute(new ChangeGridColor(b,null!=
-L&&null!=L.gridColor?L.gridColor:g))}finally{d.endUpdate()}})),mxEvent.addListener(S,"mouseenter",mxUtils.bind(this,function(V){var ea=f.getCellStyle;V=f.background;var ka=f.view.gridColor;f.background=null!=L?L.background:null;f.view.gridColor=null!=L&&null!=L.gridColor?L.gridColor:g;f.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(ea.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),ua=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),ua=I);D(aa,F,oa);O(ba,aa,
-wa,L);O(ua,aa,wa,L);W&&(aa=this.postProcessCellStyle(wa,aa));return aa};f.refresh();f.getCellStyle=ea;f.background=V;f.view.gridColor=ka})),mxEvent.addListener(S,"mouseleave",mxUtils.bind(this,function(V){f.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[H]=S));R.appendChild(S)}),Z=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var T=[],U=mxUtils.bind(this,function(){0<T.length&&(T[this.format.currentStylePage].style.background=
-"#84d7ff");for(var ba=10*this.format.currentStylePage;ba<Math.min(10*(this.format.currentStylePage+1),Editor.styles.length);ba++){var qa=Editor.styles[ba];P(qa.commonStyle,qa.vertexStyle,qa.edgeStyle,qa.graph,ba)}}),fa=mxUtils.bind(this,function(ba){0<=ba&&ba<Z&&(T[this.format.currentStylePage].style.background="transparent",R.innerText="",this.format.currentStylePage=ba,U())});if(1<Z){u=document.createElement("div");u.style.whiteSpace="nowrap";u.style.position="relative";u.style.textAlign="center";
-u.style.paddingTop="4px";u.style.width="210px";a.style.paddingBottom="8px";for(C=0;C<Z;C++){var ha=document.createElement("div");ha.style.display="inline-block";ha.style.width="6px";ha.style.height="6px";ha.style.marginLeft="4px";ha.style.marginRight="3px";ha.style.borderRadius="3px";ha.style.cursor="pointer";ha.style.background="transparent";ha.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(ba,qa){mxEvent.addListener(ha,"click",mxUtils.bind(this,function(){fa(ba)}))})(C,ha);u.appendChild(ha);
-T.push(ha)}a.appendChild(u);U();15>Z&&(m=function(ba){mxEvent.addListener(ba,"mouseenter",function(){ba.style.opacity="1"});mxEvent.addListener(ba,"mouseleave",function(){ba.style.opacity="0.5"})},A=document.createElement("div"),A.style.position="absolute",A.style.left="0px",A.style.top="0px",A.style.bottom="0px",A.style.width="24px",A.style.height="24px",A.style.margin="0px",A.style.cursor="pointer",A.style.opacity="0.5",A.style.backgroundRepeat="no-repeat",A.style.backgroundPosition="center center",
-A.style.backgroundSize="24px 24px",A.style.backgroundImage="url("+Editor.previousImage+")",Editor.isDarkMode()&&(A.style.filter="invert(100%)"),C=A.cloneNode(!1),C.style.backgroundImage="url("+Editor.nextImage+")",C.style.left="",C.style.right="2px",u.appendChild(A),u.appendChild(C),mxEvent.addListener(A,"click",mxUtils.bind(this,function(){fa(mxUtils.mod(this.format.currentStylePage-1,Z))})),mxEvent.addListener(C,"click",mxUtils.bind(this,function(){fa(mxUtils.mod(this.format.currentStylePage+1,
-Z))})),m(A),m(C))}else U();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,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
+(B=B.cloneNode(!1),C=C.cloneNode(!1),x=x.cloneNode(!1),x.appendChild(B),x.appendChild(C),r.appendChild(x),B.appendChild(this.createOption(mxResources.get("curved"),function(){return n},function(ba){(n=ba)?f.currentEdgeStyle.curved="1":delete f.currentEdgeStyle.curved;f.updateCellStyles({curved:ba?"1":null},f.getVerticesAndEdges(!1,!0))},null,function(ba){ba.style.width="auto"})));u.appendChild(m);a.appendChild(u);var G=["fillColor","strokeColor","fontColor","gradientColor"],J=mxUtils.bind(this,function(ba,
+qa){var O=f.getVerticesAndEdges();d.beginUpdate();try{for(var S=0;S<O.length;S++){var F=f.getCellStyle(O[S]);null!=F.labelBackgroundColor&&f.updateCellStyles({labelBackgroundColor:null!=qa?qa.background:null},[O[S]]);for(var L=d.isEdge(O[S]),T=d.getStyle(O[S]),ca=L?f.currentEdgeStyle:f.currentVertexStyle,fa=0;fa<ba.length;fa++)if(null!=F[ba[fa]]&&F[ba[fa]]!=mxConstants.NONE||ba[fa]!=mxConstants.STYLE_FILLCOLOR&&ba[fa]!=mxConstants.STYLE_STROKECOLOR)T=mxUtils.setStyle(T,ba[fa],ca[ba[fa]]);d.setStyle(O[S],
+T)}}finally{d.endUpdate()}}),D=mxUtils.bind(this,function(ba,qa,O){if(null!=ba)for(var S=0;S<qa.length;S++)if(null!=ba[qa[S]]&&ba[qa[S]]!=mxConstants.NONE||qa[S]!=mxConstants.STYLE_FILLCOLOR&&qa[S]!=mxConstants.STYLE_STROKECOLOR)ba[qa[S]]=O[qa[S]]}),N=mxUtils.bind(this,function(ba,qa,O,S,F){if(null!=ba){null!=O&&null!=qa.labelBackgroundColor&&(S=null!=S?S.background:null,F=null!=F?F:f,null==S&&(S=F.background),null==S&&(S=F.defaultPageBackgroundColor),qa.labelBackgroundColor=S);for(var L in ba)if(null==
+O||null!=qa[L]&&qa[L]!=mxConstants.NONE||L!=mxConstants.STYLE_FILLCOLOR&&L!=mxConstants.STYLE_STROKECOLOR)qa[L]=ba[L]}});"1"!=urlParams.sketch&&(B=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){d.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),B.setAttribute("title",mxResources.get("reset")),B.style.textOverflow=
+"ellipsis",B.style.maxWidth="90px",C.appendChild(B));var Q=mxUtils.bind(this,function(ba,qa,O,S,F){var L=document.createElement("div");L.style.position="absolute";L.style.display="inline-block";L.style.overflow="hidden";L.style.pointerEvents="none";L.style.width="100%";L.style.height="100%";F.appendChild(L);var T=new Graph(L,null,null,f.getStylesheet());T.resetViewOnRootChange=!1;T.foldingEnabled=!1;T.gridEnabled=!1;T.autoScroll=!1;T.setTooltips(!1);T.setConnectable(!1);T.setPanning(!1);T.setEnabled(!1);
+T.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(f.getCellStyle.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),sa=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),sa=O);D(aa,G,oa);N(ba,aa,wa,S,T);N(sa,aa,wa,S,T);W&&(aa=f.postProcessCellStyle(wa,aa));return aa};T.model.beginUpdate();try{var ca=T.insertVertex(T.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),fa=T.insertEdge(T.getDefaultParent(),null,"Connector",ca,ca,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");
+fa.geometry.points=[new mxPoint(32,70)];fa.geometry.offset=new mxPoint(0,8)}finally{T.model.endUpdate()}}),R=document.createElement("div");R.style.position="relative";a.appendChild(R);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var P=mxUtils.bind(this,function(ba,qa,O,S,F){var L=this.format.cachedStyleEntries[F];null==L&&(L=document.createElement("div"),L.style.display="inline-block",L.style.position="relative",L.style.width="96px",L.style.height="90px",L.style.cursor=
+"pointer",L.style.border="1px solid gray",L.style.borderRadius="8px",L.style.margin="2px",L.style.overflow="hidden",null!=S&&null!=S.background&&(L.style.backgroundColor=S.background),Q(ba,qa,O,S,L),mxEvent.addGestureListeners(L,mxUtils.bind(this,function(T){L.style.opacity=.5}),null,mxUtils.bind(this,function(T){L.style.opacity=1;f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);N(ba,f.currentVertexStyle);N(ba,f.currentEdgeStyle);N(qa,f.currentVertexStyle);
+N(O,f.currentEdgeStyle);"1"==urlParams.sketch&&(e=Editor.sketchMode);e?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";d.beginUpdate();try{var ca=G.slice(),fa;for(fa in ba)ca.push(fa);J(ca,S);var wa=new ChangePageSetup(b,null!=S?S.background:null);wa.ignoreImage=!0;d.execute(wa);d.execute(new ChangeGridColor(b,null!=
+S&&null!=S.gridColor?S.gridColor:g))}finally{d.endUpdate()}})),mxEvent.addListener(L,"mouseenter",mxUtils.bind(this,function(T){var ca=f.getCellStyle;T=f.background;var fa=f.view.gridColor;f.background=null!=S?S.background:null;f.view.gridColor=null!=S&&null!=S.gridColor?S.gridColor:g;f.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(ca.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),sa=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),sa=O);D(aa,G,oa);N(ba,aa,
+wa,S);N(sa,aa,wa,S);W&&(aa=this.postProcessCellStyle(wa,aa));return aa};f.refresh();f.getCellStyle=ca;f.background=T;f.view.gridColor=fa})),mxEvent.addListener(L,"mouseleave",mxUtils.bind(this,function(T){f.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[F]=L));R.appendChild(L)}),Z=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var U=[],V=mxUtils.bind(this,function(){0<U.length&&(U[this.format.currentStylePage].style.background=
+"#84d7ff");for(var ba=10*this.format.currentStylePage;ba<Math.min(10*(this.format.currentStylePage+1),Editor.styles.length);ba++){var qa=Editor.styles[ba];P(qa.commonStyle,qa.vertexStyle,qa.edgeStyle,qa.graph,ba)}}),ia=mxUtils.bind(this,function(ba){0<=ba&&ba<Z&&(U[this.format.currentStylePage].style.background="transparent",R.innerText="",this.format.currentStylePage=ba,V())});if(1<Z){u=document.createElement("div");u.style.whiteSpace="nowrap";u.style.position="relative";u.style.textAlign="center";
+u.style.paddingTop="4px";u.style.width="210px";a.style.paddingBottom="8px";for(C=0;C<Z;C++){var ha=document.createElement("div");ha.style.display="inline-block";ha.style.width="6px";ha.style.height="6px";ha.style.marginLeft="4px";ha.style.marginRight="3px";ha.style.borderRadius="3px";ha.style.cursor="pointer";ha.style.background="transparent";ha.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(ba,qa){mxEvent.addListener(ha,"click",mxUtils.bind(this,function(){ia(ba)}))})(C,ha);u.appendChild(ha);
+U.push(ha)}a.appendChild(u);V();15>Z&&(m=function(ba){mxEvent.addListener(ba,"mouseenter",function(){ba.style.opacity="1"});mxEvent.addListener(ba,"mouseleave",function(){ba.style.opacity="0.5"})},B=document.createElement("div"),B.style.position="absolute",B.style.left="0px",B.style.top="0px",B.style.bottom="0px",B.style.width="24px",B.style.height="24px",B.style.margin="0px",B.style.cursor="pointer",B.style.opacity="0.5",B.style.backgroundRepeat="no-repeat",B.style.backgroundPosition="center center",
+B.style.backgroundSize="24px 24px",B.style.backgroundImage="url("+Editor.previousImage+")",Editor.isDarkMode()&&(B.style.filter="invert(100%)"),C=B.cloneNode(!1),C.style.backgroundImage="url("+Editor.nextImage+")",C.style.left="",C.style.right="2px",u.appendChild(B),u.appendChild(C),mxEvent.addListener(B,"click",mxUtils.bind(this,function(){ia(mxUtils.mod(this.format.currentStylePage-1,Z))})),mxEvent.addListener(C,"click",mxUtils.bind(this,function(){ia(mxUtils.mod(this.format.currentStylePage+1,
+Z))})),m(B),m(C))}else V();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,f){BaseFormatPanel.call(this,a,b,f);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,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return f.pageVisible},function(e){b.actions.get("pageView").funct()},{install:function(e){this.listener=function(){e(f.pageVisible)};b.addListener("pageViewChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}));
if(f.isEnabled()){var d=this.createColorOption(mxResources.get("background"),function(){return f.background},function(e){var k=new ChangePageSetup(b,e);k.ignoreImage=null!=e&&e!=mxConstants.NONE;f.model.execute(k)},"#ffffff",{install:function(e){this.listener=function(){e(f.background)};b.addListener("backgroundColorChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});if(this.showBackgroundImageOption){var g=d.getElementsByTagName("span")[0];g.style.display="inline-block";
@@ -3516,19 +3516,19 @@ DiagramFormatPanel.prototype.addDocumentProperties=function(a){a.appendChild(thi
DiagramFormatPanel.prototype.addPaperSize=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var d=PageSetupDialog.addPageFormatPanel(a,"formatpanel",f.pageFormat,function(e){if(null==f.pageFormat||f.pageFormat.width!=e.width||f.pageFormat.height!=e.height)e=new ChangePageSetup(b,null,null,e),e.ignoreColor=!0,e.ignoreImage=!0,f.model.execute(e)});this.addKeyHandler(d.widthInput,function(){d.set(f.pageFormat)});this.addKeyHandler(d.heightInput,
function(){d.set(f.pageFormat)});var g=function(){d.set(f.pageFormat)};b.addListener("pageFormatChanged",g);this.listeners.push({destroy:function(){b.removeListener(g)}});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});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(c,h,q){mxShape.call(this);this.line=c;this.stroke=h;this.strokewidth=null!=q?q:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function f(){mxSwimlane.call(this)}function d(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function e(){mxActor.call(this)}function k(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function m(){mxCylinder.call(this)}function r(){mxShape.call(this)}function x(){mxShape.call(this)}
-function A(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function F(){mxCylinder.call(this)}function K(){mxCylinder.call(this)}function D(){mxActor.call(this)}function O(){mxActor.call(this)}function Q(){mxActor.call(this)}function R(){mxActor.call(this)}function P(){mxActor.call(this)}function Z(){mxActor.call(this)}function T(){mxActor.call(this)}function U(c,h){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
-this.defaultVariation=h;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,U.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,U.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,U.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,U.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,U.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,U.prototype.arcTo)}function fa(){mxRectangleShape.call(this)}function ha(){mxRectangleShape.call(this)}function ba(){mxActor.call(this)}function qa(){mxActor.call(this)}function I(){mxActor.call(this)}function L(){mxRectangleShape.call(this)}function H(){mxRectangleShape.call(this)}function S(){mxCylinder.call(this)}function V(){mxShape.call(this)}function ea(){mxShape.call(this)}function ka(){mxEllipse.call(this)}function wa(){mxShape.call(this)}
-function W(){mxShape.call(this)}function aa(){mxRectangleShape.call(this)}function oa(){mxShape.call(this)}function ua(){mxShape.call(this)}function Ja(){mxShape.call(this)}function Ga(){mxShape.call(this)}function va(){mxShape.call(this)}function za(){mxCylinder.call(this)}function ra(){mxCylinder.call(this)}function Ha(){mxRectangleShape.call(this)}function Ta(){mxDoubleEllipse.call(this)}function db(){mxDoubleEllipse.call(this)}function Ua(){mxArrowConnector.call(this);this.spacing=0}function Va(){mxArrowConnector.call(this);
-this.spacing=0}function Ya(){mxActor.call(this)}function bb(){mxRectangleShape.call(this)}function cb(){mxActor.call(this)}function jb(){mxActor.call(this)}function $a(){mxActor.call(this)}function ca(){mxActor.call(this)}function t(){mxActor.call(this)}function z(){mxActor.call(this)}function B(){mxActor.call(this)}function E(){mxActor.call(this)}function G(){mxActor.call(this)}function M(){mxActor.call(this)}function X(){mxEllipse.call(this)}function ia(){mxEllipse.call(this)}function da(){mxEllipse.call(this)}
-function ja(){mxRhombus.call(this)}function sa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Ea(){mxActor.call(this)}function Fa(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
-function Pa(c,h,q,l,p,v,w,J,y,Y){w+=y;var N=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){c.ellipse(N.x-p-w,N.y-v-w,2*w,2*w);Y?c.fillAndStroke():c.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==c?c=q:c.add(q))}this.bounds=null!=c?c:new mxRectangle};a.prototype.paintVertexShape=function(c,
+function B(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function G(){mxCylinder.call(this)}function J(){mxCylinder.call(this)}function D(){mxActor.call(this)}function N(){mxActor.call(this)}function Q(){mxActor.call(this)}function R(){mxActor.call(this)}function P(){mxActor.call(this)}function Z(){mxActor.call(this)}function U(){mxActor.call(this)}function V(c,h){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=h;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,V.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,V.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,V.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,V.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,V.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,V.prototype.arcTo)}function ia(){mxRectangleShape.call(this)}function ha(){mxRectangleShape.call(this)}function ba(){mxActor.call(this)}function qa(){mxActor.call(this)}function O(){mxActor.call(this)}function S(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function L(){mxCylinder.call(this)}function T(){mxShape.call(this)}function ca(){mxShape.call(this)}function fa(){mxEllipse.call(this)}function wa(){mxShape.call(this)}
+function W(){mxShape.call(this)}function aa(){mxRectangleShape.call(this)}function oa(){mxShape.call(this)}function sa(){mxShape.call(this)}function Ka(){mxShape.call(this)}function Ha(){mxShape.call(this)}function ua(){mxShape.call(this)}function Ca(){mxCylinder.call(this)}function ra(){mxCylinder.call(this)}function Da(){mxRectangleShape.call(this)}function Ua(){mxDoubleEllipse.call(this)}function db(){mxDoubleEllipse.call(this)}function Ta(){mxArrowConnector.call(this);this.spacing=0}function $a(){mxArrowConnector.call(this);
+this.spacing=0}function Xa(){mxActor.call(this)}function Va(){mxRectangleShape.call(this)}function Ya(){mxActor.call(this)}function jb(){mxActor.call(this)}function bb(){mxActor.call(this)}function da(){mxActor.call(this)}function t(){mxActor.call(this)}function z(){mxActor.call(this)}function A(){mxActor.call(this)}function E(){mxActor.call(this)}function H(){mxActor.call(this)}function K(){mxActor.call(this)}function X(){mxEllipse.call(this)}function ja(){mxEllipse.call(this)}function ea(){mxEllipse.call(this)}
+function ka(){mxRhombus.call(this)}function ta(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Fa(){mxActor.call(this)}function Ga(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
+function Pa(c,h,q,l,p,v,w,I,y,Y){w+=y;var M=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){c.ellipse(M.x-p-w,M.y-v-w,2*w,2*w);Y?c.fillAndStroke():c.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==c?c=q:c.add(q))}this.bounds=null!=c?c:new mxRectangle};a.prototype.paintVertexShape=function(c,
h,q,l,p){this.paintTableLine(c,this.line,0,0)};a.prototype.paintTableLine=function(c,h,q,l){if(null!=h){var p=null;c.begin();for(var v=0;v<h.length;v++){var w=h[v];null!=w&&(null==p?c.moveTo(w.x+q,w.y+l):null!=p&&c.lineTo(w.x+q,w.y+l));p=w}c.end();c.stroke()}};a.prototype.intersectsRectangle=function(c){var h=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var q=null,l=0;l<this.line.length&&!h;l++){var p=this.line[l];null!=p&&null!=q&&(h=mxUtils.rectangleIntersectsSegment(c,
-q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(c,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),J=this.getTitleSize();0==J||this.outline?Da.prototype.paintVertexShape.apply(this,
-arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-h,-q));v||this.outline||!(w&&J<p||!w&&J<l)||this.paintForeground(c,h,q,l,p)};b.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var J=v;v=w;w=J}c.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
+q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(c,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),I=this.getTitleSize();0==I||this.outline?Ea.prototype.paintVertexShape.apply(this,
+arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-h,-q));v||this.outline||!(w&&I<p||!w&&I<l)||this.paintForeground(c,h,q,l,p)};b.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var I=v;v=w;w=I}c.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
s;this.paintTableForeground(c,h,q,l,p)}};b.prototype.paintTableForeground=function(c,h,q,l,p){l=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(p=0;p<l.length;p++)a.prototype.paintTableLine(c,l[p],h,q)};b.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
-b);mxUtils.extend(f,b);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.darkOpacity=0;d.prototype.darkOpacity2=0;d.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),J=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"darkOpacity2",this.darkOpacity2))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(v,p);c.lineTo(0,p-v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(l-v,0),c.lineTo(l,v),c.lineTo(v,v),c.close(),c.fill()),0!=J&&(c.setFillAlpha(Math.abs(J)),c.setFillColor(0>J?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(v,
+b);mxUtils.extend(f,b);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.darkOpacity=0;d.prototype.darkOpacity2=0;d.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),I=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"darkOpacity2",this.darkOpacity2))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(v,p);c.lineTo(0,p-v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(l-v,0),c.lineTo(l,v),c.lineTo(v,v),c.close(),c.fill()),0!=I&&(c.setFillAlpha(Math.abs(I)),c.setFillColor(0>I?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(v,
v),c.lineTo(v,p),c.lineTo(0,p-v),c.close(),c.fill()),c.begin(),c.moveTo(v,p),c.lineTo(v,v),c.lineTo(0,0),c.moveTo(v,v),c.lineTo(l,v),c.end(),c.stroke())};d.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",d);var Na=Math.tan(mxUtils.toRadians(30)),Sa=(.5-Na)/2;mxCellRenderer.registerShape("isoRectangle",e);mxUtils.extend(g,
mxCylinder);g.prototype.size=6;g.prototype.paintVertexShape=function(c,h,q,l,p){c.setFillColor(this.stroke);var v=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(h+.5*(l-v),q+.5*(p-v),v,v);c.fill();c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};mxCellRenderer.registerShape("waypoint",g);mxUtils.extend(e,mxActor);e.prototype.size=20;e.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/Na);c.translate((l-h)/2,(p-h)/2+h/4);c.moveTo(0,
.25*h);c.lineTo(.5*h,h*Sa);c.lineTo(h,.25*h);c.lineTo(.5*h,(.5-Sa)*h);c.lineTo(0,.25*h);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",e);mxUtils.extend(k,mxCylinder);k.prototype.size=20;k.prototype.redrawPath=function(c,h,q,l,p,v){h=Math.min(l,p/(.5+Na));v?(c.moveTo(0,.25*h),c.lineTo(.5*h,(.5-Sa)*h),c.lineTo(h,.25*h),c.moveTo(.5*h,(.5-Sa)*h),c.lineTo(.5*h,(1-Sa)*h)):(c.translate((l-h)/2,(p-h)/2),c.moveTo(0,.25*h),c.lineTo(.5*h,h*Sa),c.lineTo(h,.25*h),c.lineTo(h,.75*h),c.lineTo(.5*
@@ -3537,198 +3537,198 @@ h,(1-Sa)*h),c.lineTo(0,.75*h),c.close());c.end()};mxCellRenderer.registerShape("
this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(0,p);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),c.close(),c.fill()),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),
c.end(),c.stroke())};mxCellRenderer.registerShape("note",u);mxUtils.extend(m,u);mxCellRenderer.registerShape("note2",m);m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,0)}return null};mxUtils.extend(r,mxShape);r.prototype.isoAngle=15;r.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
"isoAngle",this.isoAngle))))*Math.PI/200;v=Math.min(l*Math.tan(v),.5*p);c.translate(h,q);c.begin();c.moveTo(.5*l,0);c.lineTo(l,v);c.lineTo(l,p-v);c.lineTo(.5*l,p);c.lineTo(0,p-v);c.lineTo(0,v);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,v);c.lineTo(.5*l,2*v);c.lineTo(l,v);c.moveTo(.5*l,2*v);c.lineTo(.5*l,p);c.stroke()};mxCellRenderer.registerShape("isoCube2",r);mxUtils.extend(x,mxShape);x.prototype.size=15;x.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*
-p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(A,mxCylinder);A.prototype.size=
-15;A.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),w?(c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v)):(c.moveTo(0,0),c.arcTo(.5*l,v,0,0,0,.5*l,v),c.arcTo(.5*l,v,0,0,0,l,0)),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),
-w&&(c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke()))};mxCellRenderer.registerShape("cylinder3",A);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l/2,.5*p,l,0);c.quadTo(.5*l,p/2,l,p);c.quadTo(l/2,.5*p,0,p);c.quadTo(.5*l,p/2,0,0);c.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(F,mxCylinder);F.prototype.tabWidth=60;F.prototype.tabHeight=20;F.prototype.tabPosition="right";F.prototype.arcSize=.1;
-F.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),J=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));J||(y*=Math.min(l,p));
+p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(B,mxCylinder);B.prototype.size=
+15;B.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),w?(c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v)):(c.moveTo(0,0),c.arcTo(.5*l,v,0,0,0,.5*l,v),c.arcTo(.5*l,v,0,0,0,l,0)),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),
+w&&(c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke()))};mxCellRenderer.registerShape("cylinder3",B);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l/2,.5*p,l,0);c.quadTo(.5*l,p/2,l,p);c.quadTo(l/2,.5*p,0,p);c.quadTo(.5*l,p/2,0,0);c.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(G,mxCylinder);G.prototype.tabWidth=60;G.prototype.tabHeight=20;G.prototype.tabPosition="right";G.prototype.arcSize=.1;
+G.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),I=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));I||(y*=Math.min(l,p));
y=Math.min(y,.5*l,.5*(p-q));h=Math.max(h,y);h=Math.min(l-y,h);w||(y=0);c.begin();"left"==v?(c.moveTo(Math.max(y,0),q),c.lineTo(Math.max(y,0),0),c.lineTo(h,0),c.lineTo(h,q)):(c.moveTo(l-h,q),c.lineTo(l-h,0),c.lineTo(l-Math.max(y,0),0),c.lineTo(l-Math.max(y,0),q));w?(c.moveTo(0,y+q),c.arcTo(y,y,0,0,1,y,q),c.lineTo(l-y,q),c.arcTo(y,y,0,0,1,l,y+q),c.lineTo(l,p-y),c.arcTo(y,y,0,0,1,l-y,p),c.lineTo(y,p),c.arcTo(y,y,0,0,1,0,p-y)):(c.moveTo(0,q),c.lineTo(l,q),c.lineTo(l,p),c.lineTo(0,p));c.close();c.fillAndStroke();
-c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(l-30,q+20),c.lineTo(l-20,q+10),c.lineTo(l-10,q+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",F);F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
+c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(l-30,q+20),c.lineTo(l-20,q+10),c.lineTo(l-10,q+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",G);G.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-
-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};mxUtils.extend(K,mxCylinder);K.prototype.arcSize=.1;K.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);c.begin();c.moveTo(v,
+h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};mxUtils.extend(J,mxCylinder);J.prototype.arcSize=.1;J.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);c.begin();c.moveTo(v,
h);c.arcTo(h,h,0,0,1,v+h,0);c.lineTo(l-h,0);c.arcTo(h,h,0,0,1,l,h);c.lineTo(l,p-h);c.arcTo(h,h,0,0,1,l-h,p);c.lineTo(v+h,p);c.arcTo(h,h,0,0,1,v,p-h);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(l-40,p-20,10,10,3,3),c.stroke(),c.roundrect(l-20,p-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(l-30,p-15),c.lineTo(l-20,p-15),c.stroke());"connPointRefEntry"==q?(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke()):"connPointRefExit"==
-q&&(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*p-5),c.lineTo(15,.5*p+5),c.moveTo(15,.5*p-5),c.lineTo(5,.5*p+5),c.stroke())};K.prototype.getLabelMargins=function(c){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",K);mxUtils.extend(D,mxActor);D.prototype.size=30;D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=
-function(c,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("card",D);mxUtils.extend(O,mxActor);O.prototype.size=.4;O.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));c.moveTo(0,h/2);c.quadTo(l/4,1.4*h,l/2,h/2);c.quadTo(3*l/4,h*(1-1.4),l,h/2);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};O.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=c.width,l=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
-l,new mxRectangle(c.x,c.y+h,q,l-2*h);h*=q;return new mxRectangle(c.x+h,c.y,q-2*h,l)}return c};mxCellRenderer.registerShape("tape",O);mxUtils.extend(Q,mxActor);Q.prototype.size=.3;Q.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};Q.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
+q&&(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*p-5),c.lineTo(15,.5*p+5),c.moveTo(15,.5*p-5),c.lineTo(5,.5*p+5),c.stroke())};J.prototype.getLabelMargins=function(c){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",J);mxUtils.extend(D,mxActor);D.prototype.size=30;D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=
+function(c,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("card",D);mxUtils.extend(N,mxActor);N.prototype.size=.4;N.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));c.moveTo(0,h/2);c.quadTo(l/4,1.4*h,l/2,h/2);c.quadTo(3*l/4,h*(1-1.4),l,h/2);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};N.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=c.width,l=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
+l,new mxRectangle(c.x,c.y+h,q,l-2*h);h*=q;return new mxRectangle(c.x+h,c.y,q-2*h,l)}return c};mxCellRenderer.registerShape("tape",N);mxUtils.extend(Q,mxActor);Q.prototype.size=.3;Q.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};Q.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
0);c.lineTo(l,0);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};mxCellRenderer.registerShape("document",Q);var eb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,h,q,l){var p=mxUtils.getValue(this.style,"size");return null!=p?l*Math.max(0,Math.min(1,p)):eb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=2*mxUtils.getValue(this.style,
-"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*h),0,0)}return null};A.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
+"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*h),0,0)}return null};B.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};G.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
-this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};K.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
+this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};J.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,Math.max(0,h*this.scale))}return null};mxUtils.extend(R,mxActor);R.prototype.size=.2;R.prototype.fixedSize=20;R.prototype.isRoundable=function(){return!0};R.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l-h,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("parallelogram",R);mxUtils.extend(P,mxActor);P.prototype.size=.2;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("trapezoid",P);mxUtils.extend(Z,mxActor);Z.prototype.size=.5;Z.prototype.redrawPath=function(c,h,q,l,p){c.setFillColor(null);
-h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",Z);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,h,q,l,p){c.setStrokeWidth(1);c.setFillColor(this.stroke);
-h=l/5;c.rect(0,0,h,p);c.fillAndStroke();c.rect(2*h,0,h,p);c.fillAndStroke();c.rect(4*h,0,h,p);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",T);U.prototype.moveTo=function(c,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;this.firstX=c;this.firstY=h};U.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)};
-U.prototype.quadTo=function(c,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};U.prototype.curveTo=function(c,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};U.prototype.arcTo=function(c,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};U.prototype.lineTo=function(c,h){if(null!=this.lastX&&null!=this.lastY){var q=function(N){return"number"===typeof N?N?0>N?-1:1:N===N?0:NaN:NaN},l=Math.abs(c-
-this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;return}var w=Math.round(v/10),J=this.defaultVariation;5>w&&(w=5,J/=3);var y=q(c-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*J;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,c,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=
-h};U.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 Za=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){Za.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var pb=mxShape.prototype.afterPaint;
-mxShape.prototype.afterPaint=function(c){pb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new U(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,h,q,l,p){if(null==c.handJiggle||c.handJiggle.constructor!=U)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",Z);mxUtils.extend(U,mxActor);U.prototype.redrawPath=function(c,h,q,l,p){c.setStrokeWidth(1);c.setFillColor(this.stroke);
+h=l/5;c.rect(0,0,h,p);c.fillAndStroke();c.rect(2*h,0,h,p);c.fillAndStroke();c.rect(4*h,0,h,p);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",U);V.prototype.moveTo=function(c,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;this.firstX=c;this.firstY=h};V.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)};
+V.prototype.quadTo=function(c,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};V.prototype.curveTo=function(c,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};V.prototype.arcTo=function(c,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};V.prototype.lineTo=function(c,h){if(null!=this.lastX&&null!=this.lastY){var q=function(M){return"number"===typeof M?M?0>M?-1:1:M===M?0:NaN:NaN},l=Math.abs(c-
+this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;return}var w=Math.round(v/10),I=this.defaultVariation;5>w&&(w=5,I/=3);var y=q(c-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*I;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,c,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=
+h};V.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 ab=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){ab.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var pb=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(c){pb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new V(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,h,q,l,p){if(null==c.handJiggle||c.handJiggle.constructor!=V)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(v||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)v||null!=this.fill&&this.fill!=mxConstants.NONE||(c.pointerEvents=!1),c.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?v=Math.min(l/2,Math.min(p/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,v=Math.min(l*
-v,p*v)),c.moveTo(h+v,q),c.lineTo(h+l-v,q),c.quadTo(h+l,q,h+l,q+v),c.lineTo(h+l,q+p-v),c.quadTo(h+l,q+p,h+l-v,q+p),c.lineTo(h+v,q+p),c.quadTo(h,q+p,h,q+p-v),c.lineTo(h,q+v),c.quadTo(h,q,h+v,q)):(c.moveTo(h,q),c.lineTo(h+l,q),c.lineTo(h+l,q+p),c.lineTo(h,q+p),c.lineTo(h,q)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
+v,p*v)),c.moveTo(h+v,q),c.lineTo(h+l-v,q),c.quadTo(h+l,q,h+l,q+v),c.lineTo(h+l,q+p-v),c.quadTo(h+l,q+p,h+l-v,q+p),c.lineTo(h+v,q+p),c.quadTo(h,q+p,h,q+p-v),c.lineTo(h,q+v),c.quadTo(h,q,h+v,q)):(c.moveTo(h,q),c.lineTo(h+l,q),c.lineTo(h+l,q+p),c.lineTo(h,q+p),c.lineTo(h,q)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ia,mxRectangleShape);ia.prototype.size=.1;ia.prototype.fixedSize=!1;ia.prototype.isHtmlAllowed=function(){return!1};ia.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var h=c.width,q=c.height;c=new mxRectangle(c.x,c.y,h,q);var l=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var p=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;l=Math.max(l,Math.min(h*p,q*p))}c.x+=Math.round(l);c.width-=Math.round(2*l);return c}return c};
-fa.prototype.paintForeground=function(c,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.moveTo(h+l-w,q);c.lineTo(h+l-w,q+p);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
-arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(c,h,q,l,p){c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};ha.prototype.paintForeground=function(c,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
+ia.prototype.paintForeground=function(c,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.moveTo(h+l-w,q);c.lineTo(h+l-w,q+p);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+arguments)};mxCellRenderer.registerShape("process",ia);mxCellRenderer.registerShape("process2",ia);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(c,h,q,l,p){c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};ha.prototype.paintForeground=function(c,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,h,q,l,p){h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),w=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),J=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+J),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(c,h,
+this.position2)))),I=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+I),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(c,h,
q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(0,p),new mxPoint(h,p/2)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("step",
-qa);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,
-0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(c,h,q,l,p){var v=Math.min(l/5,p/5)+1;c.begin();c.moveTo(h+l/2,q+v);c.lineTo(h+l/2,q+p-v);c.moveTo(h+v,q+p/2);c.lineTo(h+l-v,q+p/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-L);var ab=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};mxRhombus.prototype.paintVertexShape=function(c,h,q,l,p){ab.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
-0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(c.setShadow(!1),ab.apply(this,[c,h,q,l,p]))}};mxUtils.extend(H,mxRectangleShape);H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};H.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var J=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],N=this.style["symbol"+v+"Height"],Ca=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ca,
-Ka=this.style["symbol"+v+"ArcSpacing"];null!=Ka&&(Ka*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ca+=Ka,Qa+=Ka);Ka=h;var la=q;Ka=J==mxConstants.ALIGN_CENTER?Ka+(l-Y)/2:J==mxConstants.ALIGN_RIGHT?Ka+(l-Y-Ca):Ka+Ca;la=y==mxConstants.ALIGN_MIDDLE?la+(p-N)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-N-Qa):la+Qa;c.save();J=new w;J.style=this.style;w.prototype.paintVertexShape.call(J,c,Ka,la,Y,N);c.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-H);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(c,h,q,l,p,v){v?(c.moveTo(0,0),c.lineTo(l/2,p/2),c.lineTo(l,0),c.end()):(c.moveTo(0,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(0,p),c.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(V,mxShape);V.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.ellipse(l/4,0,l/2,p/4);c.fillAndStroke();c.begin();c.moveTo(l/2,p/4);c.lineTo(l/2,2*p/3);c.moveTo(l/2,p/3);c.lineTo(0,p/3);c.moveTo(l/2,p/3);c.lineTo(l,p/3);c.moveTo(l/
-2,2*p/3);c.lineTo(0,p);c.moveTo(l/2,2*p/3);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",V);mxUtils.extend(ea,mxShape);ea.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};ea.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,p/4);c.lineTo(0,3*p/4);c.end();c.stroke();c.begin();c.moveTo(0,p/2);c.lineTo(l/6,p/2);c.end();c.stroke();c.ellipse(l/6,0,5*l/6,p);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-ea);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/8,q+p);c.lineTo(h+7*l/8,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ka);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(l,0);c.lineTo(0,p);c.moveTo(0,0);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
+qa);mxUtils.extend(O,mxHexagon);O.prototype.size=.25;O.prototype.fixedSize=20;O.prototype.isRoundable=function(){return!0};O.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,
+0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",O);mxUtils.extend(S,mxRectangleShape);S.prototype.isHtmlAllowed=function(){return!1};S.prototype.paintForeground=function(c,h,q,l,p){var v=Math.min(l/5,p/5)+1;c.begin();c.moveTo(h+l/2,q+v);c.lineTo(h+l/2,q+p-v);c.moveTo(h+v,q+p/2);c.lineTo(h+l-v,q+p/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+S);var cb=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};mxRhombus.prototype.paintVertexShape=function(c,h,q,l,p){cb.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(c.setShadow(!1),cb.apply(this,[c,h,q,l,p]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};F.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var I=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],M=this.style["symbol"+v+"Height"],Ba=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ba,
+Ja=this.style["symbol"+v+"ArcSpacing"];null!=Ja&&(Ja*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ba+=Ja,Qa+=Ja);Ja=h;var la=q;Ja=I==mxConstants.ALIGN_CENTER?Ja+(l-Y)/2:I==mxConstants.ALIGN_RIGHT?Ja+(l-Y-Ba):Ja+Ba;la=y==mxConstants.ALIGN_MIDDLE?la+(p-M)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-M-Qa):la+Qa;c.save();I=new w;I.style=this.style;w.prototype.paintVertexShape.call(I,c,Ja,la,Y,M);c.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+F);mxUtils.extend(L,mxCylinder);L.prototype.redrawPath=function(c,h,q,l,p,v){v?(c.moveTo(0,0),c.lineTo(l/2,p/2),c.lineTo(l,0),c.end()):(c.moveTo(0,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(0,p),c.close())};mxCellRenderer.registerShape("message",L);mxUtils.extend(T,mxShape);T.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.ellipse(l/4,0,l/2,p/4);c.fillAndStroke();c.begin();c.moveTo(l/2,p/4);c.lineTo(l/2,2*p/3);c.moveTo(l/2,p/3);c.lineTo(0,p/3);c.moveTo(l/2,p/3);c.lineTo(l,p/3);c.moveTo(l/
+2,2*p/3);c.lineTo(0,p);c.moveTo(l/2,2*p/3);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",T);mxUtils.extend(ca,mxShape);ca.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};ca.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,p/4);c.lineTo(0,3*p/4);c.end();c.stroke();c.begin();c.moveTo(0,p/2);c.lineTo(l/6,p/2);c.end();c.stroke();c.ellipse(l/6,0,5*l/6,p);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+ca);mxUtils.extend(fa,mxEllipse);fa.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/8,q+p);c.lineTo(h+7*l/8,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",fa);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(l,0);c.lineTo(0,p);c.moveTo(0,0);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
mxShape);W.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};W.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,0);c.end();c.stroke();c.ellipse(0,p/8,l,7*p/8);c.fillAndStroke()};W.prototype.paintForeground=function(c,h,q,l,p){c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,p/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",W);mxUtils.extend(aa,mxRectangleShape);aa.prototype.size=
40;aa.prototype.isHtmlAllowed=function(){return!1};aa.prototype.getLabelBounds=function(c){var h=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,h)};aa.prototype.paintBackground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"participant");null==w||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
c,h,q,l,v):(w=this.state.view.graph.cellRenderer.getShape(w),null!=w&&w!=aa&&(w=new w,w.apply(this.state),c.save(),w.paintVertexShape(c,h,q,l,v),c.restore()));v<p&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(h+l/2,q+v),c.lineTo(h+l/2,q+p),c.end(),c.stroke())};aa.prototype.paintForeground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,h,q,l,
Math.min(p,v))};mxCellRenderer.registerShape("umlLifeline",aa);mxUtils.extend(oa,mxShape);oa.prototype.width=60;oa.prototype.height=30;oa.prototype.corner=10;oa.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};oa.prototype.paintBackground=function(c,h,q,l,p){var v=this.corner,w=Math.min(l,Math.max(v,parseFloat(mxUtils.getValue(this.style,
-"width",this.width)))),J=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(c.setFillColor(y),c.rect(h,q,l,p),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,h,q,l,p),c.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
-c.moveTo(h,q);c.lineTo(h+w,q);c.lineTo(h+w,q+Math.max(0,J-1.5*v));c.lineTo(h+Math.max(0,w-v),q+J);c.lineTo(h,q+J);c.close();c.fillAndStroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+l,q);c.lineTo(h+l,q+p);c.lineTo(h,q+p);c.lineTo(h,q+J);c.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(c,h,q,l){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,h,
+"width",this.width)))),I=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(c.setFillColor(y),c.rect(h,q,l,p),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,h,q,l,p),c.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
+c.moveTo(h,q);c.lineTo(h+w,q);c.lineTo(h+w,q+Math.max(0,I-1.5*v));c.lineTo(h+Math.max(0,w-v),q+I);c.lineTo(h,q+I);c.close();c.fillAndStroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+l,q);c.lineTo(h+l,q+p);c.lineTo(h,q+p);c.lineTo(h,q+I);c.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(c,h,q,l){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,h,
q,l){l=aa.prototype.size;null!=h&&(l=mxUtils.getValue(h.style,"size",l)*h.view.scale);h=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;q.x<c.getCenterX()&&(h=-1*(h+1));return new mxPoint(c.getCenterX()+h,Math.min(c.y+c.height,Math.max(c.y+l,q.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,h,q,l){l=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,h,q,l){l=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;null!=h.style.backboneSize&&(l+=parseFloat(h.style.backboneSize)*h.view.scale/2-1);if("south"==h.style[mxConstants.STYLE_DIRECTION]||"north"==h.style[mxConstants.STYLE_DIRECTION])return q.x<c.getCenterX()&&(l=-1*(l+1)),new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y,q.y)));q.y<c.getCenterY()&&(l=-1*(l+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,q.x)),c.getCenterY()+l)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,h,q,l){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(h.style,"size",ba.prototype.size))*h.view.scale))),h.style),h,q,l)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
-h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?R.prototype.fixedSize:R.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+
-y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,
-"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_WEST?
-(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,
-J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=
-h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,c),new mxPoint(w,J)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,c),new mxPoint(w+
-y,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y),new mxPoint(N,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(N,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]);N=new mxPoint(N,
-c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?I.prototype.fixedSize:I.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
-mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p),new mxPoint(N,J)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]);N=new mxPoint(N,
-c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ua,mxShape);ua.prototype.size=10;ua.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));c.translate(h,q);c.ellipse((l-v)/2,0,v,v);c.fillAndStroke();c.begin();c.moveTo(l/2,v);c.lineTo(l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",ua);mxUtils.extend(Ja,
-mxShape);Ja.prototype.size=10;Ja.prototype.inset=2;Ja.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.begin();c.moveTo(l/2,v+w);c.lineTo(l/2,p);c.end();c.stroke();c.begin();c.moveTo((l-v)/2-w,v/2);c.quadTo((l-v)/2-w,v+w,l/2,v+w);c.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",Ja);mxUtils.extend(Ga,
-mxShape);Ga.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Ga);mxUtils.extend(va,mxShape);va.prototype.inset=2;va.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.ellipse(0,v,l-2*v,p-2*v);c.fillAndStroke();c.begin();c.moveTo(l/2,0);c.quadTo(l,0,l,p/2);c.quadTo(l,
-p,l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",va);mxUtils.extend(za,mxCylinder);za.prototype.jettyWidth=20;za.prototype.jettyHeight=10;za.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=Math.min(h,p-h),y=Math.min(J+2*h,p-h);v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,
-y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("module",za);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=.3*p-h/2,y=.7*p-h/2;v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Ha,mxRectangleShape);Ha.prototype.paintForeground=
-function(c,h,q,l,p){var v=l/2,w=p/2,J=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,J,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Ha);mxUtils.extend(Ta,mxDoubleEllipse);Ta.prototype.outerStroke=!0;Ta.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.min(4,
-Math.min(l/5,p/5));0<l&&0<p&&(c.ellipse(h+v,q+v,l-2*v,p-2*v),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(h,q,l,p),c.stroke())};mxCellRenderer.registerShape("endState",Ta);mxUtils.extend(db,Ta);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ua,mxArrowConnector);Ua.prototype.defaultWidth=4;Ua.prototype.isOpenEnded=function(){return!0};Ua.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
-this.strokewidth-1)};Ua.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",Ua);mxUtils.extend(Va,mxArrowConnector);Va.prototype.defaultWidth=10;Va.prototype.defaultArrowWidth=20;Va.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};Va.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Va.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.size=30;Ya.prototype.isRoundable=function(){return!0};Ya.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
-0),new mxPoint(l,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ya);mxUtils.extend(bb,mxRectangleShape);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.isHtmlAllowed=function(){return!1};bb.prototype.paintForeground=function(c,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
-Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(h,q+v);c.lineTo(h+l,q+v);c.end();c.stroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",bb);mxUtils.extend(cb,mxActor);cb.prototype.dx=20;cb.prototype.dy=20;cb.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
-"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("corner",cb);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(c,h,q,
-l,p){c.moveTo(0,0);c.lineTo(0,p);c.end();c.moveTo(l,0);c.lineTo(l,p);c.end();c.moveTo(0,p/2);c.lineTo(l,p/2);c.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("tee",$a);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(c,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(c,
-h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
+h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?R.prototype.fixedSize:R.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y,I+p),new mxPoint(w+
+y,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y,I),new mxPoint(w+y-p,I+Y),new mxPoint(w,I+Y),new mxPoint(w+p,I)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(I,c,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,
+"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y-p,I),new mxPoint(w+y,I+Y),new mxPoint(w,I+Y),new mxPoint(w+p,I)]):h==mxConstants.DIRECTION_WEST?
+(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y,I),new mxPoint(w+y-p,I+Y),new mxPoint(w+p,I+Y),new mxPoint(w,I)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I+p),new mxPoint(w+y,I),new mxPoint(w+y,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y,I+p),new mxPoint(w+y,I+Y-p),new mxPoint(w,I+Y),new mxPoint(w,
+I)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(I,c,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height,M=c.getCenterX();c=c.getCenterY();h=null!=
+h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y-p,I),new mxPoint(w+y,c),new mxPoint(w+y-p,I+Y),new mxPoint(w,I+Y),new mxPoint(w+p,c),new mxPoint(w,I)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y,I),new mxPoint(w+y-p,c),new mxPoint(w+
+y,I+Y),new mxPoint(w+p,I+Y),new mxPoint(w,c),new mxPoint(w+p,I)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I+p),new mxPoint(M,I),new mxPoint(w+y,I+p),new mxPoint(w+y,I+Y),new mxPoint(M,I+Y-p),new mxPoint(w,I+Y),new mxPoint(w,I+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(M,I+p),new mxPoint(w+y,I),new mxPoint(w+y,I+Y-p),new mxPoint(M,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I)]);M=new mxPoint(M,
+c);l&&(q.x<w||q.x>w+y?M.y=q.y:M.x=q.x);return mxUtils.getPerimeterPoint(I,M,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?O.prototype.fixedSize:O.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height,M=c.getCenterX();c=c.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(M,I),new mxPoint(w+y,I+p),new mxPoint(w+y,I+Y-p),new mxPoint(M,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I+p),new mxPoint(M,I)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y-p,I),new mxPoint(w+y,c),new mxPoint(w+y-p,I+Y),new mxPoint(w+p,I+Y),new mxPoint(w,c),new mxPoint(w+p,I)]);M=new mxPoint(M,
+c);l&&(q.x<w||q.x>w+y?M.y=q.y:M.x=q.x);return mxUtils.getPerimeterPoint(I,M,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(sa,mxShape);sa.prototype.size=10;sa.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));c.translate(h,q);c.ellipse((l-v)/2,0,v,v);c.fillAndStroke();c.begin();c.moveTo(l/2,v);c.lineTo(l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",sa);mxUtils.extend(Ka,
+mxShape);Ka.prototype.size=10;Ka.prototype.inset=2;Ka.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.begin();c.moveTo(l/2,v+w);c.lineTo(l/2,p);c.end();c.stroke();c.begin();c.moveTo((l-v)/2-w,v/2);c.quadTo((l-v)/2-w,v+w,l/2,v+w);c.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",Ka);mxUtils.extend(Ha,
+mxShape);Ha.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Ha);mxUtils.extend(ua,mxShape);ua.prototype.inset=2;ua.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.ellipse(0,v,l-2*v,p-2*v);c.fillAndStroke();c.begin();c.moveTo(l/2,0);c.quadTo(l,0,l,p/2);c.quadTo(l,
+p,l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ua);mxUtils.extend(Ca,mxCylinder);Ca.prototype.jettyWidth=20;Ca.prototype.jettyHeight=10;Ca.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var I=Math.min(h,p-h),y=Math.min(I+2*h,p-h);v?(c.moveTo(q,I),c.lineTo(w,I),c.lineTo(w,I+h),c.lineTo(q,I+h),c.moveTo(q,
+y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,I+h),c.lineTo(0,I+h),c.lineTo(0,I),c.lineTo(q,I),c.close());c.end()};mxCellRenderer.registerShape("module",Ca);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var I=.3*p-h/2,y=.7*p-h/2;v?(c.moveTo(q,I),c.lineTo(w,I),c.lineTo(w,I+h),c.lineTo(q,I+h),c.moveTo(q,y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,I+h),c.lineTo(0,I+h),c.lineTo(0,I),c.lineTo(q,I),c.close());c.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Da,mxRectangleShape);Da.prototype.paintForeground=
+function(c,h,q,l,p){var v=l/2,w=p/2,I=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,I,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Da);mxUtils.extend(Ua,mxDoubleEllipse);Ua.prototype.outerStroke=!0;Ua.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.min(4,
+Math.min(l/5,p/5));0<l&&0<p&&(c.ellipse(h+v,q+v,l-2*v,p-2*v),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(h,q,l,p),c.stroke())};mxCellRenderer.registerShape("endState",Ua);mxUtils.extend(db,Ua);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ta,mxArrowConnector);Ta.prototype.defaultWidth=4;Ta.prototype.isOpenEnded=function(){return!0};Ta.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+this.strokewidth-1)};Ta.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",Ta);mxUtils.extend($a,mxArrowConnector);$a.prototype.defaultWidth=10;$a.prototype.defaultArrowWidth=20;$a.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};$a.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};$a.prototype.getEdgeWidth=
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",$a);mxUtils.extend(Xa,mxActor);Xa.prototype.size=30;Xa.prototype.isRoundable=function(){return!0};Xa.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
+0),new mxPoint(l,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("manualInput",Xa);mxUtils.extend(Va,mxRectangleShape);Va.prototype.dx=20;Va.prototype.dy=20;Va.prototype.isHtmlAllowed=function(){return!1};Va.prototype.paintForeground=function(c,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
+Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(h,q+v);c.lineTo(h+l,q+v);c.end();c.stroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.dx=20;Ya.prototype.dy=20;Ya.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
+"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("corner",Ya);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(c,h,q,
+l,p){c.moveTo(0,0);c.lineTo(0,p);c.end();c.moveTo(l,0);c.lineTo(l,p);c.end();c.moveTo(0,p/2);c.lineTo(l,p/2);c.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend(bb,mxActor);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("tee",bb);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(c,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(c,
+h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
v),new mxPoint(h,p)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",t);mxUtils.extend(z,mxActor);z.prototype.size=.1;z.prototype.fixedSize=20;z.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(h,0);c.lineTo(l,0);c.quadTo(l-2*h,p/2,l,p);c.lineTo(h,p);c.quadTo(h-
-2*h,p/2,h,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.close();c.end()};mxCellRenderer.registerShape("or",B);mxUtils.extend(E,mxActor);E.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.quadTo(l/2,p/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",E);mxUtils.extend(G,mxActor);G.prototype.size=20;
-G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("loopLimit",G);mxUtils.extend(M,mxActor);M.prototype.size=
-.375;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",M);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
-function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/2,q+p);c.lineTo(h+l,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke();c.begin();c.moveTo(h+l/2,q);c.lineTo(h+l/2,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",
-ia);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h+.145*l,q+.145*p);c.lineTo(h+.855*l,q+.855*p);c.end();c.stroke();c.begin();c.moveTo(h+.855*l,q+.145*p);c.lineTo(h+.145*l,q+.855*p);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",da);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(c,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
-arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(sa,mxEllipse);sa.prototype.paintVertexShape=function(c,h,q,l,p){c.begin();c.moveTo(h,q);c.lineTo(h+l,q);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke();c.begin();c.moveTo(h,q+p);c.lineTo(h+l,q+p);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",sa);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
-function(c,h,q,l,p){var v=c.state.strokeWidth/2,w=10+2*v,J=q+p-w/2;c.begin();c.moveTo(h,q);c.lineTo(h,q+p);c.moveTo(h+v,J);c.lineTo(h+v+w,J-w/2);c.moveTo(h+v,J);c.lineTo(h+v+w,J+w/2);c.moveTo(h+v,J);c.lineTo(h+l-v,J);c.moveTo(h+l,q);c.lineTo(h+l,q+p);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J-w/2);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J+w/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Da,mxEllipse);Da.prototype.drawHidden=!0;Da.prototype.paintVertexShape=function(c,h,q,
-l,p){this.outline||c.setStrokeColor(null);if(null!=this.style){var v=c.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(c.pointerEvents=!1);var J="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),N="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||J||Y||N||y?(c.rect(h,q,l,p),c.fill(),c.pointerEvents=
-v,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(h,q),this.outline||J?c.lineTo(h+l,q):c.moveTo(h+l,q),this.outline||Y?c.lineTo(h+l,q+p):c.moveTo(h+l,q+p),this.outline||N?c.lineTo(h,q+p):c.moveTo(h,q+p),(this.outline||y)&&c.lineTo(h,q),c.end(),c.stroke(),c.setLineCap("flat")):c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
+2*h,p/2,h,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(A,mxActor);A.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.close();c.end()};mxCellRenderer.registerShape("or",A);mxUtils.extend(E,mxActor);E.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.quadTo(l/2,p/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",E);mxUtils.extend(H,mxActor);H.prototype.size=20;
+H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("loopLimit",H);mxUtils.extend(K,mxActor);K.prototype.size=
+.375;K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",K);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
+function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/2,q+p);c.lineTo(h+l,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ja,mxEllipse);ja.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke();c.begin();c.moveTo(h+l/2,q);c.lineTo(h+l/2,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",
+ja);mxUtils.extend(ea,mxEllipse);ea.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h+.145*l,q+.145*p);c.lineTo(h+.855*l,q+.855*p);c.end();c.stroke();c.begin();c.moveTo(h+.855*l,q+.145*p);c.lineTo(h+.145*l,q+.855*p);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",ea);mxUtils.extend(ka,mxRhombus);ka.prototype.paintVertexShape=function(c,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
+arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ka);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(c,h,q,l,p){c.begin();c.moveTo(h,q);c.lineTo(h+l,q);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke();c.begin();c.moveTo(h,q+p);c.lineTo(h+l,q+p);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",ta);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=
+function(c,h,q,l,p){var v=c.state.strokeWidth/2,w=10+2*v,I=q+p-w/2;c.begin();c.moveTo(h,q);c.lineTo(h,q+p);c.moveTo(h+v,I);c.lineTo(h+v+w,I-w/2);c.moveTo(h+v,I);c.lineTo(h+v+w,I+w/2);c.moveTo(h+v,I);c.lineTo(h+l-v,I);c.moveTo(h+l,q);c.lineTo(h+l,q+p);c.moveTo(h+l-v,I);c.lineTo(h+l-w-v,I-w/2);c.moveTo(h+l-v,I);c.lineTo(h+l-w-v,I+w/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Aa);mxUtils.extend(Ea,mxEllipse);Ea.prototype.drawHidden=!0;Ea.prototype.paintVertexShape=function(c,h,q,
+l,p){this.outline||c.setStrokeColor(null);if(null!=this.style){var v=c.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(c.pointerEvents=!1);var I="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),M="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||I||Y||M||y?(c.rect(h,q,l,p),c.fill(),c.pointerEvents=
+v,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(h,q),this.outline||I?c.lineTo(h+l,q):c.moveTo(h+l,q),this.outline||Y?c.lineTo(h+l,q+p):c.moveTo(h+l,q+p),this.outline||M?c.lineTo(h,q+p):c.moveTo(h,q+p),(this.outline||y)&&c.lineTo(h,q),c.end(),c.stroke(),c.setLineCap("flat")):c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Ea);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(h+l/2,q),c.lineTo(h+l/2,q+p)):(c.moveTo(h,q+p/2),c.lineTo(h+l,q+p/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ma);mxUtils.extend(La,mxActor);La.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/2);c.moveTo(0,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(0,p);c.close();c.end()};mxCellRenderer.registerShape("delay",La);mxUtils.extend(Ia,mxActor);Ia.prototype.size=
-.2;Ia.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;c.moveTo(0,h);c.lineTo(w,h);c.lineTo(w,0);c.lineTo(v,0);c.lineTo(v,h);c.lineTo(l,h);c.lineTo(l,q);c.lineTo(v,q);c.lineTo(v,p);c.lineTo(w,p);c.lineTo(w,q);c.lineTo(0,q);c.close();c.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Ea,mxActor);Ea.prototype.size=.25;Ea.prototype.redrawPath=function(c,
-h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.moveTo(0,p/2);c.lineTo(q,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(q,p);c.close();c.end()};mxCellRenderer.registerShape("display",Ea);mxUtils.extend(Fa,mxActor);Fa.prototype.cst={RECT2:"mxgraph.basic.rect"};Fa.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",
+.2;Ia.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;c.moveTo(0,h);c.lineTo(w,h);c.lineTo(w,0);c.lineTo(v,0);c.lineTo(v,h);c.lineTo(l,h);c.lineTo(l,q);c.lineTo(v,q);c.lineTo(v,p);c.lineTo(w,p);c.lineTo(w,q);c.lineTo(0,q);c.close();c.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Fa,mxActor);Fa.prototype.size=.25;Fa.prototype.redrawPath=function(c,
+h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.moveTo(0,p/2);c.lineTo(q,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(q,p);c.close();c.end()};mxCellRenderer.registerShape("display",Fa);mxUtils.extend(Ga,mxActor);Ga.prototype.cst={RECT2:"mxgraph.basic.rect"};Ga.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"}]}];Fa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);this.strictDrawShape(c,0,0,l,p)};Fa.prototype.strictDrawShape=function(c,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),J=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
-"absoluteCornerSize",this.absoluteCornerSize),y=v&&v.size?v.size:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),Y=v&&v.rectOutline?v.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),N=v&&v.indent?v.indent:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),Ca=v&&v.dashed?v.dashed:mxUtils.getValue(this.style,"dashed",!1),Qa=v&&v.dashPattern?v.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),Ka=v&&
-v.relIndent?v.relIndent:Math.max(0,Math.min(50,N)),la=v&&v.top?v.top:mxUtils.getValue(this.style,"top",!0),pa=v&&v.right?v.right:mxUtils.getValue(this.style,"right",!0),na=v&&v.bottom?v.bottom:mxUtils.getValue(this.style,"bottom",!0),ma=v&&v.left?v.left:mxUtils.getValue(this.style,"left",!0),ta=v&&v.topLeftStyle?v.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),xa=v&&v.topRightStyle?v.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),ya=v&&v.bottomRightStyle?
-v.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),Aa=v&&v.bottomLeftStyle?v.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),zb=v&&v.fillColor?v.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");v&&v.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var Ab=v&&v.strokeWidth?v.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),wb=v&&v.fillColor2?v.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),yb=v&&v.gradientColor2?
-v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Fa.prototype;c.setDashed(Ca);Qa&&""!=Qa&&c.setDashPattern(Qa);c.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);J||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));J||(N=Math.min(Ka*Math.min(l,p)/100));N=Math.min(N,.5*Math.min(l,
-p)-y);(la||pa||na||ma)&&"frame"!=Y&&(c.begin(),la?v.moveNW(c,h,q,l,p,w,ta,y,ma):c.moveTo(0,0),la&&v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),na&&v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),ma&&v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(wb),Ca=J=Cb,"none"==wb&&(J=0),"none"==yb&&(Ca=0),c.setGradient(wb,yb,0,0,l,p,Bb,J,Ca),
-c.begin(),la?v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma):c.moveTo(N,0),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),ma&&na&&v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),na&&pa&&v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),pa&&la&&v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),la&&ma&&v.paintNWInner(c,h,q,l,p,w,ta,y,N),c.fill(),"none"==zb&&(c.begin(),v.paintFolds(c,h,q,l,p,w,ta,xa,ya,Aa,y,la,pa,na,ma),c.stroke()));
-la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,
-h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,
-p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&
-!ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,
-h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),
-v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),
-v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,
-ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,
-h,q,l,p,w,ta,y,N,ma,la)),c.stroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,
-Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,
-h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,
-l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),
-v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),
-v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,
-h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,
-h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,
-w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),c.close(),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,
-y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close()),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,
-l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),c.close(),v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,
-na,ma),c.close(),c.fillAndStroke())):"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==
-Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,
-h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,
-w,Aa,y,N,na,ma),c.close(),c.fillAndStroke());c.begin();v.paintFolds(c,h,q,l,p,w,ta,xa,ya,Aa,y,la,pa,na,ma);c.stroke()};Fa.prototype.moveNW=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,0):c.moveTo(0,J)};Fa.prototype.moveNE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,0):c.moveTo(l-J,0)};Fa.prototype.moveSE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,p):c.moveTo(l,p-J)};Fa.prototype.moveSW=
-function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,p):c.moveTo(J,p)};Fa.prototype.paintNW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,J,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(J,0);else c.lineTo(0,0)};Fa.prototype.paintTop=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==
-w&&"square"==v||!y?c.lineTo(l,0):c.lineTo(l-J,0)};Fa.prototype.paintNE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l,J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l,J);else c.lineTo(l,0)};Fa.prototype.paintRight=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(l,p):c.lineTo(l,p-
-J)};Fa.prototype.paintLeft=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,0):c.lineTo(0,J)};Fa.prototype.paintSE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l-J,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-J,p);else c.lineTo(l,p)};Fa.prototype.paintBottom=function(c,h,q,
-l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,p):c.lineTo(J,p)};Fa.prototype.paintSW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,0,p-J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(0,p-J);else c.lineTo(0,p)};Fa.prototype.paintNWInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==
-w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,y,.5*y+J);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,y,y+J);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(y,.5*y+J);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,y+J),c.lineTo(y,y+J)};Fa.prototype.paintTopInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(0,y):Y&&!N?c.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
-v?c.lineTo(J+.5*y,y):c.lineTo(J+y,y):c.lineTo(0,y):c.lineTo(0,0)};Fa.prototype.paintNEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-J-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-J-y,y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-J-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,J+y),c.lineTo(l-J-y,y)};Fa.prototype.paintRightInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&
-N?c.lineTo(l-y,0):Y&&!N?c.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):c.lineTo(l-y,J+y):c.lineTo(l-y,0):c.lineTo(l,0)};Fa.prototype.paintLeftInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,p):Y&&!N?c.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*
-y):c.lineTo(y,p-J-y):c.lineTo(y,p):c.lineTo(0,p)};Fa.prototype.paintSEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-y,p-J-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-y,p-J-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-y,p-J-.5*y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,p-J-y),c.lineTo(l-y,p-J-y)};Fa.prototype.paintBottomInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(l,
-p-y):Y&&!N?c.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-J-.5*y,p-y):c.lineTo(l-J-y,p-y):c.lineTo(l,p)};Fa.prototype.paintSWInner=function(c,h,q,l,p,v,w,J,y,Y){if(!Y)c.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)c.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,J+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+
-y,J+y,0,0,1,J+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(J+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,p-J-y),c.lineTo(y+J,p-y)};Fa.prototype.moveSWInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,p-J-y):c.moveTo(0,p-y)};Fa.prototype.lineSWInner=
-function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,p-J-y):c.lineTo(0,p-y)};Fa.prototype.moveSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-
-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,p-J-y):c.moveTo(l-y,p)};Fa.prototype.lineSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,p-J-y):c.lineTo(l-y,p)};Fa.prototype.moveNEInner=function(c,h,
-q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,J+y):c.moveTo(l,y)};Fa.prototype.lineNEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):
-("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,J+y):c.lineTo(l,y)};Fa.prototype.moveNWInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.moveTo(y,0):Y&&!N?c.moveTo(0,y):"square"==w||"default"==w&&"square"==v?c.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,J+y):c.moveTo(0,0)};Fa.prototype.lineNWInner=
-function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,0):Y&&!N?c.lineTo(0,y):"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,J+y):c.lineTo(0,0)};Fa.prototype.paintFolds=function(c,h,q,l,p,v,w,J,y,Y,N,Ca,Qa,Ka,la){if("fold"==v||"fold"==w||"fold"==J||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
-Ca&&la&&(c.moveTo(0,N),c.lineTo(N,N),c.lineTo(N,0)),("fold"==J||"default"==J&&"fold"==v)&&Ca&&Qa&&(c.moveTo(l-N,0),c.lineTo(l-N,N),c.lineTo(l,N)),("fold"==y||"default"==y&&"fold"==v)&&Ka&&Qa&&(c.moveTo(l-N,p),c.lineTo(l-N,p-N),c.lineTo(l,p-N)),("fold"==Y||"default"==Y&&"fold"==v)&&Ka&&la&&(c.moveTo(0,p-N),c.lineTo(N,p-N),c.lineTo(N,p))};mxCellRenderer.registerShape(Fa.prototype.cst.RECT2,Fa);Fa.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
+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"}]}];Ga.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);this.strictDrawShape(c,0,0,l,p)};Ga.prototype.strictDrawShape=function(c,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),I=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
+"absoluteCornerSize",this.absoluteCornerSize),y=v&&v.size?v.size:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),Y=v&&v.rectOutline?v.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),M=v&&v.indent?v.indent:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),Ba=v&&v.dashed?v.dashed:mxUtils.getValue(this.style,"dashed",!1),Qa=v&&v.dashPattern?v.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),Ja=v&&
+v.relIndent?v.relIndent:Math.max(0,Math.min(50,M)),la=v&&v.top?v.top:mxUtils.getValue(this.style,"top",!0),pa=v&&v.right?v.right:mxUtils.getValue(this.style,"right",!0),na=v&&v.bottom?v.bottom:mxUtils.getValue(this.style,"bottom",!0),ma=v&&v.left?v.left:mxUtils.getValue(this.style,"left",!0),va=v&&v.topLeftStyle?v.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),xa=v&&v.topRightStyle?v.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),ya=v&&v.bottomRightStyle?
+v.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),za=v&&v.bottomLeftStyle?v.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),zb=v&&v.fillColor?v.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");v&&v.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var Ab=v&&v.strokeWidth?v.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),wb=v&&v.fillColor2?v.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),yb=v&&v.gradientColor2?
+v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Ga.prototype;c.setDashed(Ba);Qa&&""!=Qa&&c.setDashPattern(Qa);c.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);I||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));I||(M=Math.min(Ja*Math.min(l,p)/100));M=Math.min(M,.5*Math.min(l,
+p)-y);(la||pa||na||ma)&&"frame"!=Y&&(c.begin(),la?v.moveNW(c,h,q,l,p,w,va,y,ma):c.moveTo(0,0),la&&v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),na&&v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),ma&&v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(wb),Ba=I=Cb,"none"==wb&&(I=0),"none"==yb&&(Ba=0),c.setGradient(wb,yb,0,0,l,p,Bb,I,Ba),
+c.begin(),la?v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma):c.moveTo(M,0),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),ma&&na&&v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),na&&pa&&v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),pa&&la&&v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),la&&ma&&v.paintNWInner(c,h,q,l,p,w,va,y,M),c.fill(),"none"==zb&&(c.begin(),v.paintFolds(c,h,q,l,p,w,va,xa,ya,za,y,la,pa,na,ma),c.stroke()));
+la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,
+h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma)),c.stroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,
+p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close(),c.fillAndStroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&
+!ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,
+h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),
+v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),
+v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,
+ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close(),c.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,
+h,q,l,p,w,va,y,M,ma,la)),c.stroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,h,q,l,p,w,
+za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,
+h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,
+l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),
+v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),
+v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,
+h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close(),c.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,
+h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,
+w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),c.close(),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,
+y,M,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close()),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,
+l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),c.close(),v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,
+na,ma),c.close(),c.fillAndStroke())):"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==
+Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,
+h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,
+w,za,y,M,na,ma),c.close(),c.fillAndStroke());c.begin();v.paintFolds(c,h,q,l,p,w,va,xa,ya,za,y,la,pa,na,ma);c.stroke()};Ga.prototype.moveNW=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,0):c.moveTo(0,I)};Ga.prototype.moveNE=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,0):c.moveTo(l-I,0)};Ga.prototype.moveSE=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,p):c.moveTo(l,p-I)};Ga.prototype.moveSW=
+function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,p):c.moveTo(I,p)};Ga.prototype.paintNW=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,I,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(I,0);else c.lineTo(0,0)};Ga.prototype.paintTop=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==
+w&&"square"==v||!y?c.lineTo(l,0):c.lineTo(l-I,0)};Ga.prototype.paintNE=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,l,I)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l,I);else c.lineTo(l,0)};Ga.prototype.paintRight=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(l,p):c.lineTo(l,p-
+I)};Ga.prototype.paintLeft=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,0):c.lineTo(0,I)};Ga.prototype.paintSE=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,l-I,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-I,p);else c.lineTo(l,p)};Ga.prototype.paintBottom=function(c,h,q,
+l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,p):c.lineTo(I,p)};Ga.prototype.paintSW=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,0,p-I)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(0,p-I);else c.lineTo(0,p)};Ga.prototype.paintNWInner=function(c,h,q,l,p,v,w,I,y){if("rounded"==w||"default"==
+w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,y,.5*y+I);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+y,I+y,0,0,1,y,y+I);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(y,.5*y+I);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+I,y+I),c.lineTo(y,y+I)};Ga.prototype.paintTopInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(0,y):Y&&!M?c.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
+v?c.lineTo(I+.5*y,y):c.lineTo(I+y,y):c.lineTo(0,y):c.lineTo(0,0)};Ga.prototype.paintNEInner=function(c,h,q,l,p,v,w,I,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,l-I-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+y,I+y,0,0,1,l-I-y,y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-I-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-I-y,I+y),c.lineTo(l-I-y,y)};Ga.prototype.paintRightInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&
+M?c.lineTo(l-y,0):Y&&!M?c.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,I+.5*y):c.lineTo(l-y,I+y):c.lineTo(l-y,0):c.lineTo(l,0)};Ga.prototype.paintLeftInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(y,p):Y&&!M?c.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-I-.5*
+y):c.lineTo(y,p-I-y):c.lineTo(y,p):c.lineTo(0,p)};Ga.prototype.paintSEInner=function(c,h,q,l,p,v,w,I,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,l-y,p-I-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+y,I+y,0,0,1,l-y,p-I-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-y,p-I-.5*y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-I-y,p-I-y),c.lineTo(l-y,p-I-y)};Ga.prototype.paintBottomInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(l,
+p-y):Y&&!M?c.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-I-.5*y,p-y):c.lineTo(l-I-y,p-y):c.lineTo(l,p)};Ga.prototype.paintSWInner=function(c,h,q,l,p,v,w,I,y,Y){if(!Y)c.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)c.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,I+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+
+y,I+y,0,0,1,I+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(I+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+I,p-I-y),c.lineTo(y+I,p-y)};Ga.prototype.moveSWInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,p-I-y):c.moveTo(0,p-y)};Ga.prototype.lineSWInner=
+function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,p-I-y):c.lineTo(0,p-y)};Ga.prototype.moveSEInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-
+y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,p-I-y):c.moveTo(l-y,p)};Ga.prototype.lineSEInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,p-I-y):c.lineTo(l-y,p)};Ga.prototype.moveNEInner=function(c,h,
+q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-y,I+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,I+y):c.moveTo(l,y)};Ga.prototype.lineNEInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,I+.5*y):
+("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,I+y):c.lineTo(l,y)};Ga.prototype.moveNWInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.moveTo(y,0):Y&&!M?c.moveTo(0,y):"square"==w||"default"==w&&"square"==v?c.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,I+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,I+y):c.moveTo(0,0)};Ga.prototype.lineNWInner=
+function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(y,0):Y&&!M?c.lineTo(0,y):"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,I+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,I+y):c.lineTo(0,0)};Ga.prototype.paintFolds=function(c,h,q,l,p,v,w,I,y,Y,M,Ba,Qa,Ja,la){if("fold"==v||"fold"==w||"fold"==I||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
+Ba&&la&&(c.moveTo(0,M),c.lineTo(M,M),c.lineTo(M,0)),("fold"==I||"default"==I&&"fold"==v)&&Ba&&Qa&&(c.moveTo(l-M,0),c.lineTo(l-M,M),c.lineTo(l,M)),("fold"==y||"default"==y&&"fold"==v)&&Ja&&Qa&&(c.moveTo(l-M,p),c.lineTo(l-M,p-M),c.lineTo(l,p-M)),("fold"==Y||"default"==Y&&"fold"==v)&&Ja&&la&&(c.moveTo(0,p-M),c.lineTo(M,p-M),c.lineTo(M,p))};mxCellRenderer.registerShape(Ga.prototype.cst.RECT2,Ga);Ga.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
Oa.prototype.paintEdgeShape=function(c,h,q){for(var l=[],p=0;p<h.length;p++)l.push(mxUtils.clone(h[p]));p=c.state.dashed;var v=c.state.fixDash;Oa.prototype.origPaintEdgeShape.apply(this,[c,l,q]);3<=c.state.strokeWidth&&(l=mxUtils.getValue(this.style,"fillColor",null),null!=l&&(c.setStrokeColor(l),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(p,v),Oa.prototype.origPaintEdgeShape.apply(this,[c,h,q])))};mxCellRenderer.registerShape("filledEdge",Oa);"undefined"!==typeof StyleFormatPanel&&function(){var c=
-StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=c.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);c.stroke()}});mxMarker.addMarker("box",
-function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.x+N/2,Ka=l.y+Ca/2;l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa-N/2-Ca/2,Ka-Ca/2+N/2);c.lineTo(Qa-N/2+Ca/2,Ka-Ca/2-N/2);c.lineTo(Qa+Ca/2-3*N/2,Ka-3*Ca/2-N/2);c.lineTo(Qa-Ca/2-3*N/2,Ka-3*Ca/2+N/2);c.close();Y?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);
-c.moveTo(l.x-N/2+Ca/2,l.y-Ca/2-N/2);c.lineTo(l.x-Ca/2-3*N/2,l.y-3*Ca/2+N/2);c.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(c,h,q,l,p,v,w,J,y,Y){var N=l.clone(),Ca=Pa.apply(this,arguments),Qa=p*(w+2*y),Ka=v*(w+2*y);return function(){Ca.apply(this,arguments);c.begin();c.moveTo(N.x-p*y,N.y-v*y);c.lineTo(N.x-2*Qa+p*y,N.y-2*Ka+v*y);c.moveTo(N.x-Qa-Ka+v*y,N.y-Ka+Qa-p*y);c.lineTo(N.x+Ka-Qa-v*y,N.y-Ka-Qa+p*y);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,
-h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.clone();l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa.x-Ca,Qa.y+N);c.quadTo(l.x-Ca,l.y+N,l.x,l.y);c.quadTo(l.x+Ca,l.y-N,Qa.x+Ca,Qa.y-N);c.stroke()}});mxMarker.addMarker("async",function(c,h,q,l,p,v,w,J,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var N=l.clone();N.x-=h;N.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){c.begin();c.moveTo(N.x,N.y);J?c.lineTo(N.x-p-v/2,N.y-v+p/2):c.lineTo(N.x+v/2-p,N.y-v-p/2);c.lineTo(N.x-p,N.y-v);c.close();Y?c.fillAndStroke():
-c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(h,q,l,p,v,w,J,y,Y,N){v*=J+Y;w*=J+Y;var Ca=p.clone();return function(){h.begin();h.moveTo(Ca.x,Ca.y);y?h.lineTo(Ca.x-v-w/c,Ca.y-w+v/c):h.lineTo(Ca.x+w/c-v,Ca.y-w-v/c);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(c,h,q){return Xa(c,["width"],h,function(l,p,v,w,J){J=c.shape.getEdgeWidth()*c.view.scale+q;return new mxPoint(w.x+p*l/4+v*J/2,w.y+v*l/4-p*J/2)},function(l,p,v,w,J,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
-w.y,J.x,J.y,y.x,y.y));c.style.width=Math.round(2*l)/c.view.scale-q})},Xa=function(c,h,q,l,p){return Ra(c,h,function(v){var w=c.absolutePoints,J=w.length-1;v=c.view.translate;var y=c.view.scale,Y=q?w[0]:w[J];w=q?w[1]:w[J-1];J=w.x-Y.x;var N=w.y-Y.y,Ca=Math.sqrt(J*J+N*N);Y=l.call(this,Ca,J/Ca,N/Ca,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,J){var y=c.absolutePoints,Y=y.length-1;v=c.view.translate;var N=c.view.scale,Ca=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ca.x;var Qa=y.y-Ca.y,Ka=Math.sqrt(Y*
-Y+Qa*Qa);w.x=(w.x+v.x)*N;w.y=(w.y+v.y)*N;p.call(this,Ka,Y/Ka,Qa/Ka,Ca,y,w,J)})},ib=function(c){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),p=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
+StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=c.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(c,h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-M/2-Ba/2,l.y-Ba/2+M/2);c.lineTo(l.x+Ba/2-3*M/2,l.y-3*Ba/2-M/2);c.stroke()}});mxMarker.addMarker("box",
+function(c,h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1),Qa=l.x+M/2,Ja=l.y+Ba/2;l.x-=M;l.y-=Ba;return function(){c.begin();c.moveTo(Qa-M/2-Ba/2,Ja-Ba/2+M/2);c.lineTo(Qa-M/2+Ba/2,Ja-Ba/2-M/2);c.lineTo(Qa+Ba/2-3*M/2,Ja-3*Ba/2-M/2);c.lineTo(Qa-Ba/2-3*M/2,Ja-3*Ba/2+M/2);c.close();Y?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-M/2-Ba/2,l.y-Ba/2+M/2);c.lineTo(l.x+Ba/2-3*M/2,l.y-3*Ba/2-M/2);
+c.moveTo(l.x-M/2+Ba/2,l.y-Ba/2-M/2);c.lineTo(l.x-Ba/2-3*M/2,l.y-3*Ba/2+M/2);c.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(c,h,q,l,p,v,w,I,y,Y){var M=l.clone(),Ba=Pa.apply(this,arguments),Qa=p*(w+2*y),Ja=v*(w+2*y);return function(){Ba.apply(this,arguments);c.begin();c.moveTo(M.x-p*y,M.y-v*y);c.lineTo(M.x-2*Qa+p*y,M.y-2*Ja+v*y);c.moveTo(M.x-Qa-Ja+v*y,M.y-Ja+Qa-p*y);c.lineTo(M.x+Ja-Qa-v*y,M.y-Ja-Qa+p*y);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,
+h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1),Qa=l.clone();l.x-=M;l.y-=Ba;return function(){c.begin();c.moveTo(Qa.x-Ba,Qa.y+M);c.quadTo(l.x-Ba,l.y+M,l.x,l.y);c.quadTo(l.x+Ba,l.y-M,Qa.x+Ba,Qa.y-M);c.stroke()}});mxMarker.addMarker("async",function(c,h,q,l,p,v,w,I,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var M=l.clone();M.x-=h;M.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){c.begin();c.moveTo(M.x,M.y);I?c.lineTo(M.x-p-v/2,M.y-v+p/2):c.lineTo(M.x+v/2-p,M.y-v-p/2);c.lineTo(M.x-p,M.y-v);c.close();Y?c.fillAndStroke():
+c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(h,q,l,p,v,w,I,y,Y,M){v*=I+Y;w*=I+Y;var Ba=p.clone();return function(){h.begin();h.moveTo(Ba.x,Ba.y);y?h.lineTo(Ba.x-v-w/c,Ba.y-w+v/c):h.lineTo(Ba.x+w/c-v,Ba.y-w-v/c);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(c,h,q){return Za(c,["width"],h,function(l,p,v,w,I){I=c.shape.getEdgeWidth()*c.view.scale+q;return new mxPoint(w.x+p*l/4+v*I/2,w.y+v*l/4-p*I/2)},function(l,p,v,w,I,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
+w.y,I.x,I.y,y.x,y.y));c.style.width=Math.round(2*l)/c.view.scale-q})},Za=function(c,h,q,l,p){return Ra(c,h,function(v){var w=c.absolutePoints,I=w.length-1;v=c.view.translate;var y=c.view.scale,Y=q?w[0]:w[I];w=q?w[1]:w[I-1];I=w.x-Y.x;var M=w.y-Y.y,Ba=Math.sqrt(I*I+M*M);Y=l.call(this,Ba,I/Ba,M/Ba,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,I){var y=c.absolutePoints,Y=y.length-1;v=c.view.translate;var M=c.view.scale,Ba=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ba.x;var Qa=y.y-Ba.y,Ja=Math.sqrt(Y*
+Y+Qa*Qa);w.x=(w.x+v.x)*M;w.y=(w.y+v.y)*M;p.call(this,Ja,Y/Ja,Qa/Ja,Ba,y,w,I)})},ib=function(c){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),p=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
2-l.y)/q.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(q.x+q.width-l.x)/q.width))})]}},gb=function(c){return function(h){return[Ra(h,["size"],function(q){var l=Math.max(0,Math.min(.5*q.height,parseFloat(mxUtils.getValue(this.state.style,"size",c))));return new mxPoint(q.x,q.y+l)},function(q,l){this.state.style.size=Math.max(0,l.y-q.y)},!0)]}},Wa=function(c,h,q){return function(l){var p=[Ra(l,["size"],function(v){var w=Math.max(0,Math.min(v.width,Math.min(v.height,parseFloat(mxUtils.getValue(this.state.style,
-"size",h)))))*c;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/c)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(c,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(J){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:c));return new mxPoint(J.x+
-Math.max(0,Math.min(.5*J.width,Y*(y?1:J.width))),J.getCenterY())},function(J,y,Y){J=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-J.x:Math.max(0,Math.min(q,(y.x-J.x)/J.width));this.state.style.size=J},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(c,h,q){c=null!=c?c:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,J=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
-"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*c,J*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(c,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(c){var h=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));return h}},fb=function(c,h){return Ra(c,
+"size",h)))))*c;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/c)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(c,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(I){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:c));return new mxPoint(I.x+
+Math.max(0,Math.min(.5*I.width,Y*(y?1:I.width))),I.getCenterY())},function(I,y,Y){I=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-I.x:Math.max(0,Math.min(q,(y.x-I.x)/I.width));this.state.style.size=I},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(c,h,q){c=null!=c?c:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,I=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
+"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*c,I*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(c,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(c){var h=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));return h}},fb=function(c,h){return Ra(c,
[mxConstants.STYLE_ARCSIZE],function(q){var l=null!=h?h:q.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var p=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(q.x+q.width-Math.min(q.width/2,p),q.y+l)}p=Math.max(0,parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(q.x+q.width-Math.min(Math.max(q.width/2,q.height/2),Math.min(q.width,q.height)*
-p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(c,h,q,l,p,v,w){var J=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);J.execute=function(Y){for(var N=0;N<h.length;N++)this.copyStyle(h[N]);
-w&&w(Y)};J.getPosition=q;J.setPosition=l;J.ignoreGrid=null!=p?p:!0;if(v){var y=J.positionChanged;J.positionChanged=function(){y.apply(this,arguments);c.view.invalidate(this.state.cell);c.view.validate()}}return J},rb={link:function(c){return[mb(c,!0,10),mb(c,!1,10)]},flexArrow:function(c){var h=c.view.graph.gridSize/c.view.scale,q=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!0,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
-3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!0,function(l,p,v,w,J){l=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
+p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(c,h,q,l,p,v,w){var I=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);I.execute=function(Y){for(var M=0;M<h.length;M++)this.copyStyle(h[M]);
+w&&w(Y)};I.getPosition=q;I.setPosition=l;I.ignoreGrid=null!=p?p:!0;if(v){var y=I.positionChanged;I.positionChanged=function(){y.apply(this,arguments);c.view.invalidate(this.state.cell);c.view.validate()}}return I},rb={link:function(c){return[mb(c,!0,10),mb(c,!1,10)]},flexArrow:function(c){var h=c.view.graph.gridSize/c.view.scale,q=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Za(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(l,p,v,w,I){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
+3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),q.push(Za(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(l,p,v,w,I){l=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),
-Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<h&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
-c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
-Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
-c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],
+Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<h&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Za(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,I){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*
+c.view.scale)-v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
+Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),q.push(Za(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,I){l=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*
+c.view.scale)-v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],
c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<h&&(c.style.endWidth=c.style.startWidth))})));return q},swimlane:function(c){var h=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var q=parseFloat(mxUtils.getValue(c.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));h.push(fb(c,q/2))}h.push(Ra(c,[mxConstants.STYLE_STARTSIZE],function(l){var p=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(c.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(l.getCenterX(),l.y+Math.max(0,Math.min(l.height,p))):new mxPoint(l.x+Math.max(0,Math.min(l.width,p)),l.getCenterY())},function(l,p){c.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,
-mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=c.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(c.cell)||p.isTableCell(c.cell))){l=p.getSwimlaneDirection(c.style);var v=p.model.getParent(c.cell);v=p.model.getChildCells(v,!0);for(var w=[],J=0;J<v.length;J++)v[J]!=c.cell&&p.isSwimlane(v[J])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[J]))==
-l&&w.push(v[J]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(c){return[Ra(c,
+mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=c.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(c.cell)||p.isTableCell(c.cell))){l=p.getSwimlaneDirection(c.style);var v=p.model.getParent(c.cell);v=p.model.getChildCells(v,!0);for(var w=[],I=0;I<v.length;I++)v[I]!=c.cell&&p.isSwimlane(v[I])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[I]))==
+l&&w.push(v[I]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(c){return[Ra(c,
["width","height"],function(h){var q=Math.max(oa.prototype.corner,Math.min(h.width,mxUtils.getValue(this.state.style,"width",oa.prototype.width))),l=Math.max(1.5*oa.prototype.corner,Math.min(h.height,mxUtils.getValue(this.state.style,"height",oa.prototype.height)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.width=Math.round(Math.max(oa.prototype.corner,Math.min(h.width,q.x-h.x)));this.state.style.height=Math.round(Math.max(1.5*oa.prototype.corner,Math.min(h.height,q.y-h.y)))},
-!1)]},process:function(c){var h=[Ra(c,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
+!1)]},process:function(c){var h=[Ra(c,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
!1)&&h.push(fb(c));return h},cross:function(c){return[Ra(c,["size"],function(h){var q=Math.min(h.width,h.height);q=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ia.prototype.size)))*q/2;return new mxPoint(h.getCenterX()-q,h.getCenterY()-q)},function(h,q){var l=Math.min(h.width,h.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,h.getCenterY()-q.y)/l*2,Math.max(0,h.getCenterX()-q.x)/l*2)))})]},note:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,
Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",u.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},note2:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",m.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},
-function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(c){var h=[Ra(c,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Ya.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
+function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(c){var h=[Ra(c,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Xa.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
return h},dataStorage:function(c){return[Ra(c,["size"],function(h){var q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),l=parseFloat(mxUtils.getValue(this.state.style,"size",q?z.prototype.fixedSize:z.prototype.size));return new mxPoint(h.x+h.width-l*(q?1:h.width),h.getCenterY())},function(h,q){h="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(h.width,h.x+h.width-q.x)):Math.max(0,Math.min(1,(h.x+h.width-q.x)/h.width));this.state.style.size=h},!1)]},callout:function(c){var h=
[Ra(c,["size","position"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));mxUtils.getValue(this.state.style,"base",ba.prototype.base);return new mxPoint(q.x+p*q.width,q.y+q.height-l)},function(q,l){mxUtils.getValue(this.state.style,"base",ba.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(q.height,q.y+q.height-l.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["position2"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ba.prototype.position2)));return new mxPoint(q.x+l*q.width,q.y+q.height)},function(q,l){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["base"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,
mxUtils.getValue(this.state.style,"position",ba.prototype.position))),v=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"base",ba.prototype.base)));return new mxPoint(q.x+Math.min(q.width,p*q.width+v),q.y+q.height-l)},function(q,l){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(q.width,l.x-q.x-p*q.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
-return h},internalStorage:function(c){var h=[Ra(c,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&
-h.push(fb(c));return h},module:function(c){return[Ra(c,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",za.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",za.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
-q.y-h.y))/2)})]},corner:function(c){return[Ra(c,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",cb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",cb.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(c){return[Ra(c,["dx","dy"],function(h){var q=
-Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",$a.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(c){return[Ra(c,["tabWidth","tabHeight"],function(h){var q=
-Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"tabWidth",F.prototype.tabWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"tabHeight",F.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",F.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(q=h.width-q);return new mxPoint(h.x+q,h.y+l)},function(h,q){var l=Math.max(0,Math.min(h.width,q.x-h.x));mxUtils.getValue(this.state.style,"tabPosition",F.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&
+return h},internalStorage:function(c){var h=[Ra(c,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",Va.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",Va.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&
+h.push(fb(c));return h},module:function(c){return[Ra(c,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",Ca.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",Ca.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
+q.y-h.y))/2)})]},corner:function(c){return[Ra(c,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",Ya.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",Ya.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(c){return[Ra(c,["dx","dy"],function(h){var q=
+Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(c){return[Ra(c,["tabWidth","tabHeight"],function(h){var q=
+Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"tabWidth",G.prototype.tabWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"tabHeight",G.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",G.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(q=h.width-q);return new mxPoint(h.x+q,h.y+l)},function(h,q){var l=Math.max(0,Math.min(h.width,q.x-h.x));mxUtils.getValue(this.state.style,"tabPosition",G.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&
(l=h.width-l);this.state.style.tabWidth=Math.round(l);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},document:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Q.prototype.size))));return new mxPoint(h.x+3*h.width/4,h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},tape:function(c){return[Ra(c,["size"],function(h){var q=
-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",O.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(c){return[Ra(c,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
-Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(A.prototype.size),offPageConnector:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(c){var h=[Graph.createHandle(c,["size"],function(q){var l=
+Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",N.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(c){return[Ra(c,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
+Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(B.prototype.size),offPageConnector:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",K.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(c){var h=[Graph.createHandle(c,["size"],function(q){var l=
Math.max(0,Math.min(q.width/2,q.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(q.x+l,q.y+l)},function(q,l){this.state.style.size=Math.round(100*Math.max(0,Math.min(q.height/2,q.width/2,l.x-q.x)))/100})];c=Graph.createHandle(c,["indent"],function(q){var l=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(q.x+.75*q.width,q.y+l*q.height/200)},function(q,l){this.state.style.indent=Math.round(100*
-Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(c);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:qb(Z.prototype.size,!1),display:qb(Ea.prototype.size,!1),cube:Wa(1,d.prototype.size,!1),card:Wa(.5,D.prototype.size,!0),loopLimit:Wa(.5,G.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,R.prototype.size,R.prototype.fixedSize)};Graph.createHandle=
+Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(c);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(O.prototype.size,!0,.5,!0,O.prototype.fixedSize),curlyBracket:qb(Z.prototype.size,!1),display:qb(Fa.prototype.size,!1),cube:Wa(1,d.prototype.size,!1),card:Wa(.5,D.prototype.size,!0),loopLimit:Wa(.5,H.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,R.prototype.size,R.prototype.fixedSize)};Graph.createHandle=
Ra;Graph.handleFactory=rb;var xb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=xb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var h=this.state.style.shape;null==mxCellRenderer.defaultShapes[h]&&null==mxStencilRegistry.getStencil(h)?h=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(h=mxConstants.SHAPE_SWIMLANE);h=rb[h];null==h&&null!=this.state.shape&&this.state.shape.isRoundable()&&
(h=rb[mxConstants.SHAPE_RECTANGLE]);null!=h&&(h=h(this.state),null!=h&&(c=null==c?h:c.concat(h)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var kb=new mxPoint(1,0),hb=new mxPoint(1,0),ob=mxUtils.toRadians(-30);kb=mxUtils.getRotatedPoint(kb,
-Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,h,q,l,p){var v=c.view;l=null!=l&&0<l.length?l[0]:null;var w=c.absolutePoints,J=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(c,l));null==J&&null!=h&&(J=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,N=hb.x,Ca=hb.y,Qa="horizontal"==mxUtils.getValue(c.style,
-"elbow","horizontal");if(null!=w&&null!=J){c=function(la,pa,na){la-=Ka.x;var ma=pa-Ka.y;pa=(Ca*la-N*ma)/(y*Ca-Y*N);la=(Y*la-y*ma)/(Y*N-y*Ca);Qa?(na&&(Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa),p.push(Ka)),Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la)):(na&&(Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la),p.push(Ka)),Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa));p.push(Ka)};var Ka=J;null==l&&(l=new mxPoint(J.x+(w.x-J.x)/2,J.y+(w.y-J.y)/2));c(l.x,l.y,!0);c(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
+Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,h,q,l,p){var v=c.view;l=null!=l&&0<l.length?l[0]:null;var w=c.absolutePoints,I=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(c,l));null==I&&null!=h&&(I=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,M=hb.x,Ba=hb.y,Qa="horizontal"==mxUtils.getValue(c.style,
+"elbow","horizontal");if(null!=w&&null!=I){c=function(la,pa,na){la-=Ja.x;var ma=pa-Ja.y;pa=(Ba*la-M*ma)/(y*Ba-Y*M);la=(Y*la-y*ma)/(Y*M-y*Ba);Qa?(na&&(Ja=new mxPoint(Ja.x+y*pa,Ja.y+Y*pa),p.push(Ja)),Ja=new mxPoint(Ja.x+M*la,Ja.y+Ba*la)):(na&&(Ja=new mxPoint(Ja.x+M*la,Ja.y+Ba*la),p.push(Ja)),Ja=new mxPoint(Ja.x+y*pa,Ja.y+Y*pa));p.push(Ja)};var Ja=I;null==l&&(l=new mxPoint(I.x+(w.x-I.x)/2,I.y+(w.y-I.y)/2));c(l.x,l.y,!0);c(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
var sb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,h){if(h==mxEdgeStyle.IsometricConnector){var q=new mxElbowEdgeHandler(c);q.snapToTerminals=!1;return q}return sb.apply(this,arguments)};e.prototype.constraints=[];k.prototype.getConstraints=function(c,h,q){c=[];var l=Math.tan(mxUtils.toRadians(30)),p=(.5-l)/2;l=Math.min(h,q/(.5+l));h=(h-l)/2;q=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h+.5*l,q+l*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.75*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+.5*l,q+(1-p)*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.75*l));return c};r.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;l=Math.min(h*
Math.tan(l),.5*q);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
@@ -3736,62 +3736,62 @@ Math.tan(l),.5*q);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.pus
0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q-l)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),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(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(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,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))];Da.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=
-mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
+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))];Ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=
+mxRectangleShape.prototype.constraints;S.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return c};D.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};d.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return c};A.prototype.getConstraints=function(c,h,q){c=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,
+0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return c};B.prototype.getConstraints=function(c,h,q){c=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return c};F.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
+0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return c};G.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
"tabWidth",this.tabWidth)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(h+l),p))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,q));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};bb.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
-mxEllipse.prototype.constraints;Ya.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.getConstraints=function(c,h,q){c=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-.5*(p+h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};za.prototype.getConstraints=function(c,h,q){h=parseFloat(mxUtils.getValue(c,"jettyWidth",za.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,
-"jettyHeight",za.prototype.jettyHeight));var l=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,h),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,
+0),!1,null,0,q));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};Va.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ja.prototype.constraints=mxEllipse.prototype.constraints;ea.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
+mxEllipse.prototype.constraints;Xa.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Fa.prototype.getConstraints=function(c,h,q){c=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
+.5*(p+h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};Ca.prototype.getConstraints=function(c,h,q){h=parseFloat(mxUtils.getValue(c,"jettyWidth",Ca.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,
+"jettyHeight",Ca.prototype.jettyHeight));var l=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,h),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,
h),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(q-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*c,3.5*c))];q>5*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,h));q>8*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h));q>
-15*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};G.prototype.constraints=mxRectangleShape.prototype.constraints;M.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)];V.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,
+15*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};H.prototype.constraints=mxRectangleShape.prototype.constraints;K.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)];T.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)];ra.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)];C.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)];O.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,
+.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];N.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)];qa.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)];ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,
+.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)];sa.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)];R.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=mxRectangleShape.prototype.constraints;Q.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;$a.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
+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;bb.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*h+.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(h+l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*h-.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return c};cb.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return c};Ya.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
-1),!1));return c};jb.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)];ca.prototype.getConstraints=
+1),!1));return c};jb.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)];da.prototype.getConstraints=
function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,
-.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return c};t.prototype.getConstraints=function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return c};t.prototype.getConstraints=function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};Ia.prototype.getConstraints=
function(c,h,q){c=[];var l=Math.min(q,h),p=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(q-p)/2;var v=l+p,w=(h-p)/2;p=w+p;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return c};aa.prototype.constraints=null;B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
-.9),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];Ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];va.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return c};aa.prototype.constraints=null;A.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
+.9),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];Ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()}
-Actions.prototype.init=function(){function a(m){e.escape();m=e.deleteCells(e.getDeletableCells(e.getSelectionCells()),m);null!=m&&e.setSelectionCells(m)}function b(){if(!e.isSelectionEmpty()){e.getModel().beginUpdate();try{for(var m=e.getSelectionCells(),r=0;r<m.length;r++)e.cellLabelChanged(m[r],"")}finally{e.getModel().endUpdate()}}}function f(m,r,x,A,C){C.getModel().beginUpdate();try{var F=C.getCellGeometry(m);null!=F&&x&&A&&(x/=A,F=F.clone(),1<x?F.height=F.width/x:F.width=F.height*x,C.getModel().setGeometry(m,
-F));C.setCellStyles(mxConstants.STYLE_CLIP_PATH,r,[m]);C.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[m])}finally{C.getModel().endUpdate()}}var d=this.editorUi,g=d.editor,e=g.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&e.isEnabled()};this.addAction("new...",function(){e.openLink(d.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";d.openFile()});this.addAction("smartFit",function(){e.popupMenuHandler.hideMenu();var m=e.view.scale,
+Actions.prototype.init=function(){function a(m){e.escape();m=e.deleteCells(e.getDeletableCells(e.getSelectionCells()),m);null!=m&&e.setSelectionCells(m)}function b(){if(!e.isSelectionEmpty()){e.getModel().beginUpdate();try{for(var m=e.getSelectionCells(),r=0;r<m.length;r++)e.cellLabelChanged(m[r],"")}finally{e.getModel().endUpdate()}}}function f(m,r,x,B,C){C.getModel().beginUpdate();try{var G=C.getCellGeometry(m);null!=G&&x&&B&&(x/=B,G=G.clone(),1<x?G.height=G.width/x:G.width=G.height*x,C.getModel().setGeometry(m,
+G));C.setCellStyles(mxConstants.STYLE_CLIP_PATH,r,[m]);C.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[m])}finally{C.getModel().endUpdate()}}var d=this.editorUi,g=d.editor,e=g.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&e.isEnabled()};this.addAction("new...",function(){e.openLink(d.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";d.openFile()});this.addAction("smartFit",function(){e.popupMenuHandler.hideMenu();var m=e.view.scale,
r=e.view.translate.x,x=e.view.translate.y;d.actions.get("resetView").funct();1E-5>Math.abs(m-e.view.scale)&&r==e.view.translate.x&&x==e.view.translate.y&&d.actions.get(e.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){e.isEnabled()&&(e.isSelectionEmpty()?d.actions.get("smartFit").funct():e.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){d.hideDialog()}));
-window.openFile.setConsumer(mxUtils.bind(this,function(m,r){try{var x=mxUtils.parseXml(m);g.graph.setSelectionCells(g.graph.importGraphModel(x.documentElement))}catch(A){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+A.message)}}));d.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){d.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){d.saveFile(!0)},null,
+window.openFile.setConsumer(mxUtils.bind(this,function(m,r){try{var x=mxUtils.parseXml(m);g.graph.setSelectionCells(g.graph.importGraphModel(x.documentElement))}catch(B){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+B.message)}}));d.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){d.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){d.saveFile(!0)},null,
null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){d.showDialog((new ExportDialog(d)).container,300,340,!0,!0)});this.addAction("editDiagram...",function(){var m=new EditDiagramDialog(d);d.showDialog(m.container,620,420,!0,!1);m.init()});this.addAction("pageSetup...",function(){d.showDialog((new PageSetupDialog(d)).container,320,240,!0,!0)}).isEnabled=k;this.addAction("print...",function(){d.showDialog((new PrintDialog(d)).container,300,180,!0,!0)},null,"sprite-print",
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(e,null,10,10)});this.addAction("undo",function(){d.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){d.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var m=null;try{m=d.copyXml(),null!=m&&e.removeCells(m,!1)}catch(r){}null==m&&mxClipboard.cut(e)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{d.copyXml()}catch(m){}try{mxClipboard.copy(e)}catch(m){d.handleError(m)}},
-null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())){var m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(r){if(null!=r){e.getModel().beginUpdate();try{d.pasteXml(r,!0)}finally{e.getModel().endUpdate()}}else mxClipboard.paste(e)}),m=!0)}catch(r){}m||mxClipboard.paste(e)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(m){function r(A){if(null!=A){for(var C=!0,F=0;F<
-A.length&&C;F++)C=C&&e.model.isEdge(A[F]);var K=e.view.translate;F=e.view.scale;var D=K.x,O=K.y;K=null;if(1==A.length&&C){var Q=e.getCellGeometry(A[0]);null!=Q&&(K=Q.getTerminalPoint(!0))}K=null!=K?K:e.getBoundingBoxFromGeometry(A,C);null!=K&&(C=Math.round(e.snap(e.popupMenuHandler.triggerX/F-D)),F=Math.round(e.snap(e.popupMenuHandler.triggerY/F-O)),e.cellsMoved(A,C-K.x,F-K.y))}}function x(){e.getModel().beginUpdate();try{r(mxClipboard.paste(e))}finally{e.getModel().endUpdate()}}if(e.isEnabled()&&
-!e.isCellLocked(e.getDefaultParent())){m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(A){if(null!=A){e.getModel().beginUpdate();try{r(d.pasteXml(A,!0))}finally{e.getModel().endUpdate()}}else x()}),m=!0)}catch(A){}m||x()}});this.addAction("copySize",function(){var m=e.getSelectionCell();e.isEnabled()&&null!=m&&e.getModel().isVertex(m)&&(m=e.getCellGeometry(m),null!=m&&(d.copiedSize=new mxRectangle(m.x,m.y,m.width,m.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
+null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())){var m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(r){if(null!=r){e.getModel().beginUpdate();try{d.pasteXml(r,!0)}finally{e.getModel().endUpdate()}}else mxClipboard.paste(e)}),m=!0)}catch(r){}m||mxClipboard.paste(e)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(m){function r(B){if(null!=B){for(var C=!0,G=0;G<
+B.length&&C;G++)C=C&&e.model.isEdge(B[G]);var J=e.view.translate;G=e.view.scale;var D=J.x,N=J.y;J=null;if(1==B.length&&C){var Q=e.getCellGeometry(B[0]);null!=Q&&(J=Q.getTerminalPoint(!0))}J=null!=J?J:e.getBoundingBoxFromGeometry(B,C);null!=J&&(C=Math.round(e.snap(e.popupMenuHandler.triggerX/G-D)),G=Math.round(e.snap(e.popupMenuHandler.triggerY/G-N)),e.cellsMoved(B,C-J.x,G-J.y))}}function x(){e.getModel().beginUpdate();try{r(mxClipboard.paste(e))}finally{e.getModel().endUpdate()}}if(e.isEnabled()&&
+!e.isCellLocked(e.getDefaultParent())){m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(B){if(null!=B){e.getModel().beginUpdate();try{r(d.pasteXml(B,!0))}finally{e.getModel().endUpdate()}}else x()}),m=!0)}catch(B){}m||x()}});this.addAction("copySize",function(){var m=e.getSelectionCell();e.isEnabled()&&null!=m&&e.getModel().isVertex(m)&&(m=e.getCellGeometry(m),null!=m&&(d.copiedSize=new mxRectangle(m.x,m.y,m.width,m.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(e.isEnabled()&&!e.isSelectionEmpty()&&null!=d.copiedSize){e.getModel().beginUpdate();try{for(var m=e.getResizableCells(e.getSelectionCells()),r=0;r<m.length;r++)if(e.getModel().isVertex(m[r])){var x=e.getCellGeometry(m[r]);null!=x&&(x=x.clone(),x.width=d.copiedSize.width,x.height=d.copiedSize.height,e.getModel().setGeometry(m[r],x))}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var m=e.getSelectionCell()||e.getModel().getRoot();e.isEnabled()&&
-null!=m&&(m=m.cloneValue(),null==m||isNaN(m.nodeType)||(d.copiedValue=m))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(m,r){function x(F,K){var D=A.getValue(F);K=F.cloneValue(K);K.removeAttribute("placeholders");null==D||isNaN(D.nodeType)||K.setAttribute("placeholders",D.getAttribute("placeholders"));null!=m&&mxEvent.isShiftDown(m)||K.setAttribute("label",e.convertValueToString(F));A.setValue(F,K)}m=null!=r?r:m;var A=e.getModel();if(e.isEnabled()&&!e.isSelectionEmpty()&&null!=d.copiedValue){A.beginUpdate();
-try{var C=e.getEditableCells(e.getSelectionCells());if(0==C.length)x(A.getRoot(),d.copiedValue);else for(r=0;r<C.length;r++)x(C[r],d.copiedValue)}finally{A.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?b():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+
+null!=m&&(m=m.cloneValue(),null==m||isNaN(m.nodeType)||(d.copiedValue=m))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(m,r){function x(G,J){var D=B.getValue(G);J=G.cloneValue(J);J.removeAttribute("placeholders");null==D||isNaN(D.nodeType)||J.setAttribute("placeholders",D.getAttribute("placeholders"));null!=m&&mxEvent.isShiftDown(m)||J.setAttribute("label",e.convertValueToString(G));B.setValue(G,J)}m=null!=r?r:m;var B=e.getModel();if(e.isEnabled()&&!e.isSelectionEmpty()&&null!=d.copiedValue){B.beginUpdate();
+try{var C=e.getEditableCells(e.getSelectionCells());if(0==C.length)x(B.getRoot(),d.copiedValue);else for(r=0;r<C.length;r++)x(C[r],d.copiedValue)}finally{B.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?b():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+
"+Delete");this.addAction("duplicate",function(){try{e.setSelectionCells(e.duplicateCells()),e.scrollCellToVisible(e.getSelectionCell())}catch(m){d.handleError(m)}},null,null,Editor.ctrlKey+"+D");this.put("mergeCells",new Action(mxResources.get("merge"),function(){var m=d.getSelectionState();if(null!=m.mergeCell){e.getModel().beginUpdate();try{e.setCellStyles("rowspan",m.rowspan,[m.mergeCell]),e.setCellStyles("colspan",m.colspan,[m.mergeCell])}finally{e.getModel().endUpdate()}}}));this.put("unmergeCells",
new Action(mxResources.get("unmerge"),function(){var m=d.getSelectionState();if(0<m.cells.length){e.getModel().beginUpdate();try{e.setCellStyles("rowspan",null,m.cells),e.setCellStyles("colspan",null,m.cells)}finally{e.getModel().endUpdate()}}}));this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(m,r){m=null!=r?r:m;e.turnShapes(e.getResizableCells(e.getSelectionCells()),null!=m?mxEvent.isShiftDown(m):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));
this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(m){m=e.getSelectionCell();e.isEnabled()&&null!=m&&e.addSelectionCells(e.getEdges(m))}));this.addAction("selectVertices",function(){e.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){e.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){e.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){e.clearSelection()},
@@ -3800,14 +3800,14 @@ x,m);e.setCellStyles("connectable",x,m)}finally{e.getModel().endUpdate()}}},null
null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){e.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){e.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(m){e.orderCells(!1,null,!0)});this.addAction("sendBackward",function(m){e.orderCells(!0,null,!0)});this.addAction("group",function(){if(e.isEnabled()){var m=mxUtils.sortCells(e.getSelectionCells(),!0);1!=m.length||e.isTable(m[0])||e.isTableRow(m[0])?
(m=e.getCellsForGroup(m),1<m.length&&e.setSelectionCell(e.groupCells(null,0,m))):e.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(e.isEnabled()){var m=e.getEditableCells(e.getSelectionCells());e.model.beginUpdate();try{var r=e.ungroupCells();if(null!=m)for(var x=0;x<m.length;x++)e.model.contains(m[x])&&(0==e.model.getChildCount(m[x])&&e.model.isVertex(m[x])&&e.setCellStyles("container","0",[m[x]]),r.push(m[x]))}finally{e.model.endUpdate()}0<
r.length&&e.setSelectionCells(r)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(e.isEnabled()){var m=e.getSelectionCells();if(null!=m){for(var r=[],x=0;x<m.length;x++)e.isTableRow(m[x])||e.isTableCell(m[x])||r.push(m[x]);e.removeCellsFromParent(r)}}});this.addAction("edit",function(){e.isEnabled()&&e.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var m=e.getSelectionCell()||e.getModel().getRoot();d.showDataDialog(m)},null,
-null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r="";if(mxUtils.isNode(m.value)){var x=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&m.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(x=m.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==x&&(x=m.value.getAttribute("tooltip"));null!=x&&(r=x)}r=new TextareaDialog(d,mxResources.get("editTooltip")+":",r,function(A){e.setTooltipForCell(m,
-A)});d.showDialog(r.container,320,200,!0,!0);r.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var m=e.getLinkForCell(e.getSelectionCell());null!=m&&e.openLink(m)});this.addAction("editLink...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r=e.getLinkForCell(m)||"";d.showLinkDialog(r,mxResources.get("apply"),function(x,A,C){x=mxUtils.trim(x);e.setLinkForCell(m,0<x.length?x:null);e.setAttributeForCell(m,"linkTarget",C)},!0,e.getLinkTargetForCell(m))}},
-null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&(e.clearSelection(),d.actions.get("image").funct())})).isEnabled=k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&d.showLinkDialog("",mxResources.get("insert"),function(m,r,x){m=mxUtils.trim(m);if(0<m.length){var A=null,C=e.getLinkTitle(m);null!=r&&0<r.length&&(A=r[0].iconUrl,
-C=r[0].name||r[0].type,C=C.charAt(0).toUpperCase()+C.substring(1),30<C.length&&(C=C.substring(0,30)+"..."));r=new mxCell(C,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=A?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+A:"spacing=10;"));r.vertex=!0;A=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry([r],!0));r.geometry.x=A.x;r.geometry.y=A.y;e.setAttributeForCell(r,"linkTarget",x);e.setLinkForCell(r,m);e.cellSizeUpdated(r,
-!0);e.getModel().beginUpdate();try{r=e.addCell(r),e.fireEvent(new mxEventObject("cellsInserted","cells",[r]))}finally{e.getModel().endUpdate()}e.setSelectionCell(r);e.scrollCellToVisible(e.getSelectionCell())}},!0)})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){if(e.isEnabled())if(e.cellEditor.isContentEditing()){var m=e.getSelectedElement(),r=e.getParentByName(m,"A",e.cellEditor.textarea),x="";if(null==r&&null!=m&&null!=m.getElementsByTagName)for(var A=m.getElementsByTagName("a"),
-C=0;C<A.length&&null==r;C++)A[C].textContent==m.textContent&&(r=A[C]);null!=r&&"A"==r.nodeName&&(x=r.getAttribute("href")||"",e.selectNode(r));var F=e.cellEditor.saveSelection();d.showLinkDialog(x,mxResources.get("apply"),mxUtils.bind(this,function(K){e.cellEditor.restoreSelection(F);null!=K&&e.insertLink(K)}))}else e.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var m=e.getSelectionCells();if(null!=m){e.getModel().beginUpdate();
+null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r="";if(mxUtils.isNode(m.value)){var x=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&m.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(x=m.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==x&&(x=m.value.getAttribute("tooltip"));null!=x&&(r=x)}r=new TextareaDialog(d,mxResources.get("editTooltip")+":",r,function(B){e.setTooltipForCell(m,
+B)});d.showDialog(r.container,320,200,!0,!0);r.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var m=e.getLinkForCell(e.getSelectionCell());null!=m&&e.openLink(m)});this.addAction("editLink...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r=e.getLinkForCell(m)||"";d.showLinkDialog(r,mxResources.get("apply"),function(x,B,C){x=mxUtils.trim(x);e.setLinkForCell(m,0<x.length?x:null);e.setAttributeForCell(m,"linkTarget",C)},!0,e.getLinkTargetForCell(m))}},
+null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&(e.clearSelection(),d.actions.get("image").funct())})).isEnabled=k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&d.showLinkDialog("",mxResources.get("insert"),function(m,r,x){m=mxUtils.trim(m);if(0<m.length){var B=null,C=e.getLinkTitle(m);null!=r&&0<r.length&&(B=r[0].iconUrl,
+C=r[0].name||r[0].type,C=C.charAt(0).toUpperCase()+C.substring(1),30<C.length&&(C=C.substring(0,30)+"..."));r=new mxCell(C,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=B?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+B:"spacing=10;"));r.vertex=!0;B=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry([r],!0));r.geometry.x=B.x;r.geometry.y=B.y;e.setAttributeForCell(r,"linkTarget",x);e.setLinkForCell(r,m);e.cellSizeUpdated(r,
+!0);e.getModel().beginUpdate();try{r=e.addCell(r),e.fireEvent(new mxEventObject("cellsInserted","cells",[r]))}finally{e.getModel().endUpdate()}e.setSelectionCell(r);e.scrollCellToVisible(e.getSelectionCell())}},!0)})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){if(e.isEnabled())if(e.cellEditor.isContentEditing()){var m=e.getSelectedElement(),r=e.getParentByName(m,"A",e.cellEditor.textarea),x="";if(null==r&&null!=m&&null!=m.getElementsByTagName)for(var B=m.getElementsByTagName("a"),
+C=0;C<B.length&&null==r;C++)B[C].textContent==m.textContent&&(r=B[C]);null!=r&&"A"==r.nodeName&&(x=r.getAttribute("href")||"",e.selectNode(r));var G=e.cellEditor.saveSelection();d.showLinkDialog(x,mxResources.get("apply"),mxUtils.bind(this,function(J){e.cellEditor.restoreSelection(G);null!=J&&e.insertLink(J)}))}else e.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var m=e.getSelectionCells();if(null!=m){e.getModel().beginUpdate();
try{for(var r=0;r<m.length;r++){var x=m[r];0<e.getModel().getChildCount(x)?e.updateGroupBounds([x],0,!0):e.updateCellSize(x)}}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 m=e.getCommonStyle(e.getSelectionCells());m="1"==mxUtils.getValue(m,"html","0")?null:"1";e.getModel().beginUpdate();try{for(var r=e.getEditableCells(e.getSelectionCells()),
-x=0;x<r.length;x++)if(state=e.getView().getState(r[x]),null!=state){var A=mxUtils.getValue(state.style,"html","0");if("1"==A&&null==m){var C=e.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(C=C.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var F=document.createElement("div");F.innerHTML=e.sanitizeHtml(C);C=mxUtils.extractTextWithWhitespace(F.childNodes);e.cellLabelChanged(state.cell,C);e.setCellStyles("html",m,[r[x]])}else"0"==A&&"1"==m&&(C=mxUtils.htmlEntities(e.convertValueToString(state.cell),
+x=0;x<r.length;x++)if(state=e.getView().getState(r[x]),null!=state){var B=mxUtils.getValue(state.style,"html","0");if("1"==B&&null==m){var C=e.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(C=C.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var G=document.createElement("div");G.innerHTML=e.sanitizeHtml(C);C=mxUtils.extractTextWithWhitespace(G.childNodes);e.cellLabelChanged(state.cell,C);e.setCellStyles("html",m,[r[x]])}else"0"==B&&"1"==m&&(C=mxUtils.htmlEntities(e.convertValueToString(state.cell),
!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(C=C.replace(/\n/g,"<br/>")),e.cellLabelChanged(state.cell,e.sanitizeHtml(C)),e.setCellStyles("html",m,[r[x]]))}d.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=m?m:"0"],"cells",r))}finally{e.getModel().endUpdate()}});this.addAction("wordWrap",function(){var m=e.getView().getState(e.getSelectionCell()),r="wrap";e.stopEditing();null!=m&&"wrap"==m.style[mxConstants.STYLE_WHITE_SPACE]&&(r=null);e.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
r)});this.addAction("rotation",function(){var m="0",r=e.getView().getState(e.getSelectionCell());null!=r&&(m=r.style[mxConstants.STYLE_ROTATION]||m);m=new FilenameDialog(d,m,mxResources.get("apply"),function(x){null!=x&&0<x.length&&e.setCellStyles(mxConstants.STYLE_ROTATION,x)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");d.showDialog(m.container,375,80,!0,!0);m.init()});this.addAction("resetView",function(){e.zoomTo(1);d.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
function(m){e.isFastZoomEnabled()?e.lazyZoom(!0,!0,d.buttonZoomDelay):e.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(m){e.isFastZoomEnabled()?e.lazyZoom(!1,!0,d.buttonZoomDelay):e.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var m=e.isSelectionEmpty()?e.getGraphBounds():e.getBoundingBox(e.getSelectionCells()),r=e.view.translate,x=e.view.scale;m.x=m.x/x-r.x;m.y=m.y/x-r.y;m.width/=x;
@@ -3821,9 +3821,9 @@ n.setEnabled(!1);n=this.addAction("tooltips",function(){e.tooltipHandler.setEnab
n.isEnabled=k;n=this.addAction("scrollbars",function(){d.setScrollbars(!d.hasScrollbars())});n.setToggleAction(!0);n.setSelectedCallback(function(){return e.scrollbars});n=this.addAction("pageView",mxUtils.bind(this,function(){d.setPageVisible(!e.pageVisible)}));n.setToggleAction(!0);n.setSelectedCallback(function(){return e.pageVisible});n=this.addAction("connectionArrows",function(){e.connectionArrowsEnabled=!e.connectionArrowsEnabled;d.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
null,"Alt+Shift+A");n.setToggleAction(!0);n.setSelectedCallback(function(){return e.connectionArrowsEnabled});n=this.addAction("connectionPoints",function(){e.setConnectable(!e.connectionHandler.isEnabled());d.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(function(){return e.connectionHandler.isEnabled()});n=this.addAction("copyConnect",function(){e.connectionHandler.setCreateTarget(!e.connectionHandler.isCreateTarget());
d.fireEvent(new mxEventObject("copyConnectChanged"))});n.setToggleAction(!0);n.setSelectedCallback(function(){return e.connectionHandler.isCreateTarget()});n.isEnabled=k;n=this.addAction("autosave",function(){d.editor.setAutosave(!d.editor.autosave)});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.editor.autosave});n.isEnabled=k;n.visible=!1;this.addAction("help",function(){var m="";mxResources.isLanguageSupported(mxClient.language)&&(m="_"+mxClient.language);e.openLink(RESOURCES_PATH+
-"/help"+m+".html")});var u=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){u||(d.showDialog((new AboutDialog(d)).container,320,280,!0,!0,function(){u=!1}),u=!0)}));n=mxUtils.bind(this,function(m,r,x,A){return this.addAction(m,function(){if(null!=x&&e.cellEditor.isContentEditing())x();else{e.stopEditing(!1);e.getModel().beginUpdate();try{var C=e.getEditableCells(e.getSelectionCells());e.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,r,C);(r&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD?e.updateLabelElements(C,function(K){K.style.fontWeight=null;"B"==K.nodeName&&e.replaceElement(K)}):(r&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?e.updateLabelElements(C,function(K){K.style.fontStyle=null;"I"==K.nodeName&&e.replaceElement(K)}):(r&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.updateLabelElements(C,function(K){K.style.textDecoration=null;"U"==K.nodeName&&e.replaceElement(K)});for(var F=0;F<C.length;F++)0==e.model.getChildCount(C[F])&&e.autoSizeCell(C[F],
-!1)}finally{e.getModel().endUpdate()}}},null,null,A)});n("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");n("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");n("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...",
+"/help"+m+".html")});var u=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){u||(d.showDialog((new AboutDialog(d)).container,320,280,!0,!0,function(){u=!1}),u=!0)}));n=mxUtils.bind(this,function(m,r,x,B){return this.addAction(m,function(){if(null!=x&&e.cellEditor.isContentEditing())x();else{e.stopEditing(!1);e.getModel().beginUpdate();try{var C=e.getEditableCells(e.getSelectionCells());e.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,r,C);(r&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD?e.updateLabelElements(C,function(J){J.style.fontWeight=null;"B"==J.nodeName&&e.replaceElement(J)}):(r&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?e.updateLabelElements(C,function(J){J.style.fontStyle=null;"I"==J.nodeName&&e.replaceElement(J)}):(r&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.updateLabelElements(C,function(J){J.style.textDecoration=null;"U"==J.nodeName&&e.replaceElement(J)});for(var G=0;G<C.length;G++)0==e.model.getChildCount(C[G])&&e.autoSizeCell(C[G],
+!1)}finally{e.getModel().endUpdate()}}},null,null,B)});n("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");n("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");n("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",
@@ -3832,14 +3832,14 @@ this.addAction("rounded",function(){e.getModel().beginUpdate();try{e.setCellStyl
x="1"==mxUtils.getValue(r,mxConstants.STYLE_ROUNDED,"0")?"0":"1";e.setCellStyles(mxConstants.STYLE_ROUNDED,x);e.setCellStyles(mxConstants.STYLE_CURVED,null);d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[x,"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 m=e.view.getState(e.getSelectionCell()),r="1";null!=m&&null!=e.getFoldingImage(m)&&(r="0");e.setCellStyles("collapsible",r);d.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[r],"cells",e.getSelectionCells()))});this.addAction("editStyle...",
mxUtils.bind(this,function(){var m=e.getEditableCells(e.getSelectionCells());if(null!=m&&0<m.length){var r=e.getModel();r=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",r.getStyle(m[0])||"",function(x){null!=x&&e.setCellStyle(mxUtils.trim(x),m)},null,null,400,220);this.editorUi.showDialog(r.container,420,300,!0,!0);r.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 m=e.getSelectionCell();if(null!=m&&e.getModel().isEdge(m)){var r=g.graph.selectionCellsHandler.getHandler(m);if(r instanceof mxEdgeHandler){var x=e.view.translate,A=e.view.scale,C=x.x;x=x.y;m=e.getModel().getParent(m);for(var F=e.getCellGeometry(m);e.getModel().isVertex(m)&&null!=F;)C+=F.x,x+=F.y,m=
-e.getModel().getParent(m),F=e.getCellGeometry(m);C=Math.round(e.snap(e.popupMenuHandler.triggerX/A-C));A=Math.round(e.snap(e.popupMenuHandler.triggerY/A-x));r.addPointAt(r.state,C,A)}}});this.addAction("removeWaypoint",function(){var m=d.actions.get("removeWaypoint");null!=m.handler&&m.handler.removePoint(m.handler.state,m.index)});this.addAction("clearWaypoints",function(m,r){m=null!=r?r:m;var x=e.getSelectionCells();if(null!=x){x=e.getEditableCells(e.addAllEdges(x));e.getModel().beginUpdate();try{for(var A=
-0;A<x.length;A++){var C=x[A];if(e.getModel().isEdge(C)){var F=e.getCellGeometry(C);null!=r&&mxEvent.isShiftDown(m)?(e.setCellStyles(mxConstants.STYLE_EXIT_X,null,[C]),e.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[C])):null!=F&&(F=F.clone(),F.points=null,F.x=0,F.y=0,F.offset=null,e.getModel().setGeometry(C,F))}}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+C");n=this.addAction("subscript",
+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 m=e.getSelectionCell();if(null!=m&&e.getModel().isEdge(m)){var r=g.graph.selectionCellsHandler.getHandler(m);if(r instanceof mxEdgeHandler){var x=e.view.translate,B=e.view.scale,C=x.x;x=x.y;m=e.getModel().getParent(m);for(var G=e.getCellGeometry(m);e.getModel().isVertex(m)&&null!=G;)C+=G.x,x+=G.y,m=
+e.getModel().getParent(m),G=e.getCellGeometry(m);C=Math.round(e.snap(e.popupMenuHandler.triggerX/B-C));B=Math.round(e.snap(e.popupMenuHandler.triggerY/B-x));r.addPointAt(r.state,C,B)}}});this.addAction("removeWaypoint",function(){var m=d.actions.get("removeWaypoint");null!=m.handler&&m.handler.removePoint(m.handler.state,m.index)});this.addAction("clearWaypoints",function(m,r){m=null!=r?r:m;var x=e.getSelectionCells();if(null!=x){x=e.getEditableCells(e.addAllEdges(x));e.getModel().beginUpdate();try{for(var B=
+0;B<x.length;B++){var C=x[B];if(e.getModel().isEdge(C)){var G=e.getCellGeometry(C);null!=r&&mxEvent.isShiftDown(m)?(e.setCellStyles(mxConstants.STYLE_EXIT_X,null,[C]),e.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[C])):null!=G&&(G=G.clone(),G.points=null,G.x=0,G.y=0,G.offset=null,e.getModel().setGeometry(C,G))}}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+C");n=this.addAction("subscript",
mxUtils.bind(this,function(){e.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");n=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 m=mxResources.get("image")+" ("+mxResources.get("url")+"):",r=e.getView().getState(e.getSelectionCell()),
-x="",A=null;null!=r&&(x=r.style[mxConstants.STYLE_IMAGE]||x,A=r.style[mxConstants.STYLE_CLIP_PATH]||A);var C=e.cellEditor.saveSelection();d.showImageDialog(m,x,function(F,K,D,O,Q,R){if(e.cellEditor.isContentEditing())e.cellEditor.restoreSelection(C),e.insertImage(F,K,D);else{var P=e.getSelectionCells();if(null!=F&&(0<F.length||0<P.length)){var Z=null;e.getModel().beginUpdate();try{if(0==P.length){P=[e.insertVertex(e.getDefaultParent(),null,"",0,0,K,D,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-var T=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(P,!0));P[0].geometry.x=T.x;P[0].geometry.y=T.y;null!=O&&f(P[0],O,Q,R,e);Z=P;e.fireEvent(new mxEventObject("cellsInserted","cells",Z))}e.setCellStyles(mxConstants.STYLE_IMAGE,0<F.length?F:null,P);var U=e.getCurrentCellStyle(P[0]);"image"!=U[mxConstants.STYLE_SHAPE]&&"label"!=U[mxConstants.STYLE_SHAPE]?e.setCellStyles(mxConstants.STYLE_SHAPE,"image",P):0==F.length&&e.setCellStyles(mxConstants.STYLE_SHAPE,null,P);if(1==e.getSelectionCount()&&
-null!=K&&null!=D){var fa=P[0],ha=e.getModel().getGeometry(fa);null!=ha&&(ha=ha.clone(),ha.width=K,ha.height=D,e.getModel().setGeometry(fa,ha));null!=O?f(fa,O,Q,R,e):e.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,P)}}finally{e.getModel().endUpdate()}null!=Z&&(e.setSelectionCells(Z),e.scrollCellToVisible(Z[0]))}}},e.cellEditor.isContentEditing(),!e.cellEditor.isContentEditing(),!0,A)}}).isEnabled=k;this.addAction("crop...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&
-null!=m){var r=e.getCurrentCellStyle(m),x=r[mxConstants.STYLE_IMAGE],A=r[mxConstants.STYLE_SHAPE];x&&"image"==A&&(r=new CropImageDialog(d,x,r[mxConstants.STYLE_CLIP_PATH],function(C,F,K){f(m,C,F,K,e)}),d.showDialog(r.container,300,390,!0,!0))}}).isEnabled=k;n=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"))})),
+x="",B=null;null!=r&&(x=r.style[mxConstants.STYLE_IMAGE]||x,B=r.style[mxConstants.STYLE_CLIP_PATH]||B);var C=e.cellEditor.saveSelection();d.showImageDialog(m,x,function(G,J,D,N,Q,R){if(e.cellEditor.isContentEditing())e.cellEditor.restoreSelection(C),e.insertImage(G,J,D);else{var P=e.getSelectionCells();if(null!=G&&(0<G.length||0<P.length)){var Z=null;e.getModel().beginUpdate();try{if(0==P.length){P=[e.insertVertex(e.getDefaultParent(),null,"",0,0,J,D,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+var U=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(P,!0));P[0].geometry.x=U.x;P[0].geometry.y=U.y;null!=N&&f(P[0],N,Q,R,e);Z=P;e.fireEvent(new mxEventObject("cellsInserted","cells",Z))}e.setCellStyles(mxConstants.STYLE_IMAGE,0<G.length?G:null,P);var V=e.getCurrentCellStyle(P[0]);"image"!=V[mxConstants.STYLE_SHAPE]&&"label"!=V[mxConstants.STYLE_SHAPE]?e.setCellStyles(mxConstants.STYLE_SHAPE,"image",P):0==G.length&&e.setCellStyles(mxConstants.STYLE_SHAPE,null,P);if(1==e.getSelectionCount()&&
+null!=J&&null!=D){var ia=P[0],ha=e.getModel().getGeometry(ia);null!=ha&&(ha=ha.clone(),ha.width=J,ha.height=D,e.getModel().setGeometry(ia,ha));null!=N?f(ia,N,Q,R,e):e.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,P)}}finally{e.getModel().endUpdate()}null!=Z&&(e.setSelectionCells(Z),e.scrollCellToVisible(Z[0]))}}},e.cellEditor.isContentEditing(),!e.cellEditor.isContentEditing(),!0,B)}}).isEnabled=k;this.addAction("crop...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&
+null!=m){var r=e.getCurrentCellStyle(m),x=r[mxConstants.STYLE_IMAGE],B=r[mxConstants.STYLE_SHAPE];x&&"image"==B&&(r=new CropImageDialog(d,x,r[mxConstants.STYLE_CLIP_PATH],function(C,G,J){f(m,C,G,J,e)}),d.showDialog(r.container,300,390,!0,!0))}}).isEnabled=k;n=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.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");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));n=this.addAction("formatPanel",mxUtils.bind(this,
function(){d.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return 0<d.formatWidth}));n=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.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");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&null!=m){var r=new ConnectionPointsDialog(d,
@@ -3851,7 +3851,7 @@ function(u){u.removeAttribute("face");u.style.fontFamily=null;"PRE"==u.nodeName&
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,g,!0,mxUtils.bind(this,function(n){0>mxUtils.indexOf(this.customFonts,n)&&(this.customFonts.push(n),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(d,g){function e(k,n){return d.addItem(k,null,mxUtils.bind(this,function(){null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
n+">"))}),g)}e(mxResources.get("normal"),"p");e("","h1").firstChild.nextSibling.innerHTML='<h1 style="margin:0px;">'+mxResources.get("heading")+" 1</h1>";e("","h2").firstChild.nextSibling.innerHTML='<h2 style="margin:0px;">'+mxResources.get("heading")+" 2</h2>";e("","h3").firstChild.nextSibling.innerHTML='<h3 style="margin:0px;">'+mxResources.get("heading")+" 3</h3>";e("","h4").firstChild.nextSibling.innerHTML='<h4 style="margin:0px;">'+mxResources.get("heading")+" 4</h4>";e("","h5").firstChild.nextSibling.innerHTML=
'<h5 style="margin:0px;">'+mxResources.get("heading")+" 5</h5>";e("","h6").firstChild.nextSibling.innerHTML='<h6 style="margin:0px;">'+mxResources.get("heading")+" 6</h6>";e("","pre").firstChild.nextSibling.innerHTML='<pre style="margin:0px;">'+mxResources.get("formatted")+"</pre>";e("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(d,g){var e=
-[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(x,A){return x-A}));for(var k=mxUtils.bind(this,function(x){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var A=b.cellEditor.textarea.getElementsByTagName("font"),C=0;C<A.length;C++)if("3"==A[C].getAttribute("size")){A[C].removeAttribute("size");A[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
+[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(x,B){return x-B}));for(var k=mxUtils.bind(this,function(x){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var B=b.cellEditor.textarea.getElementsByTagName("font"),C=0;C<B.length;C++)if("3"==B[C].getAttribute("size")){B[C].removeAttribute("size");B[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[x],"cells",[b.cellEditor.getEditingCell()]))}}),n=mxUtils.bind(this,function(x){this.styleChange(d,x,[mxConstants.STYLE_FONTSIZE],[x],null,g,function(){k(x)})}),u=0;u<e.length;u++)n(e[u]);d.addSeparator(g);if(0<this.customFontSizes.length){var m=0;for(u=0;u<this.customFontSizes.length;u++)0>mxUtils.indexOf(e,this.customFontSizes[u])&&(n(this.customFontSizes[u]),m++);0<m&&d.addSeparator(g);d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),g);d.addSeparator(g)}var r=
null;this.promptChange(d,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,g,!0,mxUtils.bind(this,function(x){null!=r&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(r));null!=x&&0<x.length&&(this.customFontSizes.push(x),k(x))}),null,function(){r=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(d,g){d.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},g);d.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},g);this.addMenuItems(d,["-","rotation"],g)})));this.put("align",new Menu(mxUtils.bind(this,function(d,g){var e=1<this.editorUi.getSelectionState().vertices.length;d.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},g,null,e);d.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},g,null,e);d.addItem(mxResources.get("rightAlign"),
@@ -3874,24 +3874,24 @@ g){this.addMenuItems(d,["resetView","-"],g);for(var e=[.25,.5,.75,1,1.25,1.5,2,3
"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(d,g){this.addMenuItems(d,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(d,g){this.addMenuItems(d,["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,f,d){var g=this.get(a);null!=g&&(g=g.isEnabled(),b.showDisabled||g)&&(f=b.addItem(d||mxResources.get(a),null,null,f,null,g),this.addMenu(a,b,f))};Menus.prototype.addMenu=function(a,b,f){var d=this.get(a);null!=d&&(b.showDisabled||d.isEnabled())&&this.get(a).execute(b,f)};
Menus.prototype.addInsertTableCellItem=function(a,b){var f=this.editorUi.editor.graph,d=f.getSelectionCell(),g=f.getCurrentCellStyle(d);1<f.getSelectionCount()&&(f.isTableCell(d)&&(d=f.model.getParent(d)),f.isTableRow(d)&&(d=f.model.getParent(d)));var e=f.isTable(d)||f.isTableRow(d)||f.isTableCell(d),k=f.isStack(d)||f.isStackChild(d),n=e,u=e;k&&(g=f.isStack(d)?g:f.getCellStyle(f.model.getParent(d)),u="0"==g.horizontalStack,n=!u);null!=b||!e&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(m,
-r,x,A,C){r=C||mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)?f.createCrossFunctionalSwimlane(r,x,null,null,A||mxEvent.isShiftDown(m)?"Cross-Functional Flowchart":null):f.createTable(r,x,null,null,A||mxEvent.isShiftDown(m)?"Table":null);m=mxEvent.isAltDown(m)?f.getFreeInsertPoint():f.getCenterInsertPoint(f.getBoundingBoxFromGeometry([r],!0));x=null;f.getModel().beginUpdate();try{x=f.importCells([r],m.x,m.y),f.fireEvent(new mxEventObject("cellsInserted","cells",f.model.getDescendants(x[0])))}finally{f.getModel().endUpdate()}null!=
+r,x,B,C){r=C||mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)?f.createCrossFunctionalSwimlane(r,x,null,null,B||mxEvent.isShiftDown(m)?"Cross-Functional Flowchart":null):f.createTable(r,x,null,null,B||mxEvent.isShiftDown(m)?"Table":null);m=mxEvent.isAltDown(m)?f.getFreeInsertPoint():f.getCenterInsertPoint(f.getBoundingBoxFromGeometry([r],!0));x=null;f.getModel().beginUpdate();try{x=f.importCells([r],m.x,m.y),f.fireEvent(new mxEventObject("cellsInserted","cells",f.model.getDescendants(x[0])))}finally{f.getModel().endUpdate()}null!=
x&&0<x.length&&(f.scrollCellToVisible(x[0]),f.setSelectionCells(x))}),b):(n&&(b=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!0):f.insertTableColumn(d,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),b.setAttribute("title",mxResources.get("insertColumnBefore")),b=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!1):f.insertTableColumn(d,!1)}catch(m){this.editorUi.handleError(m)}}),
null,"geIcon geSprite geSprite-insertcolumnafter"),b.setAttribute("title",mxResources.get("insertColumnAfter")),b=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=d)try{k?f.deleteLane(d):f.deleteTableColumn(d)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),b.setAttribute("title",mxResources.get("deleteColumn"))),u&&(b=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!0):f.insertTableRow(d,
!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),b.setAttribute("title",mxResources.get("insertRowBefore")),b=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!1):f.insertTableRow(d,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),b.setAttribute("title",mxResources.get("insertRowAfter")),b=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?
f.deleteLane(d):f.deleteTableRow(d)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),b.setAttribute("title",mxResources.get("deleteRow")),u=this.editorUi.getSelectionState(),null!=u.mergeCell?this.addMenuItem(a,"mergeCells"):(1<u.style.colspan||1<u.style.rowspan)&&this.addMenuItem(a,"unmergeCells")))};
-Menus.prototype.addInsertTableItem=function(a,b,f,d){function g(C){n=e.getParentByName(mxEvent.getSource(C),"TD");var F=!1;if(null!=n){k=e.getParentByName(n,"TR");var K=mxEvent.isMouseEvent(C)?2:4,D=x,O=Math.min(20,k.sectionRowIndex+K);K=Math.min(20,n.cellIndex+K);for(var Q=D.rows.length;Q<O;Q++)for(var R=D.insertRow(Q),P=0;P<D.rows[0].cells.length;P++)R.insertCell(-1);for(Q=0;Q<D.rows.length;Q++)for(R=D.rows[Q],P=R.cells.length;P<K;P++)R.insertCell(-1);A.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
-1);for(D=0;D<x.rows.length;D++)for(O=x.rows[D],K=0;K<O.cells.length;K++)Q=O.cells[K],D==k.sectionRowIndex&&K==n.cellIndex&&(F="blue"==Q.style.backgroundColor),Q.style.backgroundColor=D<=k.sectionRowIndex&&K<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return F}d=null!=d?d:!0;b=null!=b?b:mxUtils.bind(this,function(C,F,K){var D=this.editorUi.editor.graph;C=D.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=D.cellEditor.textarea){D.getParentByName(C,"TR");var O=D.cellEditor.textarea.getElementsByTagName("table");
-C=[];for(var Q=0;Q<O.length;Q++)C.push(O[Q]);D.container.focus();Q=D.pasteHtmlAtCaret;O=["<table>"];for(var R=0;R<F;R++){O.push("<tr>");for(var P=0;P<K;P++)O.push("<td><br></td>");O.push("</tr>")}O.push("</table>");F=O.join("");Q.call(D,F);F=D.cellEditor.textarea.getElementsByTagName("table");if(F.length==C.length+1)for(Q=F.length-1;0<=Q;Q--)if(0==Q||F[Q]!=C[Q-1]){D.selectNode(F[Q].rows[0].cells[0]);break}}});var e=this.editorUi.editor.graph,k=null,n=null;null==f&&(a.div.className+=" geToolbarMenu",
+Menus.prototype.addInsertTableItem=function(a,b,f,d){function g(C){n=e.getParentByName(mxEvent.getSource(C),"TD");var G=!1;if(null!=n){k=e.getParentByName(n,"TR");var J=mxEvent.isMouseEvent(C)?2:4,D=x,N=Math.min(20,k.sectionRowIndex+J);J=Math.min(20,n.cellIndex+J);for(var Q=D.rows.length;Q<N;Q++)for(var R=D.insertRow(Q),P=0;P<D.rows[0].cells.length;P++)R.insertCell(-1);for(Q=0;Q<D.rows.length;Q++)for(R=D.rows[Q],P=R.cells.length;P<J;P++)R.insertCell(-1);B.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
+1);for(D=0;D<x.rows.length;D++)for(N=x.rows[D],J=0;J<N.cells.length;J++)Q=N.cells[J],D==k.sectionRowIndex&&J==n.cellIndex&&(G="blue"==Q.style.backgroundColor),Q.style.backgroundColor=D<=k.sectionRowIndex&&J<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return G}d=null!=d?d:!0;b=null!=b?b:mxUtils.bind(this,function(C,G,J){var D=this.editorUi.editor.graph;C=D.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=D.cellEditor.textarea){D.getParentByName(C,"TR");var N=D.cellEditor.textarea.getElementsByTagName("table");
+C=[];for(var Q=0;Q<N.length;Q++)C.push(N[Q]);D.container.focus();Q=D.pasteHtmlAtCaret;N=["<table>"];for(var R=0;R<G;R++){N.push("<tr>");for(var P=0;P<J;P++)N.push("<td><br></td>");N.push("</tr>")}N.push("</table>");G=N.join("");Q.call(D,G);G=D.cellEditor.textarea.getElementsByTagName("table");if(G.length==C.length+1)for(Q=G.length-1;0<=Q;Q--)if(0==Q||G[Q]!=C[Q-1]){D.selectNode(G[Q].rows[0].cells[0]);break}}});var e=this.editorUi.editor.graph,k=null,n=null;null==f&&(a.div.className+=" geToolbarMenu",
a.labels=!1);a=a.addItem("",null,null,f,null,null,null,!0);a.firstChild.style.fontSize=Menus.prototype.defaultFontSize+"px";a.firstChild.innerText="";var u=document.createElement("input");u.setAttribute("id","geTitleOption");u.setAttribute("type","checkbox");f=document.createElement("label");mxUtils.write(f,mxResources.get("title"));f.setAttribute("for","geTitleOption");mxEvent.addGestureListeners(f,null,null,mxUtils.bind(this,function(C){mxEvent.consume(C)}));mxEvent.addGestureListeners(u,null,null,
mxUtils.bind(this,function(C){mxEvent.consume(C)}));var m=document.createElement("input");m.setAttribute("id","geContainerOption");m.setAttribute("type","checkbox");var r=document.createElement("label");mxUtils.write(r,mxResources.get("container"));r.setAttribute("for","geContainerOption");mxEvent.addGestureListeners(r,null,null,mxUtils.bind(this,function(C){mxEvent.consume(C)}));mxEvent.addGestureListeners(m,null,null,mxUtils.bind(this,function(C){mxEvent.consume(C)}));d&&(a.firstChild.appendChild(u),
-a.firstChild.appendChild(f),mxUtils.br(a.firstChild),a.firstChild.appendChild(m),a.firstChild.appendChild(r),mxUtils.br(a.firstChild),mxUtils.br(a.firstChild));var x=function(C,F){var K=document.createElement("table");K.setAttribute("border","1");K.style.borderCollapse="collapse";K.style.borderStyle="solid";K.setAttribute("cellPadding","8");for(var D=0;D<C;D++)for(var O=K.insertRow(D),Q=0;Q<F;Q++)O.insertCell(-1);return K}(5,5);a.firstChild.appendChild(x);var A=document.createElement("div");A.style.padding=
-"4px";A.innerHTML="1x1";a.firstChild.appendChild(A);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var F=g(C);null!=n&&null!=k&&F&&(b(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
-Menus.prototype.edgeStyleChange=function(a,b,f,d,g,e,k,n){return this.showIconOnly(a.addItem(b,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var A=m[x];if(u.getModel().isEdge(A)){if(k){var C=u.getCellGeometry(A);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(A,C))}for(var F=0;F<f.length;F++)u.setCellStyles(f[F],d[F],[A]);r.push(A)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
+a.firstChild.appendChild(f),mxUtils.br(a.firstChild),a.firstChild.appendChild(m),a.firstChild.appendChild(r),mxUtils.br(a.firstChild),mxUtils.br(a.firstChild));var x=function(C,G){var J=document.createElement("table");J.setAttribute("border","1");J.style.borderCollapse="collapse";J.style.borderStyle="solid";J.setAttribute("cellPadding","8");for(var D=0;D<C;D++)for(var N=J.insertRow(D),Q=0;Q<G;Q++)N.insertCell(-1);return J}(5,5);a.firstChild.appendChild(x);var B=document.createElement("div");B.style.padding=
+"4px";B.innerHTML="1x1";a.firstChild.appendChild(B);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var G=g(C);null!=n&&null!=k&&G&&(b(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
+Menus.prototype.edgeStyleChange=function(a,b,f,d,g,e,k,n){return this.showIconOnly(a.addItem(b,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var B=m[x];if(u.getModel().isEdge(B)){if(k){var C=u.getCellGeometry(B);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(B,C))}for(var G=0;G<f.length;G++)u.setCellStyles(f[G],d[G],[B]);r.push(B)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",f,"values",d,"cells",r))}finally{u.getModel().endUpdate()}}),e,g))};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,f,d,g,e,k,n,u){var m=this.createStyleChangeFunction(f,d);a=a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph;null!=k&&r.cellEditor.isContentEditing()?k():m(n)}),e,g);u&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(f){var d=this.editorUi.editor.graph;d.stopEditing(!1);d.getModel().beginUpdate();try{for(var g=d.getEditableCells(d.getSelectionCells()),e=!1,k=0;k<a.length;k++)if(d.setCellStyles(a[k],b[k],g),a[k]==mxConstants.STYLE_ALIGN&&d.updateLabelElements(g,function(n){n.removeAttribute("align");n.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])e=!0;if(e)for(e=0;e<g.length;e++)0==d.model.getChildCount(g[e])&&
d.autoSizeCell(g[e],!1);null!=f&&f();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",b,"cells",g))}finally{d.getModel().endUpdate()}})};
-Menus.prototype.promptChange=function(a,b,f,d,g,e,k,n,u,m){return a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=d,A=r.getView().getState(r.getSelectionCell());null!=A&&(x=A.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(F){if(null!=F&&0<F.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,F)}finally{r.getModel().endUpdate()}}null!=n&&n(F)}}),mxResources.get("enterValue")+
+Menus.prototype.promptChange=function(a,b,f,d,g,e,k,n,u,m){return a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=d,B=r.getView().getState(r.getSelectionCell());null!=B&&(x=B.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(G){if(null!=G&&0<G.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,G)}finally{r.getModel().endUpdate()}}null!=n&&n(G)}}),mxResources.get("enterValue")+
(0<f.length?" "+f:""),null,null,null,null,function(){null!=n&&null!=m&&n(null)});this.editorUi.showDialog(x.container,300,80,!0,!0);x.init()}),e,u,k)};
Menus.prototype.pickColor=function(a,b,f){var d=this.editorUi,g=d.editor.graph,e=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=b&&g.cellEditor.isContentEditing()){var k=g.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,f||g.shapeForegroundColor,mxUtils.bind(this,function(u){g.cellEditor.restoreSelection(k);document.execCommand(b,!1,u!=mxConstants.NONE?u:"transparent");var m={forecolor:mxConstants.STYLE_FONTCOLOR,
backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[b];null!=m&&d.fireEvent(new mxEventObject("styleChanged","keys",[m],"values",[u],"cells",[g.cellEditor.getEditingCell()]))}),function(){g.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,e,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;f=g.getView().getState(g.getSelectionCell());var n=mxConstants.NONE;null!=f&&(n=f.style[a]||n);n==mxConstants.NONE?
@@ -3949,9 +3949,9 @@ this.addSeparator();d=this.addMenuFunction("",mxResources.get("insert"),!0,mxUti
!1,mxUtils.bind(this,function(e){var k=b.getSelectedElement(),n=b.getParentByNames(k,["TD","TH"],b.cellEditor.text2),u=b.getParentByName(k,"TR",b.cellEditor.text2);if(null==u)this.editorUi.menus.addInsertTableItem(e);else{var m=b.getParentByName(u,"TABLE",b.cellEditor.text2);k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex:0))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnbefore");k.setAttribute("title",mxResources.get("insertColumnBefore"));
k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex+1:-1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnafter");k.setAttribute("title",mxResources.get("insertColumnAfter"));k=e.addItem("Delete column",null,mxUtils.bind(this,function(){if(null!=n)try{b.deleteColumn(m,n.cellIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deletecolumn");k.setAttribute("title",mxResources.get("deleteColumn"));
k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowbefore");k.setAttribute("title",mxResources.get("insertRowBefore"));k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex+1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowafter");k.setAttribute("title",mxResources.get("insertRowAfter"));k=e.addItem("",
-null,mxUtils.bind(this,function(){try{b.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,
-function(x){null==x||x==mxConstants.NONE?(m.removeAttribute("border"),m.style.border="",m.style.borderCollapse=""):(m.setAttribute("border","1"),m.style.border="1px solid "+x,m.style.borderCollapse="collapse")})}),null,"geIcon geSprite geSprite-strokecolor");k.setAttribute("title",mxResources.get("borderColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+
-("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,function(x){m.style.backgroundColor=null==x||x==mxConstants.NONE?"":x})}),null,"geIcon geSprite geSprite-fillcolor");k.setAttribute("title",mxResources.get("backgroundColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.getAttribute("cellPadding")||0;r=new FilenameDialog(this.editorUi,r,mxResources.get("apply"),mxUtils.bind(this,function(x){null!=x&&0<x.length?m.setAttribute("cellPadding",
+null,mxUtils.bind(this,function(){try{b.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,B,C,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(r,
+function(x){null==x||x==mxConstants.NONE?(m.removeAttribute("border"),m.style.border="",m.style.borderCollapse=""):(m.setAttribute("border","1"),m.style.border="1px solid "+x,m.style.borderCollapse="collapse")})}),null,"geIcon geSprite geSprite-strokecolor");k.setAttribute("title",mxResources.get("borderColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,B,C,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+
+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(r,function(x){m.style.backgroundColor=null==x||x==mxConstants.NONE?"":x})}),null,"geIcon geSprite geSprite-fillcolor");k.setAttribute("title",mxResources.get("backgroundColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.getAttribute("cellPadding")||0;r=new FilenameDialog(this.editorUi,r,mxResources.get("apply"),mxUtils.bind(this,function(x){null!=x&&0<x.length?m.setAttribute("cellPadding",
x):m.removeAttribute("cellPadding")}),mxResources.get("spacing"));this.editorUi.showDialog(r.container,300,80,!0,!0);r.init()}),null,"geIcon geSprite geSprite-fit");k.setAttribute("title",mxResources.get("spacing"));k=e.addItem("",null,mxUtils.bind(this,function(){m.setAttribute("align","left")}),null,"geIcon geSprite geSprite-left");k.setAttribute("title",mxResources.get("left"));k=e.addItem("",null,mxUtils.bind(this,function(){m.setAttribute("align","center")}),null,"geIcon geSprite geSprite-center");
k.setAttribute("title",mxResources.get("center"));k=e.addItem("",null,mxUtils.bind(this,function(){m.setAttribute("align","right")}),null,"geIcon geSprite geSprite-right");k.setAttribute("title",mxResources.get("right"))}}));g.style.position="relative";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.width="30px";g.innerText="";f=document.createElement("div");f.className="geSprite geSprite-table";f.style.marginLeft="-2px";g.appendChild(f);this.appendDropDownImageHtml(g);EditorUi.compactUi&&
(g.getElementsByTagName("img")[0].style.left="22px",g.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,b,f,d,g,e,k){var n=this.editorUi.menus.get(d),u=this.addMenuFunction(a,b,f,function(){n.funct.apply(n,arguments)},g,e);k||"function"!==typeof u.setEnabled||n.addListener("stateChanged",function(){u.setEnabled(n.enabled)});return u};
@@ -3961,90 +3961,90 @@ Toolbar.prototype.addButton=function(a,b,f,d){a=this.createButton(a);d=null!=d?d
Toolbar.prototype.addClickHandler=function(a,b){null!=b&&(mxEvent.addListener(a,"click",function(f){a.enabled&&b(f);mxEvent.consume(f)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(f){f.preventDefault()})))};Toolbar.prototype.createButton=function(a){var b=document.createElement("a");b.className="geButton";var f=document.createElement("div");null!=a&&(f.className="geSprite "+a);b.appendChild(f);return b};
Toolbar.prototype.createLabel=function(a,b){b=document.createElement("a");b.className="geLabel";mxUtils.write(b,a);return b};
Toolbar.prototype.addMenuHandler=function(a,b,f,d){if(null!=f){var g=this.editorUi.editor.graph,e=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(n){if(k&&(null==a.enabled||a.enabled)){g.popupMenuHandler.hideMenu();e=new mxPopupMenu(f);e.div.className+=" geToolbarMenu";e.showDisabled=d;e.labels=b;e.autoExpand=!0;!b&&e.div.scrollHeight>e.div.clientHeight&&(e.div.style.width="40px");e.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(e,arguments);this.editorUi.resetCurrentMenu();
-e.destroy()});var u=mxUtils.getOffset(a);e.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(e,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==e||null==e.div||null==e.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,f,d){function g(){var K=k.value;/(^#?[a-zA-Z0-9]*$)/.test(K)?("none"!=K&&"#"!=
-K.charAt(0)&&(K="#"+K),ColorDialog.addRecentColor("none"!=K?K.substring(1):K,12),n(K),a.hideDialog()):a.handleError({message:mxResources.get("invalidInput")})}function e(){var K=r(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);K.style.marginBottom="8px";return K}this.editorUi=a;var k=document.createElement("input");k.style.marginBottom="10px";mxClient.IS_IE&&(k.style.marginTop="10px",document.body.appendChild(k));var n=null!=f?f:this.createApplyFunction();this.init=
-function(){mxClient.IS_TOUCH||k.focus()};var u=new mxJSColor.color(k);u.pickerOnfocus=!1;u.showPicker();f=document.createElement("div");mxJSColor.picker.box.style.position="relative";mxJSColor.picker.box.style.width="230px";mxJSColor.picker.box.style.height="100px";mxJSColor.picker.box.style.paddingBottom="10px";f.appendChild(mxJSColor.picker.box);var m=document.createElement("center"),r=mxUtils.bind(this,function(K,D,O,Q){D=null!=D?D:12;var R=document.createElement("table");R.style.borderCollapse=
-"collapse";R.setAttribute("cellspacing","0");R.style.marginBottom="20px";R.style.cellSpacing="0px";R.style.marginLeft="1px";var P=document.createElement("tbody");R.appendChild(P);for(var Z=K.length/D,T=0;T<Z;T++){for(var U=document.createElement("tr"),fa=0;fa<D;fa++)mxUtils.bind(this,function(ha){var ba=document.createElement("td");ba.style.border="0px solid black";ba.style.padding="0px";ba.style.width="16px";ba.style.height="16px";null==ha&&(ha=O);if(null!=ha){ba.style.borderWidth="1px";"none"==
-ha?ba.style.background="url('"+Dialog.prototype.noColorImage+"')":ba.style.backgroundColor="#"+ha;var qa=this.colorNames[ha.toUpperCase()];null!=qa&&ba.setAttribute("title",qa)}U.appendChild(ba);null!=ha&&(ba.style.cursor="pointer",mxEvent.addListener(ba,"click",function(){"none"==ha?(u.fromString("ffffff"),k.value="none"):u.fromString(ha)}),mxEvent.addListener(ba,"dblclick",g))})(K[T*D+fa]);P.appendChild(U)}Q&&(K=document.createElement("td"),K.setAttribute("title",mxResources.get("reset")),K.style.border=
-"1px solid black",K.style.padding="0px",K.style.width="16px",K.style.height="16px",K.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",K.style.backgroundPosition="center center",K.style.backgroundRepeat="no-repeat",K.style.cursor="pointer",U.appendChild(K),mxEvent.addListener(K,"click",function(){ColorDialog.resetRecentColors();R.parentNode.replaceChild(e(),R)}));m.appendChild(R);return R});f.appendChild(k);if(mxClient.IS_IE||mxClient.IS_IE11)k.style.width="216px";else{k.style.width=
-"182px";var x=document.createElement("input");x.setAttribute("type","color");x.style.visibility="hidden";x.style.width="0px";x.style.height="0px";x.style.border="none";x.style.marginLeft="2px";f.style.whiteSpace="nowrap";f.appendChild(x);f.appendChild(mxUtils.button("...",function(){document.activeElement==x?k.focus():(x.value="#"+k.value,x.click())}));mxEvent.addListener(x,"input",function(){u.fromString(x.value.substring(1))})}mxUtils.br(f);e();var A=r(this.presetColors);A.style.marginBottom="8px";
-A=r(this.defaultColors);A.style.marginBottom="16px";f.appendChild(m);A=document.createElement("div");A.style.textAlign="right";A.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});C.className="geBtn";a.editor.cancelFirst&&A.appendChild(C);var F=mxUtils.button(mxResources.get("apply"),g);F.className="geBtn gePrimaryBtn";A.appendChild(F);a.editor.cancelFirst||A.appendChild(C);null!=b&&("none"==b?(u.fromString("ffffff"),k.value="none"):u.fromString(b));
-f.appendChild(A);this.picker=u;this.colorInput=k;mxEvent.addListener(f,"keydown",function(K){27==K.keyCode&&(a.hideDialog(),null!=d&&d(),mxEvent.consume(K))});this.container=f};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(" ");
+e.destroy()});var u=mxUtils.getOffset(a);e.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(e,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==e||null==e.div||null==e.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,f,d){function g(){var J=k.value;/(^#?[a-zA-Z0-9]*$)/.test(J)?("none"!=J&&"#"!=
+J.charAt(0)&&(J="#"+J),ColorDialog.addRecentColor("none"!=J?J.substring(1):J,12),n(J),a.hideDialog()):a.handleError({message:mxResources.get("invalidInput")})}function e(){var J=r(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);J.style.marginBottom="8px";return J}this.editorUi=a;var k=document.createElement("input");k.style.marginBottom="10px";mxClient.IS_IE&&(k.style.marginTop="10px",document.body.appendChild(k));var n=null!=f?f:this.createApplyFunction();this.init=
+function(){mxClient.IS_TOUCH||k.focus()};var u=new mxJSColor.color(k);u.pickerOnfocus=!1;u.showPicker();f=document.createElement("div");mxJSColor.picker.box.style.position="relative";mxJSColor.picker.box.style.width="230px";mxJSColor.picker.box.style.height="100px";mxJSColor.picker.box.style.paddingBottom="10px";f.appendChild(mxJSColor.picker.box);var m=document.createElement("center"),r=mxUtils.bind(this,function(J,D,N,Q){D=null!=D?D:12;var R=document.createElement("table");R.style.borderCollapse=
+"collapse";R.setAttribute("cellspacing","0");R.style.marginBottom="20px";R.style.cellSpacing="0px";R.style.marginLeft="1px";var P=document.createElement("tbody");R.appendChild(P);for(var Z=J.length/D,U=0;U<Z;U++){for(var V=document.createElement("tr"),ia=0;ia<D;ia++)mxUtils.bind(this,function(ha){var ba=document.createElement("td");ba.style.border="0px solid black";ba.style.padding="0px";ba.style.width="16px";ba.style.height="16px";null==ha&&(ha=N);if(null!=ha){ba.style.borderWidth="1px";"none"==
+ha?ba.style.background="url('"+Dialog.prototype.noColorImage+"')":ba.style.backgroundColor="#"+ha;var qa=this.colorNames[ha.toUpperCase()];null!=qa&&ba.setAttribute("title",qa)}V.appendChild(ba);null!=ha&&(ba.style.cursor="pointer",mxEvent.addListener(ba,"click",function(){"none"==ha?(u.fromString("ffffff"),k.value="none"):u.fromString(ha)}),mxEvent.addListener(ba,"dblclick",g))})(J[U*D+ia]);P.appendChild(V)}Q&&(J=document.createElement("td"),J.setAttribute("title",mxResources.get("reset")),J.style.border=
+"1px solid black",J.style.padding="0px",J.style.width="16px",J.style.height="16px",J.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",J.style.backgroundPosition="center center",J.style.backgroundRepeat="no-repeat",J.style.cursor="pointer",V.appendChild(J),mxEvent.addListener(J,"click",function(){ColorDialog.resetRecentColors();R.parentNode.replaceChild(e(),R)}));m.appendChild(R);return R});f.appendChild(k);if(mxClient.IS_IE||mxClient.IS_IE11)k.style.width="216px";else{k.style.width=
+"182px";var x=document.createElement("input");x.setAttribute("type","color");x.style.visibility="hidden";x.style.width="0px";x.style.height="0px";x.style.border="none";x.style.marginLeft="2px";f.style.whiteSpace="nowrap";f.appendChild(x);f.appendChild(mxUtils.button("...",function(){document.activeElement==x?k.focus():(x.value="#"+k.value,x.click())}));mxEvent.addListener(x,"input",function(){u.fromString(x.value.substring(1))})}mxUtils.br(f);e();var B=r(this.presetColors);B.style.marginBottom="8px";
+B=r(this.defaultColors);B.style.marginBottom="16px";f.appendChild(m);B=document.createElement("div");B.style.textAlign="right";B.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});C.className="geBtn";a.editor.cancelFirst&&B.appendChild(C);var G=mxUtils.button(mxResources.get("apply"),g);G.className="geBtn gePrimaryBtn";B.appendChild(G);a.editor.cancelFirst||B.appendChild(C);null!=b&&("none"==b?(u.fromString("ffffff"),k.value="none"):u.fromString(b));
+f.appendChild(B);this.picker=u;this.colorInput=k;mxEvent.addListener(f,"keydown",function(J){27==J.keyCode&&(a.hideDialog(),null!=d&&d(),mxEvent.consume(J))});this.container=f};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 f=document.createElement("h3");mxUtils.write(f,mxResources.get("about")+" GraphEditor");b.appendChild(f);f=document.createElement("img");f.style.border="0px";f.setAttribute("width","176");f.setAttribute("width","151");f.setAttribute("src",IMAGE_PATH+"/logo.png");b.appendChild(f);mxUtils.br(b);mxUtils.write(b,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(b);f=document.createElement("a");f.setAttribute("href",
-"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");b.appendChild(f);mxUtils.br(b);mxUtils.br(b);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";b.appendChild(f);this.container=b},TextareaDialog=function(a,b,f,d,g,e,k,n,u,m,r,x,A,C,F){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
-n.style.position="absolute";n.style.left="0px";n.style.right="0px";var K=n.cloneNode(!1),D=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";K.style.top="20px";K.style.bottom="64px";D.style.bottom="0px";D.style.height="60px";D.style.textAlign="center";mxUtils.write(n,b);k.appendChild(n);k.appendChild(K);k.appendChild(D);null!=F&&n.appendChild(F);var O=document.createElement("textarea");r&&O.setAttribute("wrap","off");O.setAttribute("spellcheck","false");O.setAttribute("autocorrect","off");O.setAttribute("autocomplete",
-"off");O.setAttribute("autocapitalize","off");mxUtils.write(O,f||"");O.style.resize="none";O.style.outline="none";O.style.position="absolute";O.style.boxSizing="border-box";O.style.top="0px";O.style.left="0px";O.style.height="100%";O.style.width="100%";this.textarea=O;this.init=function(){O.focus();O.scrollTop=0};K.appendChild(O);null!=A&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(A)}),b.className="geBtn",D.appendChild(b));if(null!=C)for(b=0;b<C.length;b++)(function(R,
-P,Z){R=mxUtils.button(R,function(T){P(T,O)});null!=Z&&R.setAttribute("title",Z);R.className="geBtn";D.appendChild(R)})(C[b][0],C[b][1],C[b][2]);e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});e.setAttribute("title","Escape");e.className="geBtn";a.editor.cancelFirst&&D.appendChild(e);null!=u&&u(D,O);if(null!=d){var Q=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();d(O.value)});Q.setAttribute("title","Ctrl+Enter");Q.className="geBtn gePrimaryBtn";
-D.appendChild(Q);mxEvent.addListener(O,"keypress",function(R){13==R.keyCode&&mxEvent.isControlDown(R)&&Q.click()})}a.editor.cancelFirst||D.appendChild(e);this.container=k},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
+"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");b.appendChild(f);mxUtils.br(b);mxUtils.br(b);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";b.appendChild(f);this.container=b},TextareaDialog=function(a,b,f,d,g,e,k,n,u,m,r,x,B,C,G){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
+n.style.position="absolute";n.style.left="0px";n.style.right="0px";var J=n.cloneNode(!1),D=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";J.style.top="20px";J.style.bottom="64px";D.style.bottom="0px";D.style.height="60px";D.style.textAlign="center";mxUtils.write(n,b);k.appendChild(n);k.appendChild(J);k.appendChild(D);null!=G&&n.appendChild(G);var N=document.createElement("textarea");r&&N.setAttribute("wrap","off");N.setAttribute("spellcheck","false");N.setAttribute("autocorrect","off");N.setAttribute("autocomplete",
+"off");N.setAttribute("autocapitalize","off");mxUtils.write(N,f||"");N.style.resize="none";N.style.outline="none";N.style.position="absolute";N.style.boxSizing="border-box";N.style.top="0px";N.style.left="0px";N.style.height="100%";N.style.width="100%";this.textarea=N;this.init=function(){N.focus();N.scrollTop=0};J.appendChild(N);null!=B&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(B)}),b.className="geBtn",D.appendChild(b));if(null!=C)for(b=0;b<C.length;b++)(function(R,
+P,Z){R=mxUtils.button(R,function(U){P(U,N)});null!=Z&&R.setAttribute("title",Z);R.className="geBtn";D.appendChild(R)})(C[b][0],C[b][1],C[b][2]);e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});e.setAttribute("title","Escape");e.className="geBtn";a.editor.cancelFirst&&D.appendChild(e);null!=u&&u(D,N);if(null!=d){var Q=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();d(N.value)});Q.setAttribute("title","Ctrl+Enter");Q.className="geBtn gePrimaryBtn";
+D.appendChild(Q);mxEvent.addListener(N,"keypress",function(R){13==R.keyCode&&mxEvent.isControlDown(R)&&Q.click()})}a.editor.cancelFirst||D.appendChild(e);this.container=k},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
f.style.resize="none";f.style.width="600px";f.style.height="360px";f.style.marginBottom="16px";f.value=mxUtils.getPrettyXml(a.editor.getGraphXml());b.appendChild(f);this.init=function(){f.focus()};Graph.fileSupport&&(f.addEventListener("dragover",function(k){k.stopPropagation();k.preventDefault()},!1),f.addEventListener("drop",function(k){k.stopPropagation();k.preventDefault();if(0<k.dataTransfer.files.length){k=k.dataTransfer.files[0];var n=new FileReader;n.onload=function(u){f.value=u.target.result};
n.readAsText(k)}else f.value=a.extractGraphModelFromEvent(k)},!1));var d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&b.appendChild(d);var g=document.createElement("select");g.style.width="180px";g.className="geBtn";if(a.editor.graph.isEnabled()){var e=document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));g.appendChild(e)}e=document.createElement("option");e.setAttribute("value",
"new");mxUtils.write(e,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&g.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),g.appendChild(e));b.appendChild(g);e=mxUtils.button(mxResources.get("ok"),function(){var k=Graph.zapGremlins(mxUtils.trim(f.value)),n=null;if("new"==g.value)a.hideDialog(),a.editor.editAsNew(k);else if("replace"==g.value){a.editor.graph.model.beginUpdate();
try{a.editor.setGraphXml(mxUtils.parseXml(k).documentElement),a.hideDialog()}catch(x){n=x}finally{a.editor.graph.model.endUpdate()}}else if("import"==g.value){a.editor.graph.model.beginUpdate();try{var u=mxUtils.parseXml(k),m=new mxGraphModel;(new mxCodec(u)).decode(u.documentElement,m);var r=m.getChildren(m.getChildAt(m.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(r));a.hideDialog()}catch(x){n=x}finally{a.editor.graph.model.endUpdate()}}null!=n&&mxUtils.alert(n.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 U=r.value,fa=U.lastIndexOf(".");r.value=0<fa?U.substring(0,fa+1)+x.value:U+"."+x.value;"xml"===x.value?(A.setAttribute("disabled","true"),C.setAttribute("disabled","true"),F.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(A.removeAttribute("disabled"),C.removeAttribute("disabled"),F.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?Q.removeAttribute("disabled"):Q.setAttribute("disabled",
-"disabled");"png"===x.value||"jpg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled","disabled");"png"===x.value?(K.removeAttribute("disabled"),D.removeAttribute("disabled")):(K.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"))}function f(){C.style.backgroundColor=C.value*F.value>MAX_AREA||0>=C.value?"red":"";F.style.backgroundColor=C.value*F.value>MAX_AREA||0>=F.value?"red":""}var d=a.editor.graph,g=d.getGraphBounds(),e=d.view.scale,k=Math.ceil(g.width/
+var ExportDialog=function(a){function b(){var V=r.value,ia=V.lastIndexOf(".");r.value=0<ia?V.substring(0,ia+1)+x.value:V+"."+x.value;"xml"===x.value?(B.setAttribute("disabled","true"),C.setAttribute("disabled","true"),G.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(B.removeAttribute("disabled"),C.removeAttribute("disabled"),G.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?Q.removeAttribute("disabled"):Q.setAttribute("disabled",
+"disabled");"png"===x.value||"jpg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled","disabled");"png"===x.value?(J.removeAttribute("disabled"),D.removeAttribute("disabled")):(J.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"))}function f(){C.style.backgroundColor=C.value*G.value>MAX_AREA||0>=C.value?"red":"";G.style.backgroundColor=C.value*G.value>MAX_AREA||0>=G.value?"red":""}var d=a.editor.graph,g=d.getGraphBounds(),e=d.view.scale,k=Math.ceil(g.width/
e),n=Math.ceil(g.height/e);e=document.createElement("table");var u=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");g=document.createElement("tr");var m=document.createElement("td");m.style.fontSize="10pt";m.style.width="100px";mxUtils.write(m,mxResources.get("filename")+":");g.appendChild(m);var r=document.createElement("input");r.setAttribute("value",a.editor.getOrCreateFilename());r.style.width="180px";m=document.createElement("td");m.appendChild(r);g.appendChild(m);
u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("format")+":");g.appendChild(m);var x=document.createElement("select");x.style.width="180px";m=document.createElement("option");m.setAttribute("value","png");mxUtils.write(m,mxResources.get("formatPng"));x.appendChild(m);m=document.createElement("option");ExportDialog.showGifOption&&(m.setAttribute("value","gif"),mxUtils.write(m,mxResources.get("formatGif")),x.appendChild(m));
m=document.createElement("option");m.setAttribute("value","jpg");mxUtils.write(m,mxResources.get("formatJpg"));x.appendChild(m);m=document.createElement("option");m.setAttribute("value","pdf");mxUtils.write(m,mxResources.get("formatPdf"));x.appendChild(m);m=document.createElement("option");m.setAttribute("value","svg");mxUtils.write(m,mxResources.get("formatSvg"));x.appendChild(m);ExportDialog.showXmlOption&&(m=document.createElement("option"),m.setAttribute("value","xml"),mxUtils.write(m,mxResources.get("formatXml")),
-x.appendChild(m));m=document.createElement("td");m.appendChild(x);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("zoom")+" (%):");g.appendChild(m);var A=document.createElement("input");A.setAttribute("type","number");A.setAttribute("value","100");A.style.width="180px";m=document.createElement("td");m.appendChild(A);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");
-m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("width")+":");g.appendChild(m);var C=document.createElement("input");C.setAttribute("value",k);C.style.width="180px";m=document.createElement("td");m.appendChild(C);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("height")+":");g.appendChild(m);var F=document.createElement("input");F.setAttribute("value",n);F.style.width="180px";m=document.createElement("td");
-m.appendChild(F);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("dpi")+":");g.appendChild(m);var K=document.createElement("select");K.style.width="180px";m=document.createElement("option");m.setAttribute("value","100");mxUtils.write(m,"100dpi");K.appendChild(m);m=document.createElement("option");m.setAttribute("value","200");mxUtils.write(m,"200dpi");K.appendChild(m);m=document.createElement("option");
-m.setAttribute("value","300");mxUtils.write(m,"300dpi");K.appendChild(m);m=document.createElement("option");m.setAttribute("value","400");mxUtils.write(m,"400dpi");K.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom"));K.appendChild(m);var D=document.createElement("input");D.style.width="180px";D.style.display="none";D.setAttribute("value","100");D.setAttribute("type","number");D.setAttribute("min","50");D.setAttribute("step",
-"50");var O=!1;mxEvent.addListener(K,"change",function(){"custom"==this.value?(this.style.display="none",D.style.display="",D.focus()):(D.value=this.value,O||(A.value=this.value))});mxEvent.addListener(D,"change",function(){var U=parseInt(D.value);isNaN(U)||0>=U?D.style.backgroundColor="red":(D.style.backgroundColor="",O||(A.value=U))});m=document.createElement("td");m.appendChild(K);m.appendChild(D);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize=
+x.appendChild(m));m=document.createElement("td");m.appendChild(x);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("zoom")+" (%):");g.appendChild(m);var B=document.createElement("input");B.setAttribute("type","number");B.setAttribute("value","100");B.style.width="180px";m=document.createElement("td");m.appendChild(B);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");
+m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("width")+":");g.appendChild(m);var C=document.createElement("input");C.setAttribute("value",k);C.style.width="180px";m=document.createElement("td");m.appendChild(C);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("height")+":");g.appendChild(m);var G=document.createElement("input");G.setAttribute("value",n);G.style.width="180px";m=document.createElement("td");
+m.appendChild(G);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("dpi")+":");g.appendChild(m);var J=document.createElement("select");J.style.width="180px";m=document.createElement("option");m.setAttribute("value","100");mxUtils.write(m,"100dpi");J.appendChild(m);m=document.createElement("option");m.setAttribute("value","200");mxUtils.write(m,"200dpi");J.appendChild(m);m=document.createElement("option");
+m.setAttribute("value","300");mxUtils.write(m,"300dpi");J.appendChild(m);m=document.createElement("option");m.setAttribute("value","400");mxUtils.write(m,"400dpi");J.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom"));J.appendChild(m);var D=document.createElement("input");D.style.width="180px";D.style.display="none";D.setAttribute("value","100");D.setAttribute("type","number");D.setAttribute("min","50");D.setAttribute("step",
+"50");var N=!1;mxEvent.addListener(J,"change",function(){"custom"==this.value?(this.style.display="none",D.style.display="",D.focus()):(D.value=this.value,N||(B.value=this.value))});mxEvent.addListener(D,"change",function(){var V=parseInt(D.value);isNaN(V)||0>=V?D.style.backgroundColor="red":(D.style.backgroundColor="",N||(B.value=V))});m=document.createElement("td");m.appendChild(J);m.appendChild(D);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize=
"10pt";mxUtils.write(m,mxResources.get("background")+":");g.appendChild(m);var Q=document.createElement("input");Q.setAttribute("type","checkbox");Q.checked=null==d.background||d.background==mxConstants.NONE;m=document.createElement("td");m.appendChild(Q);mxUtils.write(m,mxResources.get("transparent"));g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("grid")+":");g.appendChild(m);var R=document.createElement("input");
R.setAttribute("type","checkbox");R.checked=!1;m=document.createElement("td");m.appendChild(R);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("borderWidth")+":");g.appendChild(m);var P=document.createElement("input");P.setAttribute("type","number");P.setAttribute("value",ExportDialog.lastBorderValue);P.style.width="180px";m=document.createElement("td");m.appendChild(P);g.appendChild(m);u.appendChild(g);
-e.appendChild(u);mxEvent.addListener(x,"change",b);b();mxEvent.addListener(A,"change",function(){O=!0;var U=Math.max(0,parseFloat(A.value)||100)/100;A.value=parseFloat((100*U).toFixed(2));0<k?(C.value=Math.floor(k*U),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(C,"change",function(){var U=parseInt(C.value)/k;0<U?(A.value=parseFloat((100*U).toFixed(2)),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(F,"change",function(){var U=
-parseInt(F.value)/n;0<U?(A.value=parseFloat((100*U).toFixed(2)),C.value=Math.floor(k*U)):(A.value="100",C.value=k,F.value=n);f()});g=document.createElement("tr");m=document.createElement("td");m.setAttribute("align","right");m.style.paddingTop="22px";m.colSpan=2;var Z=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(A.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var U=r.value,fa=x.value,ha=Math.max(0,parseFloat(A.value)||100)/100,ba=Math.max(0,parseInt(P.value)),
-qa=d.background,I=Math.max(1,parseInt(D.value));if(("svg"==fa||"png"==fa||"pdf"==fa)&&Q.checked)qa=null;else if(null==qa||qa==mxConstants.NONE)qa="#ffffff";ExportDialog.lastBorderValue=ba;ExportDialog.exportFile(a,U,fa,qa,ha,ba,I,R.checked)}}));Z.className="geBtn gePrimaryBtn";var T=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});T.className="geBtn";a.editor.cancelFirst?(m.appendChild(T),m.appendChild(Z)):(m.appendChild(Z),m.appendChild(T));g.appendChild(m);u.appendChild(g);e.appendChild(u);
+e.appendChild(u);mxEvent.addListener(x,"change",b);b();mxEvent.addListener(B,"change",function(){N=!0;var V=Math.max(0,parseFloat(B.value)||100)/100;B.value=parseFloat((100*V).toFixed(2));0<k?(C.value=Math.floor(k*V),G.value=Math.floor(n*V)):(B.value="100",C.value=k,G.value=n);f()});mxEvent.addListener(C,"change",function(){var V=parseInt(C.value)/k;0<V?(B.value=parseFloat((100*V).toFixed(2)),G.value=Math.floor(n*V)):(B.value="100",C.value=k,G.value=n);f()});mxEvent.addListener(G,"change",function(){var V=
+parseInt(G.value)/n;0<V?(B.value=parseFloat((100*V).toFixed(2)),C.value=Math.floor(k*V)):(B.value="100",C.value=k,G.value=n);f()});g=document.createElement("tr");m=document.createElement("td");m.setAttribute("align","right");m.style.paddingTop="22px";m.colSpan=2;var Z=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(B.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var V=r.value,ia=x.value,ha=Math.max(0,parseFloat(B.value)||100)/100,ba=Math.max(0,parseInt(P.value)),
+qa=d.background,O=Math.max(1,parseInt(D.value));if(("svg"==ia||"png"==ia||"pdf"==ia)&&Q.checked)qa=null;else if(null==qa||qa==mxConstants.NONE)qa="#ffffff";ExportDialog.lastBorderValue=ba;ExportDialog.exportFile(a,V,ia,qa,ha,ba,O,R.checked)}}));Z.className="geBtn gePrimaryBtn";var U=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});U.className="geBtn";a.editor.cancelFirst?(m.appendChild(U),m.appendChild(Z)):(m.appendChild(Z),m.appendChild(U));g.appendChild(m);u.appendChild(g);e.appendChild(u);
this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
ExportDialog.exportFile=function(a,b,f,d,g,e,k,n){n=a.editor.graph;if("xml"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,f);else if("svg"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(n.getSvg(d,g,e)),b,f);else{var u=n.getGraphBounds(),m=mxUtils.createXmlDocument(),r=m.createElement("output");m.appendChild(r);m=new mxXmlCanvas2D(r);m.translate(Math.floor((e/g-u.x)/n.view.scale),Math.floor((e/g-u.y)/n.view.scale));m.scale(g/n.view.scale);(new mxImageExport).drawState(n.getView().getState(n.model.root),
m);r="xml="+encodeURIComponent(mxUtils.getXml(r));m=Math.ceil(u.width*g/n.view.scale+2*e);g=Math.ceil(u.height*g/n.view.scale+2*e);r.length<=MAX_REQUEST_SIZE&&m*g<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+f+"&filename="+encodeURIComponent(b)+"&bg="+(null!=d?d:"none")+"&w="+m+"&h="+g+"&"+r+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,b,f,d){b.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(f)+"&format="+d)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
-var EditDataDialog=function(a,b){function f(){0<R.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var d=document.createElement("div"),g=a.editor.graph,e=g.getModel().getValue(b);if(!mxUtils.isNode(e)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",e||"");e=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(T){}var m=new mxForm("properties");m.table.style.width=
-"100%";var r=e.attributes,x=[],A=[],C=0,F=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,K=function(T,U){var fa=document.createElement("div");fa.style.position="relative";fa.style.paddingRight="20px";fa.style.boxSizing="border-box";fa.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
-ha.setAttribute("title",mxResources.get("delete"));ha.style.position="absolute";ha.style.top="4px";ha.style.right="0px";ha.style.margin="0px";ha.style.width="9px";ha.style.height="9px";ha.style.cursor="pointer";ha.appendChild(ba);U=function(qa){return function(){for(var I=0,L=0;L<x.length;L++){if(x[L]==qa){A[L]=null;m.table.deleteRow(I+(null!=F?1:0));break}null!=A[L]&&I++}}}(U);mxEvent.addListener(ha,"click",U);U=T.parentNode;fa.appendChild(T);fa.appendChild(ha);U.appendChild(fa)};k=function(T,U,
-fa){x[T]=U;A[T]=m.addTextarea(x[C]+":",fa,2);A[T].style.width="100%";0<fa.indexOf("\n")&&A[T].setAttribute("rows","2");K(A[T],U);null!=n[U]&&0==n[U].editable&&A[T].setAttribute("disabled","disabled")};u=[];for(var D=g.getModel().getParent(b)==g.getModel().getRoot(),O=0;O<r.length;O++)!D&&"label"==r[O].nodeName||"placeholders"==r[O].nodeName||u.push({name:r[O].nodeName,value:r[O].nodeValue});u.sort(function(T,U){return T.name<U.name?-1:T.name>U.name?1:0});if(null!=F){r=document.createElement("div");
-r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,F);var Q=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(T){mxEvent.isShiftDown(T)&&(T=new FilenameDialog(a,F,mxResources.get("apply"),mxUtils.bind(this,function(U){null!=U&&0<U.length&&U!=F&&(null==g.getModel().getCell(U)?(g.getModel().cellRemoved(b),b.setId(U),F=U,Q.innerHTML=mxUtils.htmlEntities(U),g.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",
-[U])}))}),mxResources.get("id")),a.showDialog(T.container,300,80,!0,!0),T.init())});r.setAttribute("title","Shift+Double Click to Edit ID")}for(O=0;O<u.length;O++)k(C,u[O].name,u[O].value),C++;u=document.createElement("div");u.style.position="absolute";u.style.top="30px";u.style.left="30px";u.style.right="30px";u.style.bottom="80px";u.style.overflowY="auto";u.appendChild(m.table);k=document.createElement("div");k.style.boxSizing="border-box";k.style.paddingRight="160px";k.style.whiteSpace="nowrap";
-k.style.marginTop="6px";k.style.width="100%";var R=document.createElement("input");R.setAttribute("placeholder",mxResources.get("enterPropertyName"));R.setAttribute("type","text");R.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");R.style.boxSizing="border-box";R.style.marginLeft="2px";R.style.width="100%";k.appendChild(R);u.appendChild(k);d.appendChild(u);var P=mxUtils.button(mxResources.get("addProperty"),function(){var T=R.value;if(0<T.length&&"label"!=T&&"placeholders"!=T&&0>T.indexOf(":"))try{var U=
-mxUtils.indexOf(x,T);if(0<=U&&null!=A[U])A[U].focus();else{e.cloneNode(!1).setAttribute(T,"");0<=U&&(x.splice(U,1),A.splice(U,1));x.push(T);var fa=m.addTextarea(T+":","",2);fa.style.width="100%";A.push(fa);K(fa,T);fa.focus()}P.setAttribute("disabled","disabled");R.value=""}catch(ha){mxUtils.alert(ha)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(R,"keypress",function(T){13==T.keyCode&&P.click()});this.init=function(){0<A.length?A[0].focus():R.focus()};P.setAttribute("title",
-mxResources.get("addProperty"));P.setAttribute("disabled","disabled");P.style.textOverflow="ellipsis";P.style.position="absolute";P.style.overflow="hidden";P.style.width="144px";P.style.right="0px";P.className="geBtn";k.appendChild(P);u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});u.setAttribute("title","Escape");u.className="geBtn";var Z=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var T=!1,U=
-0;U<x.length;U++)null==A[U]?e.removeAttribute(x[U]):(e.setAttribute(x[U],A[U].value),T=T||"placeholder"==x[U]&&"1"==e.getAttribute("placeholders"));T&&e.removeAttribute("label");g.getModel().setValue(b,e)}catch(fa){mxUtils.alert(fa)}});Z.setAttribute("title","Ctrl+Enter");Z.className="geBtn gePrimaryBtn";mxEvent.addListener(d,"keypress",function(T){13==T.keyCode&&mxEvent.isControlDown(T)&&Z.click()});mxEvent.addListener(R,"keyup",f);mxEvent.addListener(R,"change",f);k=document.createElement("div");
+var EditDataDialog=function(a,b){function f(){0<R.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var d=document.createElement("div"),g=a.editor.graph,e=g.getModel().getValue(b);if(!mxUtils.isNode(e)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",e||"");e=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(U){}var m=new mxForm("properties");m.table.style.width=
+"100%";var r=e.attributes,x=[],B=[],C=0,G=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,J=function(U,V){var ia=document.createElement("div");ia.style.position="relative";ia.style.paddingRight="20px";ia.style.boxSizing="border-box";ia.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
+ha.setAttribute("title",mxResources.get("delete"));ha.style.position="absolute";ha.style.top="4px";ha.style.right="0px";ha.style.margin="0px";ha.style.width="9px";ha.style.height="9px";ha.style.cursor="pointer";ha.appendChild(ba);V=function(qa){return function(){for(var O=0,S=0;S<x.length;S++){if(x[S]==qa){B[S]=null;m.table.deleteRow(O+(null!=G?1:0));break}null!=B[S]&&O++}}}(V);mxEvent.addListener(ha,"click",V);V=U.parentNode;ia.appendChild(U);ia.appendChild(ha);V.appendChild(ia)};k=function(U,V,
+ia){x[U]=V;B[U]=m.addTextarea(x[C]+":",ia,2);B[U].style.width="100%";0<ia.indexOf("\n")&&B[U].setAttribute("rows","2");J(B[U],V);null!=n[V]&&0==n[V].editable&&B[U].setAttribute("disabled","disabled")};u=[];for(var D=g.getModel().getParent(b)==g.getModel().getRoot(),N=0;N<r.length;N++)!D&&"label"==r[N].nodeName||"placeholders"==r[N].nodeName||u.push({name:r[N].nodeName,value:r[N].nodeValue});u.sort(function(U,V){return U.name<V.name?-1:U.name>V.name?1:0});if(null!=G){r=document.createElement("div");
+r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,G);var Q=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(U){mxEvent.isShiftDown(U)&&(U=new FilenameDialog(a,G,mxResources.get("apply"),mxUtils.bind(this,function(V){null!=V&&0<V.length&&V!=G&&(null==g.getModel().getCell(V)?(g.getModel().cellRemoved(b),b.setId(V),G=V,Q.innerHTML=mxUtils.htmlEntities(V),g.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",
+[V])}))}),mxResources.get("id")),a.showDialog(U.container,300,80,!0,!0),U.init())});r.setAttribute("title","Shift+Double Click to Edit ID")}for(N=0;N<u.length;N++)k(C,u[N].name,u[N].value),C++;u=document.createElement("div");u.style.position="absolute";u.style.top="30px";u.style.left="30px";u.style.right="30px";u.style.bottom="80px";u.style.overflowY="auto";u.appendChild(m.table);k=document.createElement("div");k.style.boxSizing="border-box";k.style.paddingRight="160px";k.style.whiteSpace="nowrap";
+k.style.marginTop="6px";k.style.width="100%";var R=document.createElement("input");R.setAttribute("placeholder",mxResources.get("enterPropertyName"));R.setAttribute("type","text");R.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");R.style.boxSizing="border-box";R.style.marginLeft="2px";R.style.width="100%";k.appendChild(R);u.appendChild(k);d.appendChild(u);var P=mxUtils.button(mxResources.get("addProperty"),function(){var U=R.value;if(0<U.length&&"label"!=U&&"placeholders"!=U&&0>U.indexOf(":"))try{var V=
+mxUtils.indexOf(x,U);if(0<=V&&null!=B[V])B[V].focus();else{e.cloneNode(!1).setAttribute(U,"");0<=V&&(x.splice(V,1),B.splice(V,1));x.push(U);var ia=m.addTextarea(U+":","",2);ia.style.width="100%";B.push(ia);J(ia,U);ia.focus()}P.setAttribute("disabled","disabled");R.value=""}catch(ha){mxUtils.alert(ha)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(R,"keypress",function(U){13==U.keyCode&&P.click()});this.init=function(){0<B.length?B[0].focus():R.focus()};P.setAttribute("title",
+mxResources.get("addProperty"));P.setAttribute("disabled","disabled");P.style.textOverflow="ellipsis";P.style.position="absolute";P.style.overflow="hidden";P.style.width="144px";P.style.right="0px";P.className="geBtn";k.appendChild(P);u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});u.setAttribute("title","Escape");u.className="geBtn";var Z=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var U=!1,V=
+0;V<x.length;V++)null==B[V]?e.removeAttribute(x[V]):(e.setAttribute(x[V],B[V].value),U=U||"placeholder"==x[V]&&"1"==e.getAttribute("placeholders"));U&&e.removeAttribute("label");g.getModel().setValue(b,e)}catch(ia){mxUtils.alert(ia)}});Z.setAttribute("title","Ctrl+Enter");Z.className="geBtn gePrimaryBtn";mxEvent.addListener(d,"keypress",function(U){13==U.keyCode&&mxEvent.isControlDown(U)&&Z.click()});mxEvent.addListener(R,"keyup",f);mxEvent.addListener(R,"change",f);k=document.createElement("div");
k.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))r=document.createElement("span"),r.style.marginRight="10px",D=document.createElement("input"),D.setAttribute("type","checkbox"),D.style.marginRight="6px","1"==e.getAttribute("placeholders")&&(D.setAttribute("checked","checked"),D.defaultChecked=!0),mxEvent.addListener(D,"click",function(){"1"==e.getAttribute("placeholders")?
-e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")}),r.appendChild(D),mxUtils.write(r,mxResources.get("placeholders")),null!=EditDataDialog.placeholderHelpLink&&(D=document.createElement("a"),D.setAttribute("href",EditDataDialog.placeholderHelpLink),D.setAttribute("title",mxResources.get("help")),D.setAttribute("target","_blank"),D.style.marginLeft="8px",D.style.cursor="help",O=document.createElement("img"),mxUtils.setOpacity(O,50),O.style.height="16px",O.style.width="16px",O.setAttribute("border",
-"0"),O.setAttribute("valign","middle"),O.style.marginTop=mxClient.IS_IE11?"0px":"-4px",O.setAttribute("src",Editor.helpImage),D.appendChild(O),r.appendChild(D)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(Z)):(k.appendChild(Z),k.appendChild(u));d.appendChild(k);this.container=d};EditDataDialog.getDisplayIdForCell=function(a,b){var f=null;null!=a.editor.graph.getModel().getParent(b)&&(f=b.getId());return f};EditDataDialog.placeholderHelpLink=null;
+e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")}),r.appendChild(D),mxUtils.write(r,mxResources.get("placeholders")),null!=EditDataDialog.placeholderHelpLink&&(D=document.createElement("a"),D.setAttribute("href",EditDataDialog.placeholderHelpLink),D.setAttribute("title",mxResources.get("help")),D.setAttribute("target","_blank"),D.style.marginLeft="8px",D.style.cursor="help",N=document.createElement("img"),mxUtils.setOpacity(N,50),N.style.height="16px",N.style.width="16px",N.setAttribute("border",
+"0"),N.setAttribute("valign","middle"),N.style.marginTop=mxClient.IS_IE11?"0px":"-4px",N.setAttribute("src",Editor.helpImage),D.appendChild(N),r.appendChild(D)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(Z)):(k.appendChild(Z),k.appendChild(u));d.appendChild(k);this.container=d};EditDataDialog.getDisplayIdForCell=function(a,b){var f=null;null!=a.editor.graph.getModel().getParent(b)&&(f=b.getId());return f};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,b,f,d){var g=document.createElement("div");mxUtils.write(g,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 k=document.createElement("input");k.setAttribute("value",b);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.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(){k.value="";k.focus()});e.appendChild(k);e.appendChild(b);g.appendChild(e);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};e=document.createElement("div");e.style.marginTop="18px";e.style.textAlign="right";mxEvent.addListener(k,"keypress",function(n){13==n.keyCode&&(a.hideDialog(),d(k.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
b.className="geBtn";a.editor.cancelFirst&&e.appendChild(b);f=mxUtils.button(f,function(){a.hideDialog();d(k.value)});f.className="geBtn gePrimaryBtn";e.appendChild(f);a.editor.cancelFirst||e.appendChild(b);g.appendChild(e);this.container=g},OutlineWindow=function(a,b,f,d,g){var e=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,b,f,d,g,!0,!0);this.window.minimumSize=
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(m,r){var x=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;m=Math.max(0,Math.min(m,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));r=Math.max(0,Math.min(r,x-this.table.clientHeight-("1"==urlParams.sketch?
3:48)));this.getX()==m&&this.getY()==r||mxWindow.prototype.setLocation.apply(this,arguments)};var n=mxUtils.bind(this,function(){var m=this.window.getX(),r=this.window.getY();this.window.setLocation(m,r)});mxEvent.addListener(window,"resize",n);var u=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",n);this.window.destroy();u.destroy()};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit();u.setSuspended(!1)}));this.window.addListener(mxEvent.HIDE,
-mxUtils.bind(this,function(){u.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){u.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){u.setSuspended(!0)}));u.init(k);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(m,r){for(var x=!1,A=mxEvent.getSource(m);null!=A;){if(A==u.svg){x=!0;break}A=A.parentNode}x&&(x=e.zoomFactor,null!=m.deltaY&&Math.round(m.deltaY)!=m.deltaY&&(x=1+Math.abs(m.deltaY)/
-20*(x-1)),e.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,b,f,d,g){function e(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=T.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(U):null!=
-U.parentNode&&U.parentNode.removeChild(U)}function n(){function ha(I,L,H,S){var V=document.createElement("div");V.className="geToolbarContainer";T.put(H,V);V.style.overflow="hidden";V.style.position="relative";V.style.padding="4px";V.style.height="22px";V.style.display="block";V.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";V.style.borderWidth="0px 0px 1px 0px";V.style.borderColor="#c3c3c3";V.style.borderStyle="solid";V.style.whiteSpace="nowrap";V.setAttribute("title",
-L);var ea=document.createElement("div");ea.style.display="inline-block";ea.style.width="100%";ea.style.textOverflow="ellipsis";ea.style.overflow="hidden";mxEvent.addListener(V,"dragover",function(W){W.dataTransfer.dropEffect="move";C=I;W.stopPropagation();W.preventDefault()});mxEvent.addListener(V,"dragstart",function(W){A=V;mxClient.IS_FF&&W.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(V,"dragend",function(W){null!=A&&null!=C&&u.addCell(H,u.model.root,C);C=A=null;W.stopPropagation();
-W.preventDefault()});var ka=document.createElement("img");ka.setAttribute("draggable","false");ka.setAttribute("align","top");ka.setAttribute("border","0");ka.style.width="16px";ka.style.padding="0px 6px 0 4px";ka.style.marginTop="2px";ka.style.cursor="pointer";ka.setAttribute("title",mxResources.get(u.model.isVisible(H)?"hide":"show"));u.model.isVisible(H)?(ka.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(V,75)):(ka.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(V,25));Editor.isDarkMode()&&
-(ka.style.filter="invert(100%)");ea.appendChild(ka);mxEvent.addListener(ka,"click",function(W){u.model.setVisible(H,!u.model.isVisible(H));mxEvent.consume(W)});ka=document.createElement("img");ka.setAttribute("draggable","false");ka.setAttribute("align","top");ka.setAttribute("border","0");ka.style.width="16px";ka.style.padding="0px 6px 0 0";ka.style.marginTop="2px";ka.setAttribute("title",mxResources.get("lockUnlock"));var wa=u.getCurrentCellStyle(H);"1"==mxUtils.getValue(wa,"locked","0")?(ka.setAttribute("src",
-Editor.lockedImage),mxUtils.setOpacity(ka,75)):(ka.setAttribute("src",Editor.unlockedImage),mxUtils.setOpacity(ka,25));Editor.isDarkMode()&&(ka.style.filter="invert(100%)");u.isEnabled()&&(ka.style.cursor="pointer");mxEvent.addListener(ka,"click",function(W){if(u.isEnabled()){var aa=null;u.getModel().beginUpdate();try{aa="1"==mxUtils.getValue(wa,"locked","0")?null:"1",u.setCellStyles("locked",aa,[H])}finally{u.getModel().endUpdate()}"1"==aa&&u.removeSelectionCells(u.getModel().getDescendants(H));
-mxEvent.consume(W)}});ea.appendChild(ka);ka=document.createElement("span");mxUtils.write(ka,L);ka.style.display="block";ka.style.whiteSpace="nowrap";ka.style.overflow="hidden";ka.style.textOverflow="ellipsis";ka.style.position="absolute";ka.style.left="52px";ka.style.right="8px";ka.style.top="8px";ea.appendChild(ka);V.appendChild(ea);if(u.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_IE&&10>document.documentMode)L=document.createElement("div"),L.style.display="block",L.style.textAlign=
-"right",L.style.whiteSpace="nowrap",L.style.position="absolute",L.style.right="16px",L.style.top="6px",0<I&&(ea=document.createElement("a"),ea.setAttribute("title",mxResources.get("toBack")),ea.className="geButton",ea.style.cssFloat="none",ea.innerHTML="&#9660;",ea.style.width="14px",ea.style.height="14px",ea.style.fontSize="14px",ea.style.margin="0px",ea.style.marginTop="-1px",L.appendChild(ea),mxEvent.addListener(ea,"click",function(W){u.isEnabled()&&u.addCell(H,u.model.root,I-1);mxEvent.consume(W)})),
-0<=I&&I<F-1&&(ea=document.createElement("a"),ea.setAttribute("title",mxResources.get("toFront")),ea.className="geButton",ea.style.cssFloat="none",ea.innerHTML="&#9650;",ea.style.width="14px",ea.style.height="14px",ea.style.fontSize="14px",ea.style.margin="0px",ea.style.marginTop="-1px",L.appendChild(ea),mxEvent.addListener(ea,"click",function(W){u.isEnabled()&&u.addCell(H,u.model.root,I+1);mxEvent.consume(W)})),V.appendChild(L);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(V.setAttribute("draggable",
-"true"),V.style.cursor="move")}mxEvent.addListener(V,"dblclick",function(W){var aa=mxEvent.getSource(W).nodeName;"INPUT"!=aa&&"IMG"!=aa&&(e(H),mxEvent.consume(W))});u.getDefaultParent()==H&&(V.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",V.style.fontWeight=u.isEnabled()?"bold":"",K=H);mxEvent.addListener(V,"click",function(W){u.isEnabled()&&(u.setDefaultParent(S),u.view.setCurrentRoot(null),mxEvent.isShiftDown(W)&&u.setSelectionCells(H.children),mxEvent.consume(W))});x.appendChild(V)}
-F=u.model.getChildCount(u.model.root);x.innerText="";T.clear();for(var ba=F-1;0<=ba;ba--)mxUtils.bind(this,function(I){ha(ba,u.convertValueToString(I)||mxResources.get("background"),I,I)})(u.model.getChildAt(u.model.root,ba));var qa=u.convertValueToString(K)||mxResources.get("background");Q.setAttribute("title",mxResources.get("removeIt",[qa]));Z.setAttribute("title",mxResources.get("duplicateIt",[qa]));u.isSelectionEmpty()&&(R.className="geButton mxDisabled");k()}var u=a.editor.graph,m=document.createElement("div");
+mxUtils.bind(this,function(){u.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){u.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){u.setSuspended(!0)}));u.init(k);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(m,r){for(var x=!1,B=mxEvent.getSource(m);null!=B;){if(B==u.svg){x=!0;break}B=B.parentNode}x&&(x=e.zoomFactor,null!=m.deltaY&&Math.round(m.deltaY)!=m.deltaY&&(x=1+Math.abs(m.deltaY)/
+20*(x-1)),e.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,b,f,d,g){function e(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=U.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(V):null!=
+V.parentNode&&V.parentNode.removeChild(V)}function n(){function ha(O,S,F,L){var T=document.createElement("div");T.className="geToolbarContainer";U.put(F,T);T.style.overflow="hidden";T.style.position="relative";T.style.padding="4px";T.style.height="22px";T.style.display="block";T.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";T.style.borderWidth="0px 0px 1px 0px";T.style.borderColor="#c3c3c3";T.style.borderStyle="solid";T.style.whiteSpace="nowrap";T.setAttribute("title",
+S);var ca=document.createElement("div");ca.style.display="inline-block";ca.style.width="100%";ca.style.textOverflow="ellipsis";ca.style.overflow="hidden";mxEvent.addListener(T,"dragover",function(W){W.dataTransfer.dropEffect="move";C=O;W.stopPropagation();W.preventDefault()});mxEvent.addListener(T,"dragstart",function(W){B=T;mxClient.IS_FF&&W.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(T,"dragend",function(W){null!=B&&null!=C&&u.addCell(F,u.model.root,C);C=B=null;W.stopPropagation();
+W.preventDefault()});var fa=document.createElement("img");fa.setAttribute("draggable","false");fa.setAttribute("align","top");fa.setAttribute("border","0");fa.style.width="16px";fa.style.padding="0px 6px 0 4px";fa.style.marginTop="2px";fa.style.cursor="pointer";fa.setAttribute("title",mxResources.get(u.model.isVisible(F)?"hide":"show"));u.model.isVisible(F)?(fa.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(T,75)):(fa.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(T,25));Editor.isDarkMode()&&
+(fa.style.filter="invert(100%)");ca.appendChild(fa);mxEvent.addListener(fa,"click",function(W){u.model.setVisible(F,!u.model.isVisible(F));mxEvent.consume(W)});fa=document.createElement("img");fa.setAttribute("draggable","false");fa.setAttribute("align","top");fa.setAttribute("border","0");fa.style.width="16px";fa.style.padding="0px 6px 0 0";fa.style.marginTop="2px";fa.setAttribute("title",mxResources.get("lockUnlock"));var wa=u.getCurrentCellStyle(F);"1"==mxUtils.getValue(wa,"locked","0")?(fa.setAttribute("src",
+Editor.lockedImage),mxUtils.setOpacity(fa,75)):(fa.setAttribute("src",Editor.unlockedImage),mxUtils.setOpacity(fa,25));Editor.isDarkMode()&&(fa.style.filter="invert(100%)");u.isEnabled()&&(fa.style.cursor="pointer");mxEvent.addListener(fa,"click",function(W){if(u.isEnabled()){var aa=null;u.getModel().beginUpdate();try{aa="1"==mxUtils.getValue(wa,"locked","0")?null:"1",u.setCellStyles("locked",aa,[F])}finally{u.getModel().endUpdate()}"1"==aa&&u.removeSelectionCells(u.getModel().getDescendants(F));
+mxEvent.consume(W)}});ca.appendChild(fa);fa=document.createElement("span");mxUtils.write(fa,S);fa.style.display="block";fa.style.whiteSpace="nowrap";fa.style.overflow="hidden";fa.style.textOverflow="ellipsis";fa.style.position="absolute";fa.style.left="52px";fa.style.right="8px";fa.style.top="8px";ca.appendChild(fa);T.appendChild(ca);if(u.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_IE&&10>document.documentMode)S=document.createElement("div"),S.style.display="block",S.style.textAlign=
+"right",S.style.whiteSpace="nowrap",S.style.position="absolute",S.style.right="16px",S.style.top="6px",0<O&&(ca=document.createElement("a"),ca.setAttribute("title",mxResources.get("toBack")),ca.className="geButton",ca.style.cssFloat="none",ca.innerHTML="&#9660;",ca.style.width="14px",ca.style.height="14px",ca.style.fontSize="14px",ca.style.margin="0px",ca.style.marginTop="-1px",S.appendChild(ca),mxEvent.addListener(ca,"click",function(W){u.isEnabled()&&u.addCell(F,u.model.root,O-1);mxEvent.consume(W)})),
+0<=O&&O<G-1&&(ca=document.createElement("a"),ca.setAttribute("title",mxResources.get("toFront")),ca.className="geButton",ca.style.cssFloat="none",ca.innerHTML="&#9650;",ca.style.width="14px",ca.style.height="14px",ca.style.fontSize="14px",ca.style.margin="0px",ca.style.marginTop="-1px",S.appendChild(ca),mxEvent.addListener(ca,"click",function(W){u.isEnabled()&&u.addCell(F,u.model.root,O+1);mxEvent.consume(W)})),T.appendChild(S);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(T.setAttribute("draggable",
+"true"),T.style.cursor="move")}mxEvent.addListener(T,"dblclick",function(W){var aa=mxEvent.getSource(W).nodeName;"INPUT"!=aa&&"IMG"!=aa&&(e(F),mxEvent.consume(W))});u.getDefaultParent()==F&&(T.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",T.style.fontWeight=u.isEnabled()?"bold":"",J=F);mxEvent.addListener(T,"click",function(W){u.isEnabled()&&(u.setDefaultParent(L),u.view.setCurrentRoot(null),mxEvent.isShiftDown(W)&&u.setSelectionCells(F.children),mxEvent.consume(W))});x.appendChild(T)}
+G=u.model.getChildCount(u.model.root);x.innerText="";U.clear();for(var ba=G-1;0<=ba;ba--)mxUtils.bind(this,function(O){ha(ba,u.convertValueToString(O)||mxResources.get("background"),O,O)})(u.model.getChildAt(u.model.root,ba));var qa=u.convertValueToString(J)||mxResources.get("background");Q.setAttribute("title",mxResources.get("removeIt",[qa]));Z.setAttribute("title",mxResources.get("duplicateIt",[qa]));u.isSelectionEmpty()&&(R.className="geButton mxDisabled");k()}var u=a.editor.graph,m=document.createElement("div");
m.style.userSelect="none";m.style.background=Editor.isDarkMode()?Dialog.backdropColor:"#fff";m.style.border="1px solid whiteSmoke";m.style.height="100%";m.style.marginBottom="10px";m.style.overflow="auto";var r=EditorUi.compactUi?"26px":"30px",x=document.createElement("div");x.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"#fff";x.style.position="absolute";x.style.overflow="auto";x.style.left="0px";x.style.right="0px";x.style.top="0px";x.style.bottom=parseInt(r)+7+"px";m.appendChild(x);
-var A=null,C=null;mxEvent.addListener(m,"dragover",function(ha){ha.dataTransfer.dropEffect="move";C=0;ha.stopPropagation();ha.preventDefault()});mxEvent.addListener(m,"drop",function(ha){ha.stopPropagation();ha.preventDefault()});var F=null,K=null,D=document.createElement("div");D.className="geToolbarContainer";D.style.position="absolute";D.style.bottom="0px";D.style.left="0px";D.style.right="0px";D.style.height=r;D.style.overflow="hidden";D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";
-D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.borderWidth="1px 0px 0px 0px";D.style.borderColor="#c3c3c3";D.style.borderStyle="solid";D.style.display="block";D.style.whiteSpace="nowrap";var O=document.createElement("a");O.className="geButton";var Q=O.cloneNode(!1);r=document.createElement("img");r.setAttribute("border","0");r.setAttribute("width","22");r.setAttribute("src",Editor.trashImage);r.style.opacity="0.9";Editor.isDarkMode()&&(r.style.filter="invert(100%)");
-Q.appendChild(r);mxEvent.addListener(Q,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.model.root.getIndex(K);u.removeCells([K],!1);0==u.model.getChildCount(u.model.root)?(u.model.add(u.model.root,new mxCell),u.setDefaultParent(null)):0<ba&&ba<=u.model.getChildCount(u.model.root)?u.setDefaultParent(u.model.getChildAt(u.model.root,ba-1)):u.setDefaultParent(null)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(Q.className="geButton mxDisabled");D.appendChild(Q);
-var R=O.cloneNode();R.setAttribute("title",mxUtils.trim(mxResources.get("moveSelectionTo",["..."])));r=r.cloneNode(!1);r.setAttribute("src",Editor.verticalDotsImage);R.appendChild(r);mxEvent.addListener(R,"click",function(ha){if(u.isEnabled()&&!u.isSelectionEmpty()){var ba=mxUtils.getOffset(R);a.showPopupMenu(mxUtils.bind(this,function(qa,I){for(var L=F-1;0<=L;L--)mxUtils.bind(this,function(H){var S=qa.addItem(u.convertValueToString(H)||mxResources.get("background"),null,mxUtils.bind(this,function(){u.moveCells(u.getSelectionCells(),
-0,0,!1,H)}),I);1==u.getSelectionCount()&&u.model.isAncestor(H,u.getSelectionCell())&&qa.addCheckmark(S,Editor.checkmarkImage)})(u.model.getChildAt(u.model.root,L))}),ba.x,ba.y+R.offsetHeight,ha)}});D.appendChild(R);var P=O.cloneNode(!1);P.setAttribute("title",mxResources.get("editData"));r=r.cloneNode(!1);r.setAttribute("src",Editor.editImage);P.appendChild(r);mxEvent.addListener(P,"click",function(ha){u.isEnabled()&&a.showDataDialog(K);mxEvent.consume(ha)});u.isEnabled()||(P.className="geButton mxDisabled");
-D.appendChild(P);var Z=O.cloneNode(!1);Z.setAttribute("title",mxResources.get("duplicate"));r=r.cloneNode(!1);r.setAttribute("src",Editor.duplicateImage);Z.appendChild(r);mxEvent.addListener(Z,"click",function(ha){if(u.isEnabled()){ha=null;u.model.beginUpdate();try{ha=u.cloneCell(K),u.cellLabelChanged(ha,mxResources.get("untitledLayer")),ha.setVisible(!0),ha=u.addCell(ha,u.model.root),u.setDefaultParent(ha)}finally{u.model.endUpdate()}null==ha||u.isCellLocked(ha)||u.selectAll(ha)}});u.isEnabled()||
-(Z.className="geButton mxDisabled");D.appendChild(Z);O=O.cloneNode(!1);O.setAttribute("title",mxResources.get("addLayer"));r=r.cloneNode(!1);r.setAttribute("src",Editor.addImage);O.appendChild(r);mxEvent.addListener(O,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.addCell(new mxCell(mxResources.get("untitledLayer")),u.model.root);u.setDefaultParent(ba)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(O.className="geButton mxDisabled");D.appendChild(O);
-m.appendChild(D);var T=new mxDictionary,U=document.createElement("span");U.setAttribute("title",mxResources.get("selectionOnly"));U.innerHTML="&#8226;";U.style.position="absolute";U.style.fontWeight="bold";U.style.fontSize="16pt";U.style.right="2px";U.style.top="2px";n();u.model.addListener(mxEvent.CHANGE,n);u.addListener("defaultParentChanged",n);u.selectionModel.addListener(mxEvent.CHANGE,function(){u.isSelectionEmpty()?R.className="geButton mxDisabled":R.className="geButton";k()});this.window=
+var B=null,C=null;mxEvent.addListener(m,"dragover",function(ha){ha.dataTransfer.dropEffect="move";C=0;ha.stopPropagation();ha.preventDefault()});mxEvent.addListener(m,"drop",function(ha){ha.stopPropagation();ha.preventDefault()});var G=null,J=null,D=document.createElement("div");D.className="geToolbarContainer";D.style.position="absolute";D.style.bottom="0px";D.style.left="0px";D.style.right="0px";D.style.height=r;D.style.overflow="hidden";D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";
+D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.borderWidth="1px 0px 0px 0px";D.style.borderColor="#c3c3c3";D.style.borderStyle="solid";D.style.display="block";D.style.whiteSpace="nowrap";var N=document.createElement("a");N.className="geButton";var Q=N.cloneNode(!1);r=document.createElement("img");r.setAttribute("border","0");r.setAttribute("width","22");r.setAttribute("src",Editor.trashImage);r.style.opacity="0.9";Editor.isDarkMode()&&(r.style.filter="invert(100%)");
+Q.appendChild(r);mxEvent.addListener(Q,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.model.root.getIndex(J);u.removeCells([J],!1);0==u.model.getChildCount(u.model.root)?(u.model.add(u.model.root,new mxCell),u.setDefaultParent(null)):0<ba&&ba<=u.model.getChildCount(u.model.root)?u.setDefaultParent(u.model.getChildAt(u.model.root,ba-1)):u.setDefaultParent(null)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(Q.className="geButton mxDisabled");D.appendChild(Q);
+var R=N.cloneNode();R.setAttribute("title",mxUtils.trim(mxResources.get("moveSelectionTo",["..."])));r=r.cloneNode(!1);r.setAttribute("src",Editor.verticalDotsImage);R.appendChild(r);mxEvent.addListener(R,"click",function(ha){if(u.isEnabled()&&!u.isSelectionEmpty()){var ba=mxUtils.getOffset(R);a.showPopupMenu(mxUtils.bind(this,function(qa,O){for(var S=G-1;0<=S;S--)mxUtils.bind(this,function(F){var L=qa.addItem(u.convertValueToString(F)||mxResources.get("background"),null,mxUtils.bind(this,function(){u.moveCells(u.getSelectionCells(),
+0,0,!1,F)}),O);1==u.getSelectionCount()&&u.model.isAncestor(F,u.getSelectionCell())&&qa.addCheckmark(L,Editor.checkmarkImage)})(u.model.getChildAt(u.model.root,S))}),ba.x,ba.y+R.offsetHeight,ha)}});D.appendChild(R);var P=N.cloneNode(!1);P.setAttribute("title",mxResources.get("editData"));r=r.cloneNode(!1);r.setAttribute("src",Editor.editImage);P.appendChild(r);mxEvent.addListener(P,"click",function(ha){u.isEnabled()&&a.showDataDialog(J);mxEvent.consume(ha)});u.isEnabled()||(P.className="geButton mxDisabled");
+D.appendChild(P);var Z=N.cloneNode(!1);Z.setAttribute("title",mxResources.get("duplicate"));r=r.cloneNode(!1);r.setAttribute("src",Editor.duplicateImage);Z.appendChild(r);mxEvent.addListener(Z,"click",function(ha){if(u.isEnabled()){ha=null;u.model.beginUpdate();try{ha=u.cloneCell(J),u.cellLabelChanged(ha,mxResources.get("untitledLayer")),ha.setVisible(!0),ha=u.addCell(ha,u.model.root),u.setDefaultParent(ha)}finally{u.model.endUpdate()}null==ha||u.isCellLocked(ha)||u.selectAll(ha)}});u.isEnabled()||
+(Z.className="geButton mxDisabled");D.appendChild(Z);N=N.cloneNode(!1);N.setAttribute("title",mxResources.get("addLayer"));r=r.cloneNode(!1);r.setAttribute("src",Editor.addImage);N.appendChild(r);mxEvent.addListener(N,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.addCell(new mxCell(mxResources.get("untitledLayer")),u.model.root);u.setDefaultParent(ba)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(N.className="geButton mxDisabled");D.appendChild(N);
+m.appendChild(D);var U=new mxDictionary,V=document.createElement("span");V.setAttribute("title",mxResources.get("selectionOnly"));V.innerHTML="&#8226;";V.style.position="absolute";V.style.fontWeight="bold";V.style.fontSize="16pt";V.style.right="2px";V.style.top="2px";n();u.model.addListener(mxEvent.CHANGE,n);u.addListener("defaultParentChanged",n);u.selectionModel.addListener(mxEvent.CHANGE,function(){u.isSelectionEmpty()?R.className="geButton mxDisabled":R.className="geButton";k()});this.window=
new mxWindow(mxResources.get("layers"),m,b,f,d,g,!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(){x.scrollTop=x.scrollHeight-x.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=n;this.window.setLocation=function(ha,ba){var qa=window.innerHeight||document.body.clientHeight||
-document.documentElement.clientHeight;ha=Math.max(0,Math.min(ha,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));ba=Math.max(0,Math.min(ba,qa-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==ha&&this.getY()==ba||mxWindow.prototype.setLocation.apply(this,arguments)};var fa=mxUtils.bind(this,function(){var ha=this.window.getX(),ba=this.window.getY();this.window.setLocation(ha,ba)});mxEvent.addListener(window,"resize",fa);
-this.destroy=function(){mxEvent.removeListener(window,"resize",fa);this.window.destroy()}};
+document.documentElement.clientHeight;ha=Math.max(0,Math.min(ha,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));ba=Math.max(0,Math.min(ba,qa-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==ha&&this.getY()==ba||mxWindow.prototype.setLocation.apply(this,arguments)};var ia=mxUtils.bind(this,function(){var ha=this.window.getX(),ba=this.window.getY();this.window.setLocation(ha,ba)});mxEvent.addListener(window,"resize",ia);
+this.destroy=function(){mxEvent.removeListener(window,"resize",ia);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";
Sidebar.prototype.searchIndexData="7Z1rU+M40Kh/zVbN+wEq98vHkHDbJUxeHGDrfFEpjkh0cKwc2R6G/fVHchKGKMwuRo7Usr21xQyBzUaPW62+qfuP9tkf3bM/Go0ofg2I+POP5kB+t8Rr8kdztPq54Hi9PMWcs5fodCD/QCP2Ev7RPFvGq0D8Sl389QfhMfVxcINnJJiwiMaUiV8ZzVgcs9W7XxgEdCF/ELO1eDWKOXsmj3QeL8VrjbdXhixgXLzyR6NZS/8RP5EfrTEUX182H7Jb23y73Hzb726+pfO3NWw+89t/F9DZBz/qjuRPsxK4IU+xdQK7JS/3gZghcEcXy5IjuF9bX7+lTXBGwjjdAyglYR2DIgZGMaQboeIgdgNMCL2mGQhDHAQsicXhmMwCAoRF245+2LH43wTPgZCwtDV2JMDsjo4iET1DHJbkB2chEAj9zh6EjiGzYUi5nwSYQ6GwvyU6fTMU/kxW6xO6FQVUt49hXxj6VjA0yoohtSJxOIejIVUQHYMgvCXma3Q+X5A5uiJQD09T+vKWxf5SkPDEOnDwtlns49iXkKYhHJU1tfG1dmIBBMW+MJgKQbzXFEBA2FES4JRD14py8AISzgkHHJUxJhBbEtMXhh7xawVDwhAfmqAppgEcdWHHB/NiTtdwINiJX3vil2gkKIA+Sk2JxJRTqIZVx1B4Zk9XoivG6T8sjHFgn4clkdjj8bBdlnUaavDOkGt6j6YJB2pfmQpgbhnI1DdMEJ2GURCA7Mzdyg07o1sQkPJ/dknAieAZ3hk+jXx2OktoMKfhIjo94zj0l+j70xP1yT6NNaNhTPj5DxLG0fa1OY6EDSa+kWt5okHwfo3NTk8s54PVP6X/fEjqi8jx9jufyI8oXmBJHNBQ/E/DkPjx9gOqsNv1fRO2fQA7xfMh6/QnZztuWszPw3lZgLf2gLcPjQAjwC9JSDj10e7dio69v2971Zu2uDOxqnAlSy7Kgr5eU9zkQ5vPCPrx6L7oqDv7/lbv0N8yQtpb4SAQ8h2JDxxFRYe+82F2Gr1lB/qUBMRnq1UiPjq6YklU+KO0Xts/S3uWFMsheTQZVvDNwL8PqViWWOtr4Yk3m/uK5rA08ojEhYCvpYBHabnHWhiP6yXhOIhOr8/GaIxp+MTxqvA6RynJ/CDk/x/PYLjj+EejJkiKr5NfLPN/LjSkaOC1Uke70A+mtb85PogagHowU/aSrq3Yz2Q/oNU9DGiBeSY3eL1ZaaEfiOIFd+pwH8gY+4I+i5aFfyb9/WeS2X0w+Eyoz9l6ycLCH/O9/0zVgXkoxXc1uj1nbK7JEA3m4igRjuAQ83nRn0xH8QFBbxN0x+SP/BI8F5d2DKfblRX6ifT382xNwKe852OxksI/EeWIz575NPhE1gQ/F/+JtPdd+D7kPZKE6JHx5yjGGyLFfjK99r6PAtiR9xLx3e7HhX8uyo45vPUH5rlM8SwgcdEfiHLMtwEbXlPCVzRUy2KL90g6yiMBfKrcF9+XVzYIZI/xgc4JE278Snxb9MfS2S/R+aAsG8xjeSQzdCaLPIt/vCsFwZBDw2UyhuFlGkNBJAh2z2XF5klAotN67fIcXQzZedGfiBqG/IL2eiP49kzGG4o5Po9mvdtC30YkehaL/R80DJIoDRS//XrRn1N3/5RpfmHnGHlOf8vndBEwxqun9FZTCu0pyf+LLKP2XmjsL9Hmf1D0Z9PraFsEJp7NBeXkRdYAe4T/oD7ZPh2xqV688f8U/SEpcczeFyLLJh7S/rMp/EOpO6HVvFdx2qxKdNqo4RmgttsD5XGCg91p8+t/ir49eEN5mbHwaq2ldFbLXH6c75OaizPGjxn/ZQmchwuxCPRtiP0lQaPtzwv/XNSivsw2wY6U3lPYvcvJMMBRhC7ojBM0XMpccvD2MIr+LNRTJnNCJq9nITjQWRKTeWnQK5FlW9vghon1zEvCXKkzameuJ86HuQw+LjhL1qURdjUGmTkhrwN+mcw2xtECx8LNe5WRxtoZjsgUXSWzoqNXjttWZu9OMPpl/1xuEebyGIby9TI8A+Wec3an4XjPYNdYYfumJXsS3cyn7vGeRLUPbNIfD7yy7IG2YgVlNvqP9xQ2nRhKsBMAn8rbG+o4KM1+0G1xdLxn8TC5LctTUPzhlrWzYSW+ntbbjeLfQe/rHsdj8eWrhDvdWk3m2ygpfMcdpd4je6hHh3O3XathHqFv3Xa9WfjgsnqTzKhID3yfRBGaSKqFB71/xSL7BTEt0MPC14hpZ0n0+HpF56vIb/bmRFp8R+PC89UNtWvx9Qao3S6+AddWenFkDqtrQY6ojyacyTOv+BkMJWjywZzXo8rzHarXSmMv9xTWmR1yLdbTQdH51mu61/70AI9Rs1d85azcUcp+YV8L8kPhLTi7FvLfk6LzVV1po3zPzrzCm8iqGt61HzREmBP8LIeFn7GfRSetNNs0q4rPOJ0vCl+v3tVNomghnnrCPi5BxF5t52tUkIcyNzvGIV6Ursy/aTSOPMTF57sfuWgajVwIvsKN5mmDPRou0OYSS9GRW02NDEeja3QhvhSdsl3felj8wHJ/35bLXr2kxVf+NQ3FFR2zcim0ZdSe22AeFj4Qp10Wrw/5PqTxKzr/ueYlGH2ktgqwwDttPFN0ztr9F7U4y1nSfowG/v9LKC++q6IOrTYap9vBHu4+cqFRd3Qv5euilteGpxyH0RPjq7R71a9bxNPzwld3KaPrDIu6dzIe3BU+raIWxpj1X7zxSeEJq+2/zAbxvHs08go/WbRe2+9FmP2ChRbk+7PCFyiqAxXNVtCNSFyKi9OKx5K9G7AWZBafzFnhS5mb+4yNxkVHk2nR8SpGW/aLPVp8vZtB4UOiSqcjs7W2I9lmaszmxc9wt22q4sfRGF3QoAROttKTKPswKB3OMkWF7mi4KDrlerNjUS1fcJY2QJuXp4BcGS5rVkmnXT6Enh6s1wHFoV94Za342Gavtu56qpRGtq1ejrjC4XxJgsIPSVTqyc2WzFxN0tnsRWes1NeZtfGuULPRLDzhusVj8HpYeF9QCWZkn2Gvx7fwwftuzSZf+UlDEiMv5kQOeio67Xptv07U7CWU6+8e8m7Oig5Z7bxjNFVyXfh7VIor0jV6y+d6Mi38jL6DklujZRmC8APa1WaU5HaE1eYO1xOBe7VKQrGaEmQA1UCd4SNwgkbeTdEZd21eJb6eFv4IVPWF0fjQn2ffR0UH3FAawRi1Mf4ihW9O2doX4LrRSyeCb+ErxpXrw9knw+sAvhncopgh8UfRMasFzEYNtxu6WMYvRH5Fg8KfeXa9khsWLjjBcvTXpPCliOpMNqPKYzwofDFtbz913TAqyeNh4fm2bd7gGZ/X68W/zqrdXVwLMZnTMoQqFCOuZ9QLGRMimzmsA1z86paWzXjFmETLyn47OmSxelQvQQ9b7ZlAWphpSNHD4O+iQ27rjpvRgsxmNCAlylkrCT+jBcxjr/DunnKhxGyR1vi+8MpCyYaYjdaP/y68/Kpd240G4W4Hw/JUgfcUx9qoCXdbDSk5Ll9hIuOwDNUWysUzs/qCxBELS9CQUrkOZdRCFpBfGH/elg+tSPHHRylnoFkb7pb8TKJSdPGzrKAl5oacW3KBZ/JC1PnPmITz4mtsu01AN9zbJRBvCJy7JeCsXNrpGE2wfvdjEhSdsJI6MesTfr/16mUYl6Z2wDaan/q+TteBBivhfD/R4h+Cyn1Vs27LjnbaLHHNeOENaqVRlNl7aZPBCNWLTliZSmc2rC8JNwpPeD/QYbZIYyI8b3Tty9UVm7JSy2zWmJucFT59ojTDMJvQngyRx57iF8wLH9xXSrrMTgkVnB/onLCiQ1ZLa43mAiejwk+A2Pkgu4slNaNW8mRc/MvBjX3Chg1jzmLms60fEpShCFQxL8yOqJv8fVF0vmr3cKNBjDsck1VS+HmhVodZ3pE1wSXo86kIstnpt3L0H0HeC439ZXn69Km6w6xcTzzxb9ERW22N4RH+gwpRLjpk5cKU2eqBLeS05wtnZctMmQ3KeSRGU7Yuw4zyet3meeh5hfcElXiR2aF0nneDpoSvaFgGH1Dtvmw0xOxNC9+xT6lrNtsK2Ct+vyI1hG9WfktyT0oZ5Gy2NtF7KH4eymYQY0oC4ssufeIDlyKrumu5ZSVRImnLAc6kBHd66k1FORutw5iKpRdelq1eUJtOUAlavih5P7ORuE1RHJYrLzblTt+iiTHlif9cdMIH2tjsuZdwTgpf2lnv7NfFmb3GOn0oOt9206II35/d9euFr7y3e1HnfnyJPMJp8RMjljlX6b2j8n3ASVD4085qWOihdONIzHoeD5NbmTeVn5hXiZBjw/YKr46tCvPjoGrwclS+117hx/X19gH3jQkwm5NVhHA4R+slC0l0OsSzgKSD3FdFh66UtDSzlyin9P5o1AQ/8XWSEsznKZAgQOn7Ff0hNLUnNB/tIVzg4lcbNTq6lsnR8F8xFq/LsAXUCujsyv9oz+B6Ug4tpBg4X4iXHO0RbNvmDnxZm45K+kB6oB5IGWyj/T4SjeylZUfjn77VyVMJDudaB+zBUAolBPhgvrsoh4+mzBz6QjX80R6BbLBQDvtUewJGTs9gTdg6IKeDcM7ZgoQsidCE8KgEVYX7BSzZL/tOUnJfRz7GPnpkK1x80vt2T72W2fDRRx2WA7Vq3tTbmQNwuqwnQ9lrufig9+2YeitzlEcX9F0ShjRclIF2bz9x3c9cRqTL2qOxnIBWDiWiXAHuZ44TaNOOhVFTEtFu7Bvj2ceL5wa7FLJtDzeXbTF4dCrMn9K1A85e93m3oaXBeTAdo827VLCNwJ7ixa7rSzm4a7eL0ud+xhme+ziKS4JcbTOeObOtj1z2JhGfGe16lZQSvA0dc0kXeEbjnY7ZqZxS8rch+NeDUTlh2xD26wlKbx4vWfhaTurZm2fnQN0bXpeEtnqdJXszUX3c+2UY5eDeV6azWVDkt8PzksAGoMhvSfwUsJeyAFcG02QOHeoD342n2TVsLAt5ZcpV5usE+uRLAtq+Ttm8A7oO0VlCAxm8LTp0pcHgW2sEC9QfabxEHg2oz8KtL1p0+kpHlex9SvXhV9EW08DXuDS468qFmezzx3LgHTMux2SVg7hSfJX9rr8+8Omoyg8Zg/3AKuVtEPcj/kECEi7isqTiAPidj5QL5qWJY6kJicw1nV8nHhE/4TR+PR3KXhcUXQjyLzgo/LiAltK+JXO+2duC02Iuv0Vv71Rw5KqUZ9YreSAvi3w3lJaSmVVKHrAvcUyeCVkXX4MrI4GzX1PPBXeC+bzwpBWLMHNsNg/S19+98pyUSm+dzLer8gB+w4rfo1bp75m9nXUeoG9J/ML4c2mMkpaiuDOHY/OAPrn+uzTqRPUurUj5Nv1QGuZKNZBZZ4f/SEs9U1/nPqRPlMzRZDsFIs0sF988VGacfMUaTynq8JdTTkKxILnOqJzcs98M1+c+EjrGjxl/LQlyJb/5FU9IF/kFDUhUCtg5RLHygF0S0VZof8VW1KV9xaLCd9ZWr4N/xUTU5Xw9mT6URKpzMMh1aY+pz9kLmZVDaUMA/v2qJNIN4ITcvMOm1q0c+Uxl2FL2+tkcoMtGlJz9LIvZrcSxvpJc00bOnuIXzAk6w5Fw8cvBXenHlD11nwN32XQC8zkqg3EIQZ9vqwvLIeBKCKWXuQJLH/h9SOOy6PG2km2zED7Z1BfKeGE57HEAQcLHx8eSyHdnvx+W0Uj4Rm9vMxFp3Oo8XNDi90fVno6zPfF0mAcsKXxpSr2nNIysZVcl2qRHNHomcVx4oW7rTpDUR30xRLs3KThsJWTVym4E6sOmM+FaDpdYfM4ASSlHXjKLXqO4+E3G9Z2eHPCL43KIZ+KzFt7HVFSLDdx3JEgT9ViIOo7xDEeF1zGKZZj9qo8+9an4IRpwjotf9mZfozySGRoGSVSCeLhdwzC9Vk82fSUvZHvDXfO383gpPKlS3Lrv6Hb08LYUdR9AOZoc6IdUcsA9DHAUoRZqlwS6cg88e6vxXKArHT23DSbr9eL3ae5D0DFv/Msh8rpztfNAvu+ZXuAZp35J+B80PrQi85ckJClz9hSXw5xRskTZ+03mgf1afOIgoJvvkRfj4l/RUrMX2bNzeXD3Rrcl0S9t5bKnFd43+JVw1EB3ZMViUhLyqmb/Qnw9N/TNkjAH4aSOL/9GvVqthsZJENNoz4wv+gPQbgyfywOQ3E92ZuSmdrQc+JVZWXasmhR/kOqdUil81ZWyJ/tbg3JEpOYpOnb1nLWj9Cdnf5dEzFWLMnuWKQ/cnInXVys8C8qiXkBEhMt8mloiTle/ztOScFc0jJWD9FcoDE0uH9H4clh47B0A5+gD5XGCA3RTInkHEYPf1KxXCVYL0MsBHEY87JHx5wVnybqifnzqL9smxKcDmVINcdFhK50V39owfB72rm2zDuxLId7hHE0JX9EQF741lzLCrL77sVnod3hOGZqyl+LX4jW7ipRnbr+QB3APp7nT4l/TUMeBtDIHdXPFLS8OFP7UVHRK9qKMPJA/0pMLKocKF5229rC4fGhv36PgsBXtnf36aJ6w0Rmn8xJc/tpvLZK9L3GuzG/YpoUlGqzXAcVh8VNEfd2O57nyn3IcRmvGC38LTG3TZQf7zeAWyZpezoKg+Mb5gb+fOa71Jegc+8+neO2fDiZD5K0wj9H9xEP1Wq120pS1MA8D1Ljfhx8oPDhdLON3Cw/Ik/w2WmOfhoub9LtRva0+IvFR5uzl4+f19lQOMHX2MTUPwyJySR9Skj8Qy8yDT3uLpg0YzQfGrwk03XZKpg6YTP3QE8ufzEadDeVXVO/X2rKgieIAydph8Wvxtk/Yb2dLuwxsuNNUOsgadSdZZdVIubBq1VPxEngqZJ9C1ujX3BQvC1ux0a+7yeqDiNvxWTmqtqywalesPsmq2W+0K1afZdWqWH2SVbdTa4Ln0jFvHwguLfBcPrgmYIBLBzyXj/L3BsD0wYNp1g8j2McHU4evYRofpFOODabXbNU2ofxNWP/ku3DgQnlgbScRilX/LtQPiZ2FU2vgDVC73Wuf/I0Gc7yO6Q/yNrbRBWQWHN6BdyejunXwW9GCg7tl0wDPxp7cNMRWq+j8jg58U9GCCb1lA99c7B32VjDDxgHDqN4/vCZoAk5fHFVwqVjSNAJKBy6UesvOPurX6jW4VBotS7LSl78OlUqnfVjsfWwqAsD8rStfs9aEJDRK2ap5OEPMhffJ0UT8gMS/Sp1QQ+1eCEmMLOjh34JqA+Zkwaf6LacOZIGyYAoOcYyD1yhGLXG8f3yJExIhK1vujVCjJ8zm/S7OIfm45SckaFb23xu0VgXtS9AqQL8H1GnXmifn8BC1lPmrFrWVQNRyAJGFJOJ7RB0HENU/aIdnklEfPKFGw3yY6B2hutBFgOH0zScX3+AoXm+jhp4YR1cTQLjUe+Dmc9S/o9VspLRGJAjg8vpgJJktXq0afF5Wgisf4qrXHMAFSLzqlfLKQqtZSdeHvK7nJIx3Y7XTutCPZuGW3NG7nnio1RYKyiNhJD8wVDYW4lHb8iw08H15LXh7RxUuIgvic0t+JpHMcNfQrjHg225zoD7LGrGG8B2mu0E65z9jEs5BVwdY49RotKYTdHlesfoEq2ZjMhGbsaL1SVrTcUXrs7Ravcn/VrQ+T6vSWp9j1azVO/DCnnDoVPmpf6PTaVV0fkunXcnO7+m0BZ1Jhef3ePqdKVwuVqIBOy738OXGGp+OvHoEnY61XdWRV0ig07FQS7Gh05XNtuq1Ey9gu6olOXM4imgEl5aNq7bvcfUcw9W1iqvlFi0bF9zf0eq7RatRM1++8/3WQ/V2s9beHyY6TKKYrQjf5Q4mAY6fGF/BhWfhTNyyExp/eIO877fn032IFbR/hTYeIG90BR1Zb39olYXC+w2xVru1kbGTQ2ic/aCRQCMbMcAjeCh05svMNgw7H89MhomtoTTabdTNFwRNlq+RbBz8q2lF6x55MeNY7akOScAsOACHoD5Ua4XqNmsQW5E6OxvE1gKMzcImvR96qC2LGcF7AhasDAmn02j17ie7pJ/sTMj9XTN4qKgsaK0NqjSO6hQqC5pKoho2GmjcRJvJznDpWBIkQadW4fkXPC0X6FjbWi0nhMcank6F51/wtNxQPdbwSOlpgMdjwZJ+HJyftOsNuEwsnFaSSadicsik24LLxIJqkUy6zVbVNe4QSreCsg/l4Rw1+oC3jxWVIqC0KyiHUDoVlEMo3XalaT+iUqnaQyq9SlYUKmT2Qbt65NW7NbicbGia33BqQuYESJ46FafT5fr0aoKEA9m+/NX67n2nBECENHtJXE2+iifl4b1GMVkhPx37ex76AYsSDrgcIWsyLyc8XUfw1FtWxCfqtN3gkzW893U81+ETDekZDufoYnQHXe00zMnNhLMbcVQJfXzTadT8bUR4I05g+RhUy+/5dCo+/8qn14bKp9m1zmd0U+/U0GUPDhRd7yIXKM1GjVRUDqh0KiofUllXVA6o9IDLSlYvMy8qsGXFEpV2ReWAShv4wWwBinfTaNYiUFR61nWtgNKGDcWcpOxaCg43lcHoIiA/T+o18e8IDh0bbhGdrU6vz8aoXq/Vag8DdD/xAAHRnF4uFqZBpF2rnTQa8Klk3UV6VLrtFrph/mYvRSwgaIxDvIBclpdV9+oBuhfKBcdogkPyi9FfNK74pHyaDuiZrPPJtYB0HACSNfKtBWT+U3jOcFkYVbdCKuTBDBhH1pyaLo62TKZdPcAFYlR5CCDddiUeWxo/m8LjQeMCFd9p4mg3KxzvcVTS8R5HR0pHEy4OoyftFgdg6TCNA/hmMY2jD/iUNcyiC3lytXEW7UqJ/sLRE1rj7zZcHEY92Z/NfoXj+ZSJrwE5vSUxx9tC2r+bJ40zePd5NQPw39OFagIaTprysvxgOhzsqo6hYVKs1nrG1qK5YepWmP4T07Rfg01J9YGyTk7OD1OtgvMhnG2RpNTZcNFktXPyIbPG3EfT1kkdvOhY5rM77NGYzZMAUK0tiDP/jVPxepzkwufvljzroaOxssX+7vxCU22ufUKbbXUuWwKuOY0IGrdcOOWz5kxyp9R2gVK9ZQNTddb/G5nqlP8PQvDP96zp67zItMCTyVp9qEsmCbcue8eZ+8OGNbJCaHdXfzdt/fznmsuRKRtlhBqtNarX0OXsHBBCy3ppn+C2Spr+Q+aolZL6DcsK4AHAKqL973hSN+Wth2clR4egRjjGQyLN8O39/5m8/78dmdXsAGKlWbaSA6udWqrXpJLaMuo21hWkDyD97+jufUeJSxyTF/wKr6uEfWK7SHfjBHDhi2kLfY8LoMtkAOxzJzIjFveR4HIDF4zpMIkEs5nYhRrycpmwhgac49eK0DtC/+fCe6PUrTcKVGiWN5wmZDiG00QCzgXlBE3roC/LmFfFKZW/G3VYVBogqLSAUYEhKy3Q94ks6ZW/W52SU1nT+Sle0BiL4yc6HWz/Jv5jcSBRztWg15pRGck4/0HCONq+tiPjp0EO8YKwEWM5PfFGQTljccxW735hsP0vY7ZW+aloejUlkHOIZr35+wEZ8fpuXVEObNC3QegvGf+fiswBmSFnUXRyRvCqonNIZ0QjHyqX5uGxZIyLbKxATjYB5QmezwMClVLLovRcpt0nINOxubeuSCA/PVQ0HziVxtBcr9YkCAjYA8smmwlnsOD0FR+q2bAHZ5rwGQ3BqhtjR9Z6jTmOkwiRgKzkqk/HOFwyNc9pDYz0d/fI1LLtqN36/mjUzrcrzAOSx/xnEktXYtueTawU3bJ//gEDrrnPLePpfixsyXrNeIzOpEdHYiCo6qqIQUJ1QxZAMDXaIHfiltMdDaGAUnVWI5syPzIo75lyODvPvnaXC+T0KVmQ6HT49nep2kfEx2ltyzfP5+QlDRyxgM6RtxR2FRTToX6gvjIx/LXkvNAJh4UulshbEzIHA0kVtGxK/hiQJoQ/MSG9BJo8AUSViM8Lxo0BuOHe9BNYoQLIjKSHh3AGIcUuAe4+YTCsVtX2+zdCAK0Ci3LEVmnhPeMROkE0YqdnAXshaeLtAodQAWUUo1+LFMbntfc9B0y/3lOiesB+kqzQJFmtK2T/jQx9e5NZOKFy4MRGVPwexwswGU3gvM7/L/FjONlx4LQmNIpZWMH6FCwZvqpQfQ4Vk0ktcT7CSd+AJxZj/lrB+hSs1JeuWH2KlcyisorVjhVP41QRWnAazoVCPx1uXgEK6IMSzH/js12dgHO5XV9+hIT1zuCqc1CgrjCoaAxkVNerNfbjCtUnUP2JwZ55oDhtjM8K1X+gSt9qiHZvi8bYF69BqY2BiG1MgyDN4CSBWBH9p7IaMsGqzsWvUauOyM9Qq/T+Zzk90BnHcoUVqh2qOafiHU5H8g+gUDJe/kiXkj0x+B6EvBmT0Hnat+sMcJ2QBTDb+KZwiH+QV8YFngCsgjbM51Xakt/FquUxtv12uMSr2Sa7LDPwT/L1aqNJXlcEx+k432QFF0i2IJ0ekE0cXAhIskIbdSyEZpqsZoEUpEpBbzF5a45fKxw7HGmQ+5e8yGqxX9+N2Q8pOzvNU3ZkT4TMJbOL9M9d5glN8QzO1c56raWjgjZL+zoaeS2PcbkOHKDNm4EBo6WbjwAGfRsTsV5AufGmwqhtH9F2jz1g4dVDwWRZlDYnGKj7eCoRQ4JD41jsnuj0TJg48/TsAsKjpXU8XWzXpQGEE/wcLzlLFksgSJo9rT2jjWQY4NVa+OMXAQ4XRHgOyTqAc6uuradR9OkwASeM0hZCMIgoW6hnHEglH+9wiF2zIrI7JongiAgsKOjbiMTCdpELOxG2DHsqir2SO6jzn+tALK3i9B+cZKu7kzsS0SjGIdwwKSxMaRij2om/RSesn/m7xh5AyDS0HIjcuIyS1epV0PkBJm7Ra9sFkwhBCaCwsOxWXbEIjMetsMjWi0sfxXW4uS4EBIdCw7RgXMul+UupQ2QweBNG//YrLAHl/LEdl/iY03fhem7+eh0ioXB8SCUWtpG9wal4bHhw+kR9giay92jFJGVyR+aJD8Zi6do15e6SdZxwAmnP2A5UeCR4OhGKRBavhQt0RwKCI7JJqgBBdJi3bBlmRAMSwtlEdVWnGJcZ8VWc0BvHCAgUu66QF3NMQzASYjlAvqMB63KbZSgPYm1ASNj2lR8oeZGHzWWAowgIE800db5M0LcbOaEEUPmHrejkUpZykp8bv5DL3Fs4J2EERtP2dJSKrFOVHTzflqeNZ8QS6TtP6JqgtAr27b2B8Orr7LL8eZ0HxI859VNYYCBpGnj5Y7qgP2VjRXmsC7WEpsmMRDDlS9VT2Y62/MldYcrXNATHqf+f8xHNYoK0/YDp9P19Jm1qGmy2IFTjAII0vSd2QcNQ6K+K2ReZ/bFpYAkVnfXj8YBdwDbRNPEDsDf8oAlcGrSvYH0OlremvDDdPg3g2rNcoWKzLWTpDkQ4nKMLLquonDDwMw6oy5/aHZkJgwwMH9Wwb9qlk/YGT2VKbj1FpFAdCLTOvkxla5VgGlqjgpYdWrOC9iG0TSZvImPOINV9H9YRubG7YKJST8Z+pulb+bOaLml4ckGDFTr/gdeMA7pApDfkNn9U9ycf6CwgrIBFCu+RJ39r7lIQ2jSzFf0pUV2HJzc0JGh7T3osX4VCqK/lMaZL0ebixVh8blhc9DxpPS5/hQQDasrQtYhC/NcyfjfBMZQ70o2ODRzrZLWOTof4B41fQU3kaTT3NWwmW0cu5MssyNuwnRQIGB9W2S6drjUiYBzUxh6Rrj0iULxPazIi23iA0h9aZQI6JC5xhLZj4WCg6DYsyYQk8W7yGwwaB2WAxg6WS4I5pC3S7u5HE+qmQFwxTv9hYbxVnkBw1NvKFPi6MSBFuk+pw2FCuLzGH4gPDASFGs3tm0KRzmqCtD1Uy6JjngQYu1N1TsztEC+ZrYSbR9MaYDjCUa/tA+lmur+lB0TIBWAS9Z6xjSK7ucKZRNLfb/mWLQ+mgwHedOF+f19bGDtEHrafFRKMutLspd4ytUHQCZrT8L3vDgWJXkx4i6Q2ur7VAvM2M7nC8h7Lue+nEuOjR8YrNvts0ts1bIUXIYFjtAOBI/39ish7Ilevc46ToBKUfSw39P8ldI7+JFCuDwPhckd8uubMT0vtKzR7aDYZ/80g+grNezRpvKBCskMiB1sLzbIJoHzbqBqo9fFfxPOVidbv8WzQvPMLKj4f8HlzDyo6H9CRxl4F5gMwlcb5LZrNmn6k3crWAfbJihSm0XPOpDhbyCyyhLWpVaowfYBpz2DeGocVqA9ApTZiReY0Imuclu1Hp5d8UwPo7V76Q46dJHEcvB9FCYOYXnX/2wqzx5Hf8dqMl36Hq0KzQ7MvQvQJbOMPu3SEy/HqB4D65wGjowSXK0r/RinaXHWYcGkC0Fj+rAKWEZhUV48EjAUOjNuE8BUOxYLRON2RFaYPMckuoAmnSJiYyUyYTBWmDzGJfVYh+ggRC+icPtG0D1jAIgImdAKNjpyNULF5xyadDLvbU6UHI16TjusK+0sakuj0/GfMk3SqMLC4SF2nYYS3WaZw/8fbheZJClaYBByoCQkC4Zn8I18ENHBCjScBACVjt+A2HlRMd0yIFRijCB6m7Xui7Tuib7/uE1XQPg1tVxtcIdsi+yE2Hwmi0zMMpdZImRyUrd3Pw2Y5OhjQt2vvOxT5sAyDcxLI+NCIJ1BqgJXb7xnTRvkiASUqeo00tMEk4fN2Mk569+IsXQkUNprJRl04AorwKWKCpjh8hoJEkZeuUdUylIZLOllKbKWUivhzKCxlwqEWdnZNi8xvAaFvZ4yBiUSrnLLNFTg2p0oLfRLVDVmA7SBdr9lRTuhbGnpNBwVsKvrSv17iCFC3bcVEzDZ6SBfVdjBTdcAdgJHmIeMI2mAvrbaXulAuGPfJ/GTE8VMsyLC0yGoKqGmQcme5n+nOsjadhIfYh3KTXclhWEHRgMnC8LmdttYSnz6AIhrN/ZZBZoMSksYVC+A09OzaDNFc4eBpMxZx29pz84ZA0BzYcd1MYxt04VyHckY86PNmv12IWRfzT+w/C5tt7ojoZGquo8vmr5D5zycsiSGFPtt1i5oGUjtppZlKr2cYhNwtdwQDal6n5gkydZfRJSJrktBZEjwjTxDBCyh2it7sa10qaV474fQfoWFBq9aGWXN2wtkaDRbb4mMYSKwqFFiapGXTnH27eQUpjmQ1vr2pbxxxCubwtcxjc8Igb70kHMpBYzc+sAvlgz5kzLo2gNSHVX0qOcDOFmbrv50Pj7dsxRmOwFxDVDtEWgJTFW/8O5o7xp6ggulb5pJOqYQmO/sxk7pZH3DHSHxyOFeaDo5mC0fSFok0WyCfTj0LaEZUfkDYisYuFik1jhxVDQukLnAQEWBgFCu4Xm9Y4BKwTYsgyFvLvJ+kgAGvks0CApQsrLf2lXCmiVa5gECPNF6iCfafAbWmtUplM3wCWji72dlnYjTrLltBoG9nBFJTPyXfYR5Hau9WPFIe8k9pzz09CRdAwBlRvCJitWBKatVkqlGV8otPau9uzDh5KHsJf8I+QdfhnMpeh3DuFCvGXc8mr/NwU6N9xtPqFjAy1bHpQf2G0aYnVOpGyeHs4kyHQsvqtcff0NoiOtnVkW3Kp8AQa8AjBulKieqANow6oL8BdAdpywEUIO+ZcjgqHKQITZeyQV0grIIoCUBZBTAEiq3AZPj6+2Xz2UYw5wXkIgmCk2kyIwfn2ZBROG0xGjajYjtWEwrmeAchOx5ZUQdkp25adiLx2aJTHFKhiKPTMznwvP7fMJ5oEAxZIING4n/UrKX/iNejmLNnsvtJyNLZpl8EdQD8QK6UeaWHR1q6uA9ppT8ZbFaty6vhCC81n/zBQOijAxsR4o6A9RQr4LCy1gwvVwRsF2z6fezp+LzYAn0PhfcmtKyj1A5rp45PLfE/UXIIgtZbO4XdCXmYHzg6rgvhxqArHPvCf3l1hJsiZR8Uhxwd218kDD9T4wuRV//wBt/ReY0Ziz5RJQ4Dl2KLWRCvW4aE9o/cBGbDtvDIZ+apg6B1UMRlwdb3AhY7Y1Ps9wLpWbApvBA/O6q9rGzGGM8+0ySj4rXhNSXz+Ss6+9TAdhDMOv/ZnudozJ4Ym8vun46Q0pauC7Her2Ia4jB6uwsQEFfMiW7LJjP29EQc1V2dzEejDqkRp6GsP0SPOHYpEGZTuhRmDUeYdTsWmV3gKEbpG7gBS9mUH1RhHROW+IKm3J0YmELrg2thR6T1V0ifnNH1+0GculFdf0eiGCcch7Ezel5tjmdUZ73j5YqOV8pE6rXMUcIvAlsSHMRLH3NyOgjEZwtxOpV+TObUp6Ez21NxiTIHDa/eMGgyDIXsLUlEsSvklPPSHrkoolEqezeyGXco7TTvVfztE33nQJDs6ZppeZE845iGjkADI35DzOdUrHnhTBpOiW1kNnRzJEeQF+OnJzTgxBm91wWyW4c4XiKxOle47YvdR11ITIGTv+BK2qmrWwCUF7URwU+uMOuDYcZXOHbqcFDQZa7Pyw0dFSuLnQl+q/EQa+bI+aujrpdVZOjRoWK9pmYWLy9uF3hFg1c04dgX63BG7HRTe7nhozyK0YA6GiC3B+6ShEQswNGjwd5+3bwPOp8nm/vvjvKzJnfifbg7gfR6TTknMgeG8+XWcISbKm6Zi7tzw8aiNY1x4IzEwdmoO3KuyFxPN+mVF7nr1SoJ6T/p8eDM+QrF278On4iwhFkSoRGNCHa1ct4mwbUQPfExXQEHJXNzLT5gGMkcmAyqu0IPjtil+evAteR1tw4E4F90HhJXQpxgqN0koTt3hRRo1pzYMV6tmPiZK8l9MEou1W1ppxvxQddyfgN3BaFyk8haoHiH8IbOOHbn2i00CbwjPuNzZzQfHHxhvGk1GDhzCVC7aj83eHfXjiADE3+6JQl3KXUNRtZuk5hTlwLsutcC8wL3PfRdEjgwJ8P3JEYTpwIn7Q4QkZssMV9h3xWRazeBiNxk+RqlxpxsoInXrvBTXQlrcndHFlSs3Kk8LJRgpydeQDc4XCSfmpUNAp7a+K5nLRvrMZ+KfesR/oP67tTXQUnyeAlfuNNy66BpjTVu09HIEWZg/Igpc6fbz8EI58z3XPOidh+IYzViSehMXZ2yRa3ZJI9LQgJ/iSlHA18cDRGdBcSZ6pPdhX2gGBuOYrSm/T7G2HQEo9p6w6w0hjhOZGE75s4cINrBlNt0zV+H9Weypu7kxHq6lwB0cY3xWmzHG3cuhfVsC9gYc2e8LeusCPcTZ7ysXdt/e5uRORNF0j4YdVndknWcOFPipW2O6eKaBEnMHIHV0Y2O68Ly5B+u7ER1pKLxneiF7OUpcKdFr/W96CWhM+64dlI5D1iuON0gYLniWls3TiWsVgXrc7CmURLiFXUFl5IfNo7rnuMwccVN7LQsq60H4hAs3Tt+X4a1JmwdkNMzPHt1xnxQ3MR6rZEV1yRdtSYuVwyIrm7yQ5fWcInDRdp5MXaqpkU316vNjYViwYnvEDM1kGpc1i7ICjszp0S7B7surbE7rNSWFW/fm6Tljovd1I1H5AHLlROyqRt31oaVrFauJDTUJuzGYU3InIgVU+zMoagbTNUl5i3Zi0PjXNR6WPPKawvMFf2lBnKM+0OeWG0QOFMgoVa+Zr81rAvsPqQR+ekILjUCbdzwesRiKcJ/vGNs5YwWU9zuL/S0zhWbK7qsp1vMr08tkOO8HMHVtm2NPbKVQ25RS7vRfD68XNmNLWviFeEnEr+enlG2xP9g7krBfr2m+JKZJ2h46cK/TmyIE4cChtrZbW1cS7JKL6s+Erx2FlvmU1IX2wUOgo1t4T+7kmXTbracBzSWxMhbksCdcnLrW/SC4wV1JlDd1a2+18V1hcN5QNAjjZdOdXzU7SKnzY0uluiBBTFeuHOzrWX7INij5oxZqxuRzZWaM8V1ugVQutT+ImSNRs5c/dC+h6XL69aV4nzrJsYtC0+uWUj/SW1aPKdOFaoo4y4zx2f16aHzMHZmXwKQNuStmENRRuvu5q+cLxpyFkUOodMtstZF55o2eyvn/PJsGl1iXkDX6MqlqGNXO6ytzSxmnKA7YdbG6H7tjPvUte0IKNxccaAsajWfktAnp2JFjGNBzxmrQxvZZuUazMZ4ERJX2oB2dS+Q5MCL+sLY8NnalRia9qUbfWa3iR8Q7E6xmX5QIzdkrip/C1L2SMP5SrBwhJg6qN0ksTXjcXQ6WK2XNCbYobSTbumBl65cAxn3l+5081RFLLse08R1hiMyw85syba2EtPlRUPmJ0GJGj9pE2PCI3/BwbMrwHSvd+UALEY3OAl9Rzv9tTNXsusiG+LV2qGrEor12jWuxba8HDVd21Z4PVF3ijJsWxWS14K71LFZ8SezR6+1iYXMnfoVNXeZvVw2F1yu6C/1FnTLvAJLuy7f0CdX4ojaLfu1iQV0NXMoYamdHdflJRO8aCh0fsxfkfdMZU2Go/rsC8nLY9BzRb2psmfe/H/1A4e2qnJ4Ghe2EeUxOqPOdOlU5csCsB8OiZd2NkmXFnsJl4KEc4eAImbGjVoVnKP637xCO/9JuE+jSp99ktcF5eSFMVec84POItnrpLSBRUuXVNnBkLjsxcU5EXNGhym1eHXj2n9HbELdSfbadtIlMzQMCA4dss/2Ja1jfGtessCVCT/q+Afjtqxk5Y5oabcV0ccVzlmAHcGlPTpaF9cVFvr+MqBzd0RMYdbpGGdGn505H7Wn1+QAyyHRUoKwxg/GK8ZlMZT/jKYcU1dKoqxH/q99grbGa4Xs88i8Zxw7hGzftPjKXSVdZsK0YBx5L3S1coibbRvjTxLLeKKjuIybF3/hV+xMpaJtNXZDnwj6UxyYzlxPOgiMGWc2ZjHjM1ni6UowUREz88Urv5A13ETWNK7GJtQPqe9ayzLbVRhbalMs59I7uj07xp3MPWqO7lDzFYx3OFwQvhuu5I602S4tVrg5I2+6s+K0uTH/GTlW1Kg9aSkfaHJIgkvjvOzv0XSsxCzALgW2bZdN3bEXaeO6gks5P+vGcSWhQ0lftWON+S354Agp1Zw1XkzsYRqgM4d2onaXAm1gIY0xf0UjKl6JcODaxFDbroAnPppwoB4oeUkhOcJNe0CaPrdkhpFbxdmKrBnPcXqERPjFTVpt4wEhjwRP6DJJCzSqpHAmck5HHo0nN2UymMxkpwx3dFnHtnfuPVP0Z7JaO8JrV9Bij1dA5g7Jl3pPzngSRfAia6n5HVNmfdvKbIWDjQvlVhsb+7cmvDANAvG5s8Jm3tAQyFZs5s6kIdUFML89BTGh0hhx5yhQu0GYl7KEO3QPQG1hZh7XtkjPnbTmvq2xa8togVjDFWJKVVDmYdw5EHNnQ+p3+tekNSVhSJ3pWWnbqKhCPRlgybi1I6x2sX1rLvijUylx7flB2rTEB4vSZhgVsk8iW+KApKkkh6DZbuos+9JHbln41uWMsTm6xPGScIeoWSuMiom/PB04VPOvuyWnYsEanBz1gvqZvSAdTkO8Ihy7KlPZ20TlwMpRucoej9BiRYIATZabFbpAq6Vr1mvRYqsVdrXRtVnFLlCtE4cSabqjM7RYceZMYtumTJ3/X+K7UjGnRpkzVxpqgZK2ujuDBNX4stHNlzZIdGjeg26bLB1WY2dDpV2j1vqEvbhz8tUtnnxy9DVzBZRSoZq5RkkLlOe5gslmOGFKArKW3owznnJrP071hXRhPrxc8ZabupWo+eBqOoJLmdH81l7ZNK+WK7zqILRX2xFcVnfjvXfmCKaWbjm4DqYHOicMbYKijvBSbIiW0TPxEW+ac4+xL/50xS/s6jad+CoyjsM0T5heAz1tocclEWrMGe9HCdNkPx731q8PcED5DLuSZFWH3fWz+0T541sH2CH7X20flj1OcSyCrngE9dq+C9XOHmo9FkJXvIS+dlLtWARd8Rv0o2jHIuiKK6HdNetoBDuuENzfxV/x9Y+FsOsIQvVaYCt74UreCFezRCD0XfFDtFtU5g4w9JeMu2MP6tYtHomfK9ag9pyqI/FzxhTUrTY+Ej9nDEHtQqKc+Z1R/9V3KCADzQzc8nPnANFtqncsgM6cINp5/iMBdPQIaWfPoR0JoDNniAIQjA50JpawfwhnbyaXO8AkcvUAAXACC3iOHh4N+4eHgOfowdHM3JPpGPBcOTR6+xHorxSS5UxviB0KuyidmqwrPQnPFaWnRk3tb1xJz1WtB0L0XNF62o0jjwHvhvnOzBVU6l+slx/IFt9zMkdXdLF8wa+OYFSb1lnfwxeEc1fgKTLYsR4vkFfCYp64s4mVE8R63veC8eeAPjlz/1A5RKwXEF1id8IFHe3a5iPAc8Vy1q/aPQI8ZwxnaFVrEp4rhjM8yeMsCedIeVs3YKoWjPWc2xXmM7lwF+llb2KfOz0SUJ+t3eleogZgOtYDMG65bx1oRRt/ErJ2xgJUs23WhS+l54oJqN/8JGd6N2LrxkuWRA7VvEDbv+8YuiKHbWgG4ZitydxVEbR/CWmDzxXpA1exMWYx42nVi5sEO9YzIRMs1oGD4BV5yWxF+EKI4yMn7kRVldSIdaCyWRIWUonSXuluUuxb39iez5hD+JRqXvv4CI7RGQlcie33oF3MFADRRF6KcwQguAtd3pK66xtbjwym9JyxCqGVok5x6Ir5osYE29bDqlP8kzoCD5zVMmUvaOBOQFXhZ78iQbyfH7t0DVhpX2vd+dgBdPTosF/YJufMhc7IXxua2bzB54r0dXSnsh4HnzOVHdDusG7weS4XJYCQwZUzClB13CBYMCtn9J96gxXABk78Z3eErw9O+CQ+R6WvBUDzSXzOnL5K9137zm+Kz5XKSnC3WDf4nLm7r9ygtp5I3+BzpQlgF1zINMXnSgNA9eiwfvLeh0RAQncMOzp20H7C6IEsqexe4tSdOAWilfjfDxKcDjinP2Q7/ItA1rRFjvA7mHvyFQ9ErF8LHHtB5zhyJVOu3oL7it2SA7Hbc1d45XDS5sFL7PGlI8h2MmUb2aMjvPKoa86Bl+fMlgTCiyXVlsyIrNqSmXg9EnfsCqW1knG74gwvFnjhTL2dYoYZN1zP3KlxUkXrK16SJis+Ixx5S3cGuO/r+6+1idNjRnASvyIPB+6kUjvWoTH2jAbhXNoWAg91S+aUM9O4SpNNue7Ep8OuTC9XujN8bZSLJrJoSV29JvGlWgc9XAzHaLh053aTWh78pcmHesgSzknov6Lzn/4Sh+4YaIqsGbdnh0kkFuBKJFa10b6STdbCNWIvYRRjyl0lZlzARpyGz2nMnyXi0KSumGk7X8neqTnaJkumLHHm6GxYPjrPA/JDXmt1hFdHNc2M+wLnkfjUDhFTL1J/paIjH2BIngWuUFNOAfP78o3avTOOpmKamd+aCWeOsOopVxSMB7LPf1JnQthKAMO4RXYlzFc/cQVXu2f7iLxiMXEl1qOW+tiBha7DJ8ZXTl1wUZquGz8hr1crKl6ukGVA9kvK3LmNYTvl+x5awxFobdvVUXIIhzPx624Od/U0aUVxml+SIR9HK437X7njrUVtnEQkWblCK4eeFlq0bhmaYC4Di64Qs51V2uJy5qTs5jAGJxdgrpyS1k2LiSSDvj8J8198QmeLyixsTYfOyTzam+vBEpIlPpwjuLq2I2OytMeZZKUiW8ZtMM+p1K7tOzZTKryiGI2xv6TOtKDsWY8nbrFNEu4vceQKN+t7c5qEoTNxWOsJkfu1W2Uqii7Tk6726P8D";
Sidebar.prototype.gearImage=GRAPH_IMAGE_PATH+"/clipart/Gear_128x128.png";Sidebar.prototype.libAliases={aws2:"aws3",gcp:"gcp2"};Sidebar.prototype.defaultEntries="general;uml;er;bpmn;flowchart;basic;arrows2";Sidebar.prototype.signs="Animals Food Healthcare Nature People Safety Science Sports Tech Transportation Travel".split(" ");Sidebar.prototype.ibm="Analytics Applications Blockchain Data DevOps Infrastructure Management Miscellaneous Security Social Users VPC Boxes Connectors".split(" ");Sidebar.prototype.allied_telesis=
@@ -11126,8 +11126,8 @@ Graph.fileSupport&&(v.addEventListener("dragover",function(x){x.stopPropagation(
function(){b.openLink("mermaid"==f?"https://mermaid-js.github.io/mermaid/#/":"https://plantuml.com/")}),g.className="geBtn",e.appendChild(g));g=mxUtils.button(mxResources.get("close"),function(){v.value==q?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});g.className="geBtn";b.editor.cancelFirst&&e.appendChild(g);k=mxUtils.button(mxResources.get("insert"),function(x){b.hideDialog();c(v.value,d.value,x)});e.appendChild(k);k.className="geBtn gePrimaryBtn";b.editor.cancelFirst||
e.appendChild(g);this.container=e},NewDialog=function(b,e,f,c,m,n,v,d,g,k,l,p,q,x,y,z,A,K){function O(ea){null!=ea&&(Ca=Da=ea?135:140);ea=!0;if(null!=va)for(;H<va.length&&(ea||0!=mxUtils.mod(H,30));){var wa=va[H++];wa=E(wa.url,wa.libs,wa.title,wa.tooltip?wa.tooltip:wa.title,wa.select,wa.imgUrl,wa.info,wa.onClick,wa.preview,wa.noImg,wa.clibs);ea&&wa.click();ea=!1}}function L(){if(Y&&null!=x)f||b.hideDialog(),x(Y,Z,F.value);else if(c)f||b.hideDialog(),c(P,F.value,ca,Q);else{var ea=F.value;null!=ea&&
0<ea.length&&b.pickFolder(b.mode,function(wa){b.createFile(ea,P,null!=Q&&0<Q.length?Q:null,null,function(){b.hideDialog()},null,wa,null,null!=T&&0<T.length?T:null)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function u(ea,wa,ua,sa,ra,ya,ja){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");X.removeAttribute("disabled");P=wa;Q=ua;T=ya;W=ea;Y=sa;ca=ja;Z=ra;W.style.backgroundColor=d;W.style.border=g}function E(ea,wa,ua,sa,ra,ya,ja,ma,
-ba,fa,oa){function la(Ma,Ta){null==Ea?(Pa=Ma,Pa=/^https?:\/\//.test(Pa)&&!b.editor.isCorsEnabledForUrl(Pa)?PROXY_URL+"?url="+encodeURIComponent(Pa):TEMPLATE_PATH+"/"+Pa,mxUtils.get(Pa,mxUtils.bind(this,function(Ua){200<=Ua.getStatus()&&299>=Ua.getStatus()&&(Ea=Ua.getText());Ta(Ea,Pa)}))):Ta(Ea,Pa)}function qa(Ma,Ta,Ua){if(null!=Ma&&mxUtils.isAncestorNode(document.body,ka)){Ma=mxUtils.parseXml(Ma);Ma=Editor.parseDiagramNode(Ma.documentElement);var Va=new mxCodec(Ma.ownerDocument),Za=new mxGraphModel;
-Va.decode(Ma,Za);Ma=Za.root.getChildAt(0).children;b.sidebar.createTooltip(ka,Ma,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=ua?mxResources.get(ua,null,ua):null,!0,new mxPoint(Ta,Ua),!0,function(){Xa=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;u(ka,null,null,ea,ja,oa)},!0,!1)}}function pa(Ma,Ta){null==ea||Sa||
+ba,fa,oa){function la(Ma,Ta){null==Ea?(Pa=Ma,Pa=/^https?:\/\//.test(Pa)&&!b.editor.isCorsEnabledForUrl(Pa)?PROXY_URL+"?url="+encodeURIComponent(Pa):TEMPLATE_PATH+"/"+Pa,mxUtils.get(Pa,mxUtils.bind(this,function(Ua){200<=Ua.getStatus()&&299>=Ua.getStatus()&&(Ea=Ua.getText());Ta(Ea,Pa)}))):Ta(Ea,Pa)}function qa(Ma,Ta,Ua){if(null!=Ma&&mxUtils.isAncestorNode(document.body,ka)){Ma=mxUtils.parseXml(Ma);Ma=Editor.parseDiagramNode(Ma.documentElement);var Va=new mxCodec(Ma.ownerDocument),$a=new mxGraphModel;
+Va.decode(Ma,$a);Ma=$a.root.getChildAt(0).children;b.sidebar.createTooltip(ka,Ma,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=ua?mxResources.get(ua,null,ua):null,!0,new mxPoint(Ta,Ua),!0,function(){Xa=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;u(ka,null,null,ea,ja,oa)},!0,!1)}}function pa(Ma,Ta){null==ea||Sa||
b.sidebar.currentElt==ka?b.sidebar.hideTooltip():(b.sidebar.hideTooltip(),null!=Ha?(Ta='<mxfile><diagram id="d" name="n">'+Graph.compress('<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=image;image='+Ha.src+';imageAspect=1;" parent="1" vertex="1"><mxGeometry width="'+Ha.naturalWidth+'" height="'+Ha.naturalHeight+'" as="geometry" /></mxCell></root></mxGraphModel>')+"</diagram></mxfile>",qa(Ta,mxEvent.getClientX(Ma),mxEvent.getClientY(Ma))):(b.sidebar.currentElt=
ka,Sa=!0,la(ea,function(Ua){Sa&&b.sidebar.currentElt==ka&&qa(Ua,mxEvent.getClientX(Ma),mxEvent.getClientY(Ma));Sa=!1})))}var ka=document.createElement("div");ka.className="geTemplate";ka.style.position="relative";ka.style.height=Ca+"px";ka.style.width=Da+"px";var Ea=null,Pa=ea;Editor.isDarkMode()&&(ka.style.filter="invert(100%)");null!=ua?ka.setAttribute("title",mxResources.get(ua,null,ua)):null!=sa&&0<sa.length&&ka.setAttribute("title",sa);var Sa=!1,Ha=null;if(null!=ya){ka.style.display="inline-flex";
ka.style.justifyContent="center";ka.style.alignItems="center";ra=document.createElement("img");ra.setAttribute("src",ya);ra.setAttribute("alt",sa);ra.style.maxWidth=Ca+"px";ra.style.maxHeight=Da+"px";Ha=ra;var La=ya.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");ka.appendChild(ra);ra.onerror=function(){this.src!=La?this.src=La:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addGestureListeners(ka,mxUtils.bind(this,function(Ma){u(ka,null,null,ea,ja,oa)}),null,null);mxEvent.addListener(ka,
@@ -11526,92 +11526,93 @@ this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.update
"Invalid data",toString:function(){return this.message}};};var e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(t,B){t=null!=t?t:!0;var M=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&M.setAttribute("style",this.graph.currentStyle);var R=this.graph.getBackgroundImageObject(this.graph.backgroundImage,B);null!=R&&M.setAttribute("backgroundImage",JSON.stringify(R));M.setAttribute("math",this.graph.mathEnabled?"1":"0");M.setAttribute("shadow",
this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(R=this.graph.extFonts.map(function(Q){return Q.name+"^"+Q.url}),M.setAttribute("extFonts",R.join("|")));return M};Editor.prototype.isDataSvg=function(t){try{var B=mxUtils.parseXml(t).documentElement.getAttribute("content");if(null!=B&&(null!=B&&"<"!=B.charAt(0)&&"%"!=B.charAt(0)&&(B=unescape(window.atob?atob(B):Base64.decode(cont,B))),null!=B&&"%"==B.charAt(0)&&(B=decodeURIComponent(B)),null!=B&&0<B.length)){var M=
mxUtils.parseXml(B).documentElement;return"mxfile"==M.nodeName||"mxGraphModel"==M.nodeName}}catch(R){}return!1};Editor.prototype.extractGraphModel=function(t,B,M){return Editor.extractGraphModel.apply(this,arguments)};var f=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();
-f.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){c.apply(this,arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(t,B){if("undefined"===typeof window.MathJax){t=null!=t?t:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(Q){try{MathJax.typesetClear([Q]),MathJax.typeset([Q])}catch(T){MathJax.typesetClear([Q]),
-null!=T.retry?T.retry.then(function(){MathJax.typeset([Q])}):null!=window.console&&console.log("Error in MathJax: "+T.toString())}};window.MathJax=null!=B?B:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var Q=0;Q<Editor.mathJaxQueue.length;Q++)Editor.doMathJaxRender(Editor.mathJaxQueue[Q])}}};Editor.MathJaxRender=function(Q){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(Q):
-Editor.mathJaxQueue.push(Q)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var M=Editor.prototype.init;Editor.prototype.init=function(){M.apply(this,arguments);var Q=mxUtils.bind(this,function(T,P){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,Q);this.graph.addListener(mxEvent.REFRESH,Q)};B=document.getElementsByTagName("script");if(null!=B&&0<B.length){var R=document.createElement("script");
-R.setAttribute("type","text/javascript");R.setAttribute("src",t);B[0].parentNode.appendChild(R)}}};Editor.prototype.csvToArray=function(t){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(t))return null;var B=[];t.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,
-function(M,R,Q,T){void 0!==R?B.push(R.replace(/\\'/g,"'")):void 0!==Q?B.push(Q.replace(/\\"/g,'"')):void 0!==T&&B.push(T);return""});/,\s*$/.test(t)&&B.push("");return B};Editor.prototype.isCorsEnabledForUrl=function(t){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||t.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(t)||
-"https://raw.githubusercontent.com/"===t.substring(0,34)||"https://fonts.googleapis.com/"===t.substring(0,29)||"https://fonts.gstatic.com/"===t.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var t=new mxUrlConverter;t.updateBaseUrl();var B=t.convert,M=this;t.convert=function(R){if(null!=R){var Q="http://"==R.substring(0,7)||"https://"==R.substring(0,8);Q&&!navigator.onLine?R=Editor.svgBrokenImage.src:!Q||R.substring(0,t.baseUrl.length)==t.baseUrl||M.crossOriginImages&&M.isCorsEnabledForUrl(R)?
-"chrome-extension://"==R.substring(0,19)||mxClient.IS_CHROMEAPP||(R=B.apply(this,arguments)):R=PROXY_URL+"?url="+encodeURIComponent(R)}return R};return t};Editor.createSvgDataUri=function(t){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(t)))};Editor.prototype.convertImageToDataUri=function(t,B){try{var M=!0,R=window.setTimeout(mxUtils.bind(this,function(){M=!1;B(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(t))mxUtils.get(t,mxUtils.bind(this,function(T){window.clearTimeout(R);
-M&&B(Editor.createSvgDataUri(T.getText()))}),function(){window.clearTimeout(R);M&&B(Editor.svgBrokenImage.src)});else{var Q=new Image;this.crossOriginImages&&(Q.crossOrigin="anonymous");Q.onload=function(){window.clearTimeout(R);if(M)try{var T=document.createElement("canvas"),P=T.getContext("2d");T.height=Q.height;T.width=Q.width;P.drawImage(Q,0,0);B(T.toDataURL())}catch(W){B(Editor.svgBrokenImage.src)}};Q.onerror=function(){window.clearTimeout(R);M&&B(Editor.svgBrokenImage.src)};Q.src=t}}catch(T){B(Editor.svgBrokenImage.src)}};
-Editor.prototype.convertImages=function(t,B,M,R){null==R&&(R=this.createImageUrlConverter());var Q=0,T=M||{};M=mxUtils.bind(this,function(P,W){P=t.getElementsByTagName(P);for(var Y=0;Y<P.length;Y++)mxUtils.bind(this,function(ca){try{if(null!=ca){var Z=R.convert(ca.getAttribute(W));if(null!=Z&&"data:"!=Z.substring(0,5)){var da=T[Z];null==da?(Q++,this.convertImageToDataUri(Z,function(ha){null!=ha&&(T[Z]=ha,ca.setAttribute(W,ha));Q--;0==Q&&B(t)})):ca.setAttribute(W,da)}else null!=Z&&ca.setAttribute(W,
-Z)}}catch(ha){}})(P[Y])});M("image","xlink:href");M("img","src");0==Q&&B(t)};Editor.base64Encode=function(t){for(var B="",M=0,R=t.length,Q,T,P;M<R;){Q=t.charCodeAt(M++)&255;if(M==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((Q&3)<<4);B+="==";break}T=t.charCodeAt(M++);if(M==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((Q&
-3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2);B+="=";break}P=t.charCodeAt(M++);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((Q&3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2|(P&192)>>6);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P&63)}return B};
-Editor.prototype.loadUrl=function(t,B,M,R,Q,T,P,W){try{var Y=!P&&(R||/(\.png)($|\?)/i.test(t)||/(\.jpe?g)($|\?)/i.test(t)||/(\.gif)($|\?)/i.test(t)||/(\.pdf)($|\?)/i.test(t));Q=null!=Q?Q:!0;var ca=mxUtils.bind(this,function(){mxUtils.get(t,mxUtils.bind(this,function(Z){if(200<=Z.getStatus()&&299>=Z.getStatus()){if(null!=B){var da=Z.getText();if(Y){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){Z=mxUtilsBinaryToArray(Z.request.responseBody).toArray();
-da=Array(Z.length);for(var ha=0;ha<Z.length;ha++)da[ha]=String.fromCharCode(Z[ha]);da=da.join("")}T=null!=T?T:"data:image/png;base64,";da=T+Editor.base64Encode(da)}B(da)}}else null!=M&&(0==Z.getStatus()?M({message:mxResources.get("accessDenied")},Z):M({message:mxResources.get("error")+" "+Z.getStatus()},Z))}),function(Z){null!=M&&M({message:mxResources.get("error")+" "+Z.getStatus()})},Y,this.timeout,function(){Q&&null!=M&&M({code:App.ERROR_TIMEOUT,retry:ca})},W)});ca()}catch(Z){null!=M&&M(Z)}};Editor.prototype.absoluteCssFonts=
-function(t){var B=null;if(null!=t){var M=t.split("url(");if(0<M.length){B=[M[0]];t=window.location.pathname;var R=null!=t?t.lastIndexOf("/"):-1;0<=R&&(t=t.substring(0,R+1));R=document.getElementsByTagName("base");var Q=null;null!=R&&0<R.length&&(Q=R[0].getAttribute("href"));for(var T=1;T<M.length;T++)if(R=M[T].indexOf(")"),0<R){var P=Editor.trimCssUrl(M[T].substring(0,R));this.graph.isRelativeUrl(P)&&(P=null!=Q?Q+P:window.location.protocol+"//"+window.location.hostname+("/"==P.charAt(0)?"":t)+P);
-B.push('url("'+P+'"'+M[T].substring(R))}else B.push(M[T])}else B=[t]}return null!=B?B.join(""):null};Editor.prototype.mapFontUrl=function(t,B,M){/^https?:\/\//.test(B)&&!this.isCorsEnabledForUrl(B)&&(B=PROXY_URL+"?url="+encodeURIComponent(B));M(t,B)};Editor.prototype.embedCssFonts=function(t,B){var M=t.split("url("),R=0;null==this.cachedFonts&&(this.cachedFonts={});var Q=mxUtils.bind(this,function(){if(0==R){for(var Y=[M[0]],ca=1;ca<M.length;ca++){var Z=M[ca].indexOf(")");Y.push('url("');Y.push(this.cachedFonts[Editor.trimCssUrl(M[ca].substring(0,
-Z))]);Y.push('"'+M[ca].substring(Z))}B(Y.join(""))}});if(0<M.length){for(t=1;t<M.length;t++){var T=M[t].indexOf(")"),P=null,W=M[t].indexOf("format(",T);0<W&&(P=Editor.trimCssUrl(M[t].substring(W+7,M[t].indexOf(")",W))));mxUtils.bind(this,function(Y){if(null==this.cachedFonts[Y]){this.cachedFonts[Y]=Y;R++;var ca="application/x-font-ttf";if("svg"==P||/(\.svg)($|\?)/i.test(Y))ca="image/svg+xml";else if("otf"==P||"embedded-opentype"==P||/(\.otf)($|\?)/i.test(Y))ca="application/x-font-opentype";else if("woff"==
-P||/(\.woff)($|\?)/i.test(Y))ca="application/font-woff";else if("woff2"==P||/(\.woff2)($|\?)/i.test(Y))ca="application/font-woff2";else if("eot"==P||/(\.eot)($|\?)/i.test(Y))ca="application/vnd.ms-fontobject";else if("sfnt"==P||/(\.sfnt)($|\?)/i.test(Y))ca="application/font-sfnt";this.mapFontUrl(ca,Y,mxUtils.bind(this,function(Z,da){this.loadUrl(da,mxUtils.bind(this,function(ha){this.cachedFonts[Y]=ha;R--;Q()}),mxUtils.bind(this,function(ha){R--;Q()}),!0,null,"data:"+Z+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(M[t].substring(0,
-T)),P)}Q()}else B(t)};Editor.prototype.loadFonts=function(t){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(B){this.resolvedFontCss=B;null!=t&&t()})):null!=t&&t()};Editor.prototype.createGoogleFontCache=function(){var t={},B;for(B in Graph.fontMapping)Graph.isCssFontUrl(B)&&(t[B]=Graph.fontMapping[B]);return t};Editor.prototype.embedExtFonts=function(t){var B=this.graph.getCustomFonts();if(0<B.length){var M=[],R=0;null==this.cachedGoogleFonts&&
-(this.cachedGoogleFonts=this.createGoogleFontCache());for(var Q=mxUtils.bind(this,function(){0==R&&this.embedCssFonts(M.join(""),t)}),T=0;T<B.length;T++)mxUtils.bind(this,function(P,W){Graph.isCssFontUrl(W)?null==this.cachedGoogleFonts[W]?(R++,this.loadUrl(W,mxUtils.bind(this,function(Y){this.cachedGoogleFonts[W]=Y;M.push(Y+"\n");R--;Q()}),mxUtils.bind(this,function(Y){R--;M.push("@import url("+W+");\n");Q()}))):M.push(this.cachedGoogleFonts[W]+"\n"):M.push('@font-face {font-family: "'+P+'";src: url("'+
-W+'")}\n')})(B[T].name,B[T].url);Q()}else t()};Editor.prototype.addMathCss=function(t){t=t.getElementsByTagName("defs");if(null!=t&&0<t.length)for(var B=document.getElementsByTagName("style"),M=0;M<B.length;M++){var R=mxUtils.getTextContent(B[M]);0>R.indexOf("mxPageSelector")&&0<R.indexOf("MathJax")&&t[0].appendChild(B[M].cloneNode(!0))}};Editor.prototype.addFontCss=function(t,B){B=null!=B?B:this.absoluteCssFonts(this.fontCss);if(null!=B){var M=t.getElementsByTagName("defs"),R=t.ownerDocument;0==
-M.length?(M=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"defs"):R.createElement("defs"),null!=t.firstChild?t.insertBefore(M,t.firstChild):t.appendChild(M)):M=M[0];t=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"style"):R.createElement("style");t.setAttribute("type","text/css");mxUtils.setTextContent(t,B);M.appendChild(t)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(t,
-B,M){var R=mxClient.IS_FF?8192:16384;return Math.min(M,Math.min(R/t,R/B))};Editor.prototype.exportToCanvas=function(t,B,M,R,Q,T,P,W,Y,ca,Z,da,ha,ia,aa,Aa,Ga,Ca){try{T=null!=T?T:!0;P=null!=P?P:!0;da=null!=da?da:this.graph;ha=null!=ha?ha:0;var Da=Y?null:da.background;Da==mxConstants.NONE&&(Da=null);null==Da&&(Da=R);null==Da&&0==Y&&(Da=Aa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(da.getSvg(null,null,ha,ia,null,P,null,null,null,ca,null,Aa,Ga,Ca),mxUtils.bind(this,function(na){try{var Ia=
-new Image;Ia.onload=mxUtils.bind(this,function(){try{var xa=function(){mxClient.IS_SF?window.setTimeout(function(){va.drawImage(Ia,0,0);t(Ja,na)},0):(va.drawImage(Ia,0,0),t(Ja,na))},Ja=document.createElement("canvas"),Fa=parseInt(na.getAttribute("width")),Oa=parseInt(na.getAttribute("height"));W=null!=W?W:1;null!=B&&(W=T?Math.min(1,Math.min(3*B/(4*Oa),B/Fa)):B/Fa);W=this.getMaxCanvasScale(Fa,Oa,W);Fa=Math.ceil(W*Fa);Oa=Math.ceil(W*Oa);Ja.setAttribute("width",Fa);Ja.setAttribute("height",Oa);var va=
-Ja.getContext("2d");null!=Da&&(va.beginPath(),va.rect(0,0,Fa,Oa),va.fillStyle=Da,va.fill());1!=W&&va.scale(W,W);if(aa){var za=da.view,ta=za.scale;za.scale=1;var Ba=btoa(unescape(encodeURIComponent(za.createSvgGrid(za.gridColor))));za.scale=ta;Ba="data:image/svg+xml;base64,"+Ba;var ea=da.gridSize*za.gridSteps*W,wa=da.getGraphBounds(),ua=za.translate.x*ta,sa=za.translate.y*ta,ra=ua+(wa.x-ua)/ta-ha,ya=sa+(wa.y-sa)/ta-ha,ja=new Image;ja.onload=function(){try{for(var ma=-Math.round(ea-mxUtils.mod((ua-
-ra)*W,ea)),ba=-Math.round(ea-mxUtils.mod((sa-ya)*W,ea));ma<Fa;ma+=ea)for(var fa=ba;fa<Oa;fa+=ea)va.drawImage(ja,ma/W,fa/W);xa()}catch(oa){null!=Q&&Q(oa)}};ja.onerror=function(ma){null!=Q&&Q(ma)};ja.src=Ba}else xa()}catch(ma){null!=Q&&Q(ma)}});Ia.onerror=function(xa){null!=Q&&Q(xa)};ca&&this.graph.addSvgShadow(na);this.graph.mathEnabled&&this.addMathCss(na);var Ka=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(na,this.resolvedFontCss),Ia.src=Editor.createSvgDataUri(mxUtils.getXml(na))}catch(xa){null!=
-Q&&Q(xa)}});this.embedExtFonts(mxUtils.bind(this,function(xa){try{null!=xa&&this.addFontCss(na,xa),this.loadFonts(Ka)}catch(Ja){null!=Q&&Q(Ja)}}))}catch(xa){null!=Q&&Q(xa)}}),M,Z)}catch(na){null!=Q&&Q(na)}};Editor.crcTable=[];for(var m=0;256>m;m++)for(var n=m,v=0;8>v;v++)n=1==(n&1)?3988292384^n>>>1:n>>>1,Editor.crcTable[m]=n;Editor.updateCRC=function(t,B,M,R){for(var Q=0;Q<R;Q++)t=Editor.crcTable[(t^B.charCodeAt(M+Q))&255]^t>>>8;return t};Editor.crc32=function(t){for(var B=-1,M=0;M<t.length;M++)B=
-B>>>8^Editor.crcTable[(B^t.charCodeAt(M))&255];return(B^-1)>>>0};Editor.writeGraphModelToPng=function(t,B,M,R,Q){function T(Z,da){var ha=Y;Y+=da;return Z.substring(ha,Y)}function P(Z){Z=T(Z,4);return Z.charCodeAt(3)+(Z.charCodeAt(2)<<8)+(Z.charCodeAt(1)<<16)+(Z.charCodeAt(0)<<24)}function W(Z){return String.fromCharCode(Z>>24&255,Z>>16&255,Z>>8&255,Z&255)}t=t.substring(t.indexOf(",")+1);t=window.atob?atob(t):Base64.decode(t,!0);var Y=0;if(T(t,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,
-10,26,10))null!=Q&&Q();else if(T(t,4),"IHDR"!=T(t,4))null!=Q&&Q();else{T(t,17);Q=t.substring(0,Y);do{var ca=P(t);if("IDAT"==T(t,4)){Q=t.substring(0,Y-8);"pHYs"==B&&"dpi"==M?(M=Math.round(R/.0254),M=W(M)+W(M)+String.fromCharCode(1)):M=M+String.fromCharCode(0)+("zTXt"==B?String.fromCharCode(0):"")+R;R=4294967295;R=Editor.updateCRC(R,B,0,4);R=Editor.updateCRC(R,M,0,M.length);Q+=W(M.length)+B+M+W(R^4294967295);Q+=t.substring(Y-8,t.length);break}Q+=t.substring(Y-8,Y-4+ca);T(t,ca);T(t,4)}while(ca);return"data:image/png;base64,"+
-(window.btoa?btoa(Q):Base64.encode(Q,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(t,B){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var g=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&
-(EditDataDialog.getDisplayIdForCell=function(t,B){var M=null;null!=t.editor.graph.getModel().getParent(B)?M=B.getId():null!=t.currentPage&&(M=t.currentPage.getId());return M});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var l=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?
-l.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var t=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=t&&t.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(t){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(t){t=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var B=this.editorUi,M=B.editor.graph,R=this.createOption(mxResources.get("shadow"),
-function(){return M.shadowVisible},function(Q){var T=new ChangePageSetup(B);T.ignoreColor=!0;T.ignoreImage=!0;T.shadowVisible=Q;M.model.execute(T)},{install:function(Q){this.listener=function(){Q(M.shadowVisible)};B.addListener("shadowVisibleChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});Editor.enableShadowOption||(R.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(R,60));t.appendChild(R)}return t};var q=DiagramFormatPanel.prototype.addOptions;
-DiagramFormatPanel.prototype.addOptions=function(t){t=q.apply(this,arguments);var B=this.editorUi,M=B.editor.graph;if(M.isEnabled()){var R=B.getCurrentFile();if(null!=R&&R.isAutosaveOptional()){var Q=this.createOption(mxResources.get("autosave"),function(){return B.editor.autosave},function(P){B.editor.setAutosave(P);B.editor.autosave&&R.isModified()&&R.fileChanged()},{install:function(P){this.listener=function(){P(B.editor.autosave)};B.editor.addListener("autosaveChanged",this.listener)},destroy:function(){B.editor.removeListener(this.listener)}});
-t.appendChild(Q)}}if(this.isMathOptionVisible()&&M.isEnabled()&&"undefined"!==typeof MathJax){Q=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return M.mathEnabled},function(P){B.actions.get("mathematicalTypesetting").funct()},{install:function(P){this.listener=function(){P(M.mathEnabled)};B.addListener("mathEnabledChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});Q.style.paddingTop="5px";t.appendChild(Q);var T=B.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");
-T.style.position="relative";T.style.marginLeft="6px";T.style.top="2px";Q.appendChild(T)}return t};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=
-[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",
-dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=
-[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",
-type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",
-type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",
-min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},
-{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",
-type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);mxCellRenderer.defaultShapes.tableRow.prototype.customProperties=mxCellRenderer.defaultShapes.swimlane.prototype.customProperties.concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
-mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},
-{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},
-{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",type:"float",min:0,defVal:24},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:12},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.dataStorage.prototype.customProperties=
-[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.1}];mxCellRenderer.defaultShapes.manualInput.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:30},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.loopLimit.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.prototype.customProperties=
-[{name:"size",dispName:"Size",type:"float",min:0,defVal:38},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.display.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.singleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.doubleArrow.prototype.customProperties=
-[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.cross.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.corner.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.tee.prototype.customProperties=
-[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.umlLifeline.prototype.customProperties=[{name:"participant",dispName:"Participant",type:"enum",defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName:"Actor"},{val:"umlBoundary",dispName:"Boundary"},{val:"umlEntity",dispName:"Entity"},{val:"umlControl",dispName:"Control"}]},{name:"size",dispName:"Height",type:"float",defVal:40,
-min:0}];mxCellRenderer.defaultShapes.umlFrame.prototype.customProperties=[{name:"width",dispName:"Title Width",type:"float",defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,min:0}];StyleFormatPanel.prototype.defaultColorSchemes=[[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",font:"#333333"},{fill:"#dae8fc",stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",
-stroke:"#9673a6"}],[{fill:"",stroke:""},{fill:"#60a917",stroke:"#2D7600",font:"#ffffff"},{fill:"#008a00",stroke:"#005700",font:"#ffffff"},{fill:"#1ba1e2",stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#000000"},{fill:"#f0a30a",stroke:"#BD7000",
-font:"#000000"},{fill:"#e3c800",stroke:"#B09500",font:"#000000"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",
-stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},
-{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=function(t,B,M){if(null!=B){var R=function(T){if(null!=T)if(M)for(var P=0;P<T.length;P++)B[T[P].name]=T[P];else for(var W in B){var Y=!1;for(P=0;P<T.length;P++)if(T[P].name==W&&T[P].type==B[W].type){Y=!0;break}Y||delete B[W]}},Q=this.editorUi.editor.graph.view.getState(t);
-null!=Q&&null!=Q.shape&&(Q.shape.commonCustomPropAdded||(Q.shape.commonCustomPropAdded=!0,Q.shape.customProperties=Q.shape.customProperties||[],Q.cell.vertex?Array.prototype.push.apply(Q.shape.customProperties,Editor.commonVertexProperties):Array.prototype.push.apply(Q.shape.customProperties,Editor.commonEdgeProperties)),R(Q.shape.customProperties));t=t.getAttribute("customProperties");if(null!=t)try{R(JSON.parse(t))}catch(T){}}};var x=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=
-function(){var t=this.editorUi.getSelectionState();"image"!=t.style.shape&&!t.containsLabel&&0<t.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));x.apply(this,arguments);if(Editor.enableCustomProperties){for(var B={},M=t.vertices,R=t.edges,Q=0;Q<M.length;Q++)this.findCommonProperties(M[Q],B,0==Q);for(Q=0;Q<R.length;Q++)this.findCommonProperties(R[Q],B,0==M.length&&0==Q);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(B).length&&this.container.appendChild(this.addProperties(this.createPanel(),
-B,t))}};var y=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(t){this.addActions(t,["copyStyle","pasteStyle"]);return y.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(t,B,M){function R(va,za,ta,Ba){da.getModel().beginUpdate();try{var ea=[],wa=[];if(null!=ta.index){for(var ua=[],sa=ta.parentRow.nextSibling;sa&&sa.getAttribute("data-pName")==va;)ua.push(sa.getAttribute("data-pValue")),sa=sa.nextSibling;
-ta.index<ua.length?null!=Ba?ua.splice(Ba,1):ua[ta.index]=za:ua.push(za);null!=ta.size&&ua.length>ta.size&&(ua=ua.slice(0,ta.size));za=ua.join(",");null!=ta.countProperty&&(da.setCellStyles(ta.countProperty,ua.length,da.getSelectionCells()),ea.push(ta.countProperty),wa.push(ua.length))}da.setCellStyles(va,za,da.getSelectionCells());ea.push(va);wa.push(za);if(null!=ta.dependentProps)for(va=0;va<ta.dependentProps.length;va++){var ra=ta.dependentPropsDefVal[va],ya=ta.dependentPropsVals[va];if(ya.length>
-za)ya=ya.slice(0,za);else for(var ja=ya.length;ja<za;ja++)ya.push(ra);ya=ya.join(",");da.setCellStyles(ta.dependentProps[va],ya,da.getSelectionCells());ea.push(ta.dependentProps[va]);wa.push(ya)}if("function"==typeof ta.onChange)ta.onChange(da,za);Z.editorUi.fireEvent(new mxEventObject("styleChanged","keys",ea,"values",wa,"cells",da.getSelectionCells()))}finally{da.getModel().endUpdate()}}function Q(va,za,ta){var Ba=mxUtils.getOffset(t,!0),ea=mxUtils.getOffset(va,!0);za.style.position="absolute";
-za.style.left=ea.x-Ba.x+"px";za.style.top=ea.y-Ba.y+"px";za.style.width=va.offsetWidth+"px";za.style.height=va.offsetHeight-(ta?4:0)+"px";za.style.zIndex=5}function T(va,za,ta){var Ba=document.createElement("div");Ba.style.width="32px";Ba.style.height="4px";Ba.style.margin="2px";Ba.style.border="1px solid black";Ba.style.background=za&&"none"!=za?za:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(Z,function(ea){this.editorUi.pickColor(za,function(wa){Ba.style.background=
-"none"==wa?"url('"+Dialog.prototype.noColorImage+"')":wa;R(va,wa,ta)});mxEvent.consume(ea)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(Ba);return btn}function P(va,za,ta,Ba,ea,wa,ua){null!=za&&(za=za.split(","),ha.push({name:va,values:za,type:ta,defVal:Ba,countProperty:ea,parentRow:wa,isDeletable:!0,flipBkg:ua}));btn=mxUtils.button("+",mxUtils.bind(Z,function(sa){for(var ra=wa,ya=0;null!=ra.nextSibling;)if(ra.nextSibling.getAttribute("data-pName")==
-va)ra=ra.nextSibling,ya++;else break;var ja={type:ta,parentRow:wa,index:ya,isDeletable:!0,defVal:Ba,countProperty:ea};ya=ca(va,"",ja,0==ya%2,ua);R(va,Ba,ja);ra.parentNode.insertBefore(ya,ra.nextSibling);mxEvent.consume(sa)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function W(va,za,ta,Ba,ea,wa,ua){if(0<ea){var sa=Array(ea);za=null!=za?za.split(","):[];for(var ra=0;ra<ea;ra++)sa[ra]=null!=za[ra]?za[ra]:null!=Ba?Ba:"";ha.push({name:va,values:sa,type:ta,defVal:Ba,
-parentRow:wa,flipBkg:ua,size:ea})}return document.createElement("div")}function Y(va,za,ta){var Ba=document.createElement("input");Ba.type="checkbox";Ba.checked="1"==za;mxEvent.addListener(Ba,"change",function(){R(va,Ba.checked?"1":"0",ta)});return Ba}function ca(va,za,ta,Ba,ea){var wa=ta.dispName,ua=ta.type,sa=document.createElement("tr");sa.className="gePropRow"+(ea?"Dark":"")+(Ba?"Alt":"")+" gePropNonHeaderRow";sa.setAttribute("data-pName",va);sa.setAttribute("data-pValue",za);Ba=!1;null!=ta.index&&
-(sa.setAttribute("data-index",ta.index),wa=(null!=wa?wa:"")+"["+ta.index+"]",Ba=!0);var ra=document.createElement("td");ra.className="gePropRowCell";wa=mxResources.get(wa,null,wa);mxUtils.write(ra,wa);ra.setAttribute("title",wa);Ba&&(ra.style.textAlign="right");sa.appendChild(ra);ra=document.createElement("td");ra.className="gePropRowCell";if("color"==ua)ra.appendChild(T(va,za,ta));else if("bool"==ua||"boolean"==ua)ra.appendChild(Y(va,za,ta));else if("enum"==ua){var ya=ta.enumList;for(ea=0;ea<ya.length;ea++)if(wa=
-ya[ea],wa.val==za){mxUtils.write(ra,mxResources.get(wa.dispName,null,wa.dispName));break}mxEvent.addListener(ra,"click",mxUtils.bind(Z,function(){var ja=document.createElement("select");Q(ra,ja);for(var ma=0;ma<ya.length;ma++){var ba=ya[ma],fa=document.createElement("option");fa.value=mxUtils.htmlEntities(ba.val);mxUtils.write(fa,mxResources.get(ba.dispName,null,ba.dispName));ja.appendChild(fa)}ja.value=za;t.appendChild(ja);mxEvent.addListener(ja,"change",function(){var oa=mxUtils.htmlEntities(ja.value);
-R(va,oa,ta)});ja.focus();mxEvent.addListener(ja,"blur",function(){t.removeChild(ja)})}))}else"dynamicArr"==ua?ra.appendChild(P(va,za,ta.subType,ta.subDefVal,ta.countProperty,sa,ea)):"staticArr"==ua?ra.appendChild(W(va,za,ta.subType,ta.subDefVal,ta.size,sa,ea)):"readOnly"==ua?(ea=document.createElement("input"),ea.setAttribute("readonly",""),ea.value=za,ea.style.width="96px",ea.style.borderWidth="0px",ra.appendChild(ea)):(ra.innerHTML=mxUtils.htmlEntities(decodeURIComponent(za)),mxEvent.addListener(ra,
-"click",mxUtils.bind(Z,function(){function ja(){var ba=ma.value;ba=0==ba.length&&"string"!=ua?0:ba;ta.allowAuto&&(null!=ba.trim&&"auto"==ba.trim().toLowerCase()?(ba="auto",ua="string"):(ba=parseFloat(ba),ba=isNaN(ba)?0:ba));null!=ta.min&&ba<ta.min?ba=ta.min:null!=ta.max&&ba>ta.max&&(ba=ta.max);ba=encodeURIComponent(("int"==ua?parseInt(ba):ba)+"");R(va,ba,ta)}var ma=document.createElement("input");Q(ra,ma,!0);ma.value=decodeURIComponent(za);ma.className="gePropEditor";"int"!=ua&&"float"!=ua||ta.allowAuto||
-(ma.type="number",ma.step="int"==ua?"1":"any",null!=ta.min&&(ma.min=parseFloat(ta.min)),null!=ta.max&&(ma.max=parseFloat(ta.max)));t.appendChild(ma);mxEvent.addListener(ma,"keypress",function(ba){13==ba.keyCode&&ja()});ma.focus();mxEvent.addListener(ma,"blur",function(){ja()})})));ta.isDeletable&&(ea=mxUtils.button("-",mxUtils.bind(Z,function(ja){R(va,"",ta,ta.index);mxEvent.consume(ja)})),ea.style.height="16px",ea.style.width="25px",ea.style.float="right",ea.className="geColorBtn",ra.appendChild(ea));
-sa.appendChild(ra);return sa}var Z=this,da=this.editorUi.editor.graph,ha=[];t.style.position="relative";t.style.padding="0";var ia=document.createElement("table");ia.className="geProperties";ia.style.whiteSpace="nowrap";ia.style.width="100%";var aa=document.createElement("tr");aa.className="gePropHeader";var Aa=document.createElement("th");Aa.className="gePropHeaderCell";var Ga=document.createElement("img");Ga.src=Sidebar.prototype.expandedImage;Ga.style.verticalAlign="middle";Aa.appendChild(Ga);
-mxUtils.write(Aa,mxResources.get("property"));aa.style.cursor="pointer";var Ca=function(){var va=ia.querySelectorAll(".gePropNonHeaderRow");if(Z.editorUi.propertiesCollapsed){Ga.src=Sidebar.prototype.collapsedImage;var za="none";for(var ta=t.childNodes.length-1;0<=ta;ta--)try{var Ba=t.childNodes[ta],ea=Ba.nodeName.toUpperCase();"INPUT"!=ea&&"SELECT"!=ea||t.removeChild(Ba)}catch(wa){}}else Ga.src=Sidebar.prototype.expandedImage,za="";for(ta=0;ta<va.length;ta++)va[ta].style.display=za};mxEvent.addListener(aa,
-"click",function(){Z.editorUi.propertiesCollapsed=!Z.editorUi.propertiesCollapsed;Ca()});aa.appendChild(Aa);Aa=document.createElement("th");Aa.className="gePropHeaderCell";Aa.innerHTML=mxResources.get("value");aa.appendChild(Aa);ia.appendChild(aa);var Da=!1,na=!1;aa=null;1==M.vertices.length&&0==M.edges.length?aa=M.vertices[0].id:0==M.vertices.length&&1==M.edges.length&&(aa=M.edges[0].id);null!=aa&&ia.appendChild(ca("id",mxUtils.htmlEntities(aa),{dispName:"ID",type:"readOnly"},!0,!1));for(var Ia in B)if(aa=
-B[Ia],"function"!=typeof aa.isVisible||aa.isVisible(M,this)){var Ka=null!=M.style[Ia]?mxUtils.htmlEntities(M.style[Ia]+""):null!=aa.getDefaultValue?aa.getDefaultValue(M,this):aa.defVal;if("separator"==aa.type)na=!na;else{if("staticArr"==aa.type)aa.size=parseInt(M.style[aa.sizeProperty]||B[aa.sizeProperty].defVal)||0;else if(null!=aa.dependentProps){var xa=aa.dependentProps,Ja=[],Fa=[];for(Aa=0;Aa<xa.length;Aa++){var Oa=M.style[xa[Aa]];Fa.push(B[xa[Aa]].subDefVal);Ja.push(null!=Oa?Oa.split(","):[])}aa.dependentPropsDefVal=
-Fa;aa.dependentPropsVals=Ja}ia.appendChild(ca(Ia,Ka,aa,Da,na));Da=!Da}}for(Aa=0;Aa<ha.length;Aa++)for(aa=ha[Aa],B=aa.parentRow,M=0;M<aa.values.length;M++)Ia=ca(aa.name,aa.values[M],{type:aa.type,parentRow:aa.parentRow,isDeletable:aa.isDeletable,index:M,defVal:aa.defVal,countProperty:aa.countProperty,size:aa.size},0==M%2,aa.flipBkg),B.parentNode.insertBefore(Ia,B.nextSibling),B=Ia;t.appendChild(ia);Ca();return t};StyleFormatPanel.prototype.addStyles=function(t){function B(aa){mxEvent.addListener(aa,
-"mouseenter",function(){aa.style.opacity="1"});mxEvent.addListener(aa,"mouseleave",function(){aa.style.opacity="0.5"})}var M=this.editorUi,R=M.editor.graph,Q=document.createElement("div");Q.style.whiteSpace="nowrap";Q.style.paddingLeft="24px";Q.style.paddingRight="20px";t.style.paddingLeft="16px";t.style.paddingBottom="6px";t.style.position="relative";t.appendChild(Q);var T="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(" "),
-P=document.createElement("div");P.style.whiteSpace="nowrap";P.style.position="relative";P.style.textAlign="center";P.style.width="210px";for(var W=[],Y=0;Y<this.defaultColorSchemes.length;Y++){var ca=document.createElement("div");ca.style.display="inline-block";ca.style.width="6px";ca.style.height="6px";ca.style.marginLeft="4px";ca.style.marginRight="3px";ca.style.borderRadius="3px";ca.style.cursor="pointer";ca.style.background="transparent";ca.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(aa){mxEvent.addListener(ca,
-"click",mxUtils.bind(this,function(){Z(aa)}))})(Y);W.push(ca);P.appendChild(ca)}var Z=mxUtils.bind(this,function(aa){null!=W[aa]&&(null!=this.format.currentScheme&&null!=W[this.format.currentScheme]&&(W[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=aa,da(this.defaultColorSchemes[this.format.currentScheme]),W[this.format.currentScheme].style.background="#84d7ff")}),da=mxUtils.bind(this,function(aa){var Aa=mxUtils.bind(this,function(Ca){var Da=mxUtils.button("",
-mxUtils.bind(this,function(Ka){R.getModel().beginUpdate();try{for(var xa=M.getSelectionState().cells,Ja=0;Ja<xa.length;Ja++){for(var Fa=R.getModel().getStyle(xa[Ja]),Oa=0;Oa<T.length;Oa++)Fa=mxUtils.removeStylename(Fa,T[Oa]);var va=R.getModel().isVertex(xa[Ja])?R.defaultVertexStyle:R.defaultEdgeStyle;null!=Ca?(mxEvent.isShiftDown(Ka)||(Fa=""==Ca.fill?mxUtils.setStyle(Fa,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(Fa,mxConstants.STYLE_FILLCOLOR,Ca.fill||mxUtils.getValue(va,mxConstants.STYLE_FILLCOLOR,
-null)),Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_GRADIENTCOLOR,Ca.gradient||mxUtils.getValue(va,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(Ka)||mxClient.IS_MAC&&mxEvent.isMetaDown(Ka)||!R.getModel().isVertex(xa[Ja])||(Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_FONTCOLOR,Ca.font||mxUtils.getValue(va,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(Ka)||(Fa=""==Ca.stroke?mxUtils.setStyle(Fa,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(Fa,mxConstants.STYLE_STROKECOLOR,Ca.stroke||
-mxUtils.getValue(va,mxConstants.STYLE_STROKECOLOR,null)))):(Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(va,mxConstants.STYLE_FILLCOLOR,"#ffffff")),Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(va,mxConstants.STYLE_STROKECOLOR,"#000000")),Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(va,mxConstants.STYLE_GRADIENTCOLOR,null)),R.getModel().isVertex(xa[Ja])&&(Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(va,
-mxConstants.STYLE_FONTCOLOR,null))));R.getModel().setStyle(xa[Ja],Fa)}}finally{R.getModel().endUpdate()}}));Da.className="geStyleButton";Da.style.width="36px";Da.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";Da.style.margin="0px 6px 6px 0px";if(null!=Ca){var na="1"==urlParams.sketch?"2px solid":"1px solid";null!=Ca.gradient?mxClient.IS_IE&&10>document.documentMode?Da.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+Ca.fill+"', EndColorStr='"+Ca.gradient+"', GradientType=0)":
-Da.style.backgroundImage="linear-gradient("+Ca.fill+" 0px,"+Ca.gradient+" 100%)":Ca.fill==mxConstants.NONE?Da.style.background="url('"+Dialog.prototype.noColorImage+"')":Da.style.backgroundColor=""==Ca.fill?mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):Ca.fill||mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");Da.style.border=Ca.stroke==mxConstants.NONE?na+" transparent":
-""==Ca.stroke?na+" "+mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):na+" "+(Ca.stroke||mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=Ca.title&&Da.setAttribute("title",Ca.title)}else{na=mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var Ia=mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");Da.style.backgroundColor=
-na;Da.style.border="1px solid "+Ia}Da.style.borderRadius="0";Q.appendChild(Da)});Q.innerText="";for(var Ga=0;Ga<aa.length;Ga++)0<Ga&&0==mxUtils.mod(Ga,4)&&mxUtils.br(Q),Aa(aa[Ga])});null==this.format.currentScheme?Z(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):Z(this.format.currentScheme);Y=10>=this.defaultColorSchemes.length?28:8;var ha=document.createElement("div");ha.style.cssText="position:absolute;left:10px;top:8px;bottom:"+Y+"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=);";
+f.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){c.apply(this,arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(t,B){if("undefined"===typeof window.MathJax&&!mxClient.IS_IE&&!mxClient.IS_IE11){t=null!=t?t:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(Q){try{MathJax.typesetClear([Q]),
+MathJax.typeset([Q]),Editor.onMathJaxDone()}catch(T){MathJax.typesetClear([Q]),null!=T.retry?T.retry.then(function(){MathJax.typesetPromise([Q]).then(Editor.onMathJaxDone)}):null!=window.console&&console.log("Error in MathJax: "+T.toString())}};window.MathJax=null!=B?B:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var Q=0;Q<Editor.mathJaxQueue.length;Q++)Editor.doMathJaxRender(Editor.mathJaxQueue[Q])}}};
+Editor.MathJaxRender=function(Q){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(Q):Editor.mathJaxQueue.push(Q)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};Editor.onMathJaxDone=function(){};var M=Editor.prototype.init;Editor.prototype.init=function(){M.apply(this,arguments);var Q=mxUtils.bind(this,function(T,P){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,
+Q);this.graph.addListener(mxEvent.REFRESH,Q)};B=document.getElementsByTagName("script");if(null!=B&&0<B.length){var R=document.createElement("script");R.setAttribute("type","text/javascript");R.setAttribute("src",t);B[0].parentNode.appendChild(R)}}};Editor.prototype.csvToArray=function(t){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(t))return null;
+var B=[];t.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(M,R,Q,T){void 0!==R?B.push(R.replace(/\\'/g,"'")):void 0!==Q?B.push(Q.replace(/\\"/g,'"')):void 0!==T&&B.push(T);return""});/,\s*$/.test(t)&&B.push("");return B};Editor.prototype.isCorsEnabledForUrl=function(t){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||t.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(t)||"https://raw.githubusercontent.com/"===t.substring(0,34)||"https://fonts.googleapis.com/"===t.substring(0,29)||"https://fonts.gstatic.com/"===t.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var t=new mxUrlConverter;t.updateBaseUrl();var B=t.convert,M=this;t.convert=function(R){if(null!=R){var Q="http://"==R.substring(0,7)||"https://"==
+R.substring(0,8);Q&&!navigator.onLine?R=Editor.svgBrokenImage.src:!Q||R.substring(0,t.baseUrl.length)==t.baseUrl||M.crossOriginImages&&M.isCorsEnabledForUrl(R)?"chrome-extension://"==R.substring(0,19)||mxClient.IS_CHROMEAPP||(R=B.apply(this,arguments)):R=PROXY_URL+"?url="+encodeURIComponent(R)}return R};return t};Editor.createSvgDataUri=function(t){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(t)))};Editor.prototype.convertImageToDataUri=function(t,B){try{var M=!0,R=window.setTimeout(mxUtils.bind(this,
+function(){M=!1;B(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(t))mxUtils.get(t,mxUtils.bind(this,function(T){window.clearTimeout(R);M&&B(Editor.createSvgDataUri(T.getText()))}),function(){window.clearTimeout(R);M&&B(Editor.svgBrokenImage.src)});else{var Q=new Image;this.crossOriginImages&&(Q.crossOrigin="anonymous");Q.onload=function(){window.clearTimeout(R);if(M)try{var T=document.createElement("canvas"),P=T.getContext("2d");T.height=Q.height;T.width=Q.width;P.drawImage(Q,0,0);
+B(T.toDataURL())}catch(W){B(Editor.svgBrokenImage.src)}};Q.onerror=function(){window.clearTimeout(R);M&&B(Editor.svgBrokenImage.src)};Q.src=t}}catch(T){B(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(t,B,M,R){null==R&&(R=this.createImageUrlConverter());var Q=0,T=M||{};M=mxUtils.bind(this,function(P,W){P=t.getElementsByTagName(P);for(var Y=0;Y<P.length;Y++)mxUtils.bind(this,function(ca){try{if(null!=ca){var Z=R.convert(ca.getAttribute(W));if(null!=Z&&"data:"!=Z.substring(0,5)){var da=
+T[Z];null==da?(Q++,this.convertImageToDataUri(Z,function(ha){null!=ha&&(T[Z]=ha,ca.setAttribute(W,ha));Q--;0==Q&&B(t)})):ca.setAttribute(W,da)}else null!=Z&&ca.setAttribute(W,Z)}}catch(ha){}})(P[Y])});M("image","xlink:href");M("img","src");0==Q&&B(t)};Editor.base64Encode=function(t){for(var B="",M=0,R=t.length,Q,T,P;M<R;){Q=t.charCodeAt(M++)&255;if(M==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((Q&
+3)<<4);B+="==";break}T=t.charCodeAt(M++);if(M==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((Q&3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2);B+="=";break}P=t.charCodeAt(M++);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((Q&
+3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2|(P&192)>>6);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P&63)}return B};Editor.prototype.loadUrl=function(t,B,M,R,Q,T,P,W){try{var Y=!P&&(R||/(\.png)($|\?)/i.test(t)||/(\.jpe?g)($|\?)/i.test(t)||/(\.gif)($|\?)/i.test(t)||/(\.pdf)($|\?)/i.test(t));Q=null!=Q?Q:!0;var ca=mxUtils.bind(this,function(){mxUtils.get(t,mxUtils.bind(this,function(Z){if(200<=Z.getStatus()&&
+299>=Z.getStatus()){if(null!=B){var da=Z.getText();if(Y){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){Z=mxUtilsBinaryToArray(Z.request.responseBody).toArray();da=Array(Z.length);for(var ha=0;ha<Z.length;ha++)da[ha]=String.fromCharCode(Z[ha]);da=da.join("")}T=null!=T?T:"data:image/png;base64,";da=T+Editor.base64Encode(da)}B(da)}}else null!=M&&(0==Z.getStatus()?M({message:mxResources.get("accessDenied")},Z):M({message:mxResources.get("error")+
+" "+Z.getStatus()},Z))}),function(Z){null!=M&&M({message:mxResources.get("error")+" "+Z.getStatus()})},Y,this.timeout,function(){Q&&null!=M&&M({code:App.ERROR_TIMEOUT,retry:ca})},W)});ca()}catch(Z){null!=M&&M(Z)}};Editor.prototype.absoluteCssFonts=function(t){var B=null;if(null!=t){var M=t.split("url(");if(0<M.length){B=[M[0]];t=window.location.pathname;var R=null!=t?t.lastIndexOf("/"):-1;0<=R&&(t=t.substring(0,R+1));R=document.getElementsByTagName("base");var Q=null;null!=R&&0<R.length&&(Q=R[0].getAttribute("href"));
+for(var T=1;T<M.length;T++)if(R=M[T].indexOf(")"),0<R){var P=Editor.trimCssUrl(M[T].substring(0,R));this.graph.isRelativeUrl(P)&&(P=null!=Q?Q+P:window.location.protocol+"//"+window.location.hostname+("/"==P.charAt(0)?"":t)+P);B.push('url("'+P+'"'+M[T].substring(R))}else B.push(M[T])}else B=[t]}return null!=B?B.join(""):null};Editor.prototype.mapFontUrl=function(t,B,M){/^https?:\/\//.test(B)&&!this.isCorsEnabledForUrl(B)&&(B=PROXY_URL+"?url="+encodeURIComponent(B));M(t,B)};Editor.prototype.embedCssFonts=
+function(t,B){var M=t.split("url("),R=0;null==this.cachedFonts&&(this.cachedFonts={});var Q=mxUtils.bind(this,function(){if(0==R){for(var Y=[M[0]],ca=1;ca<M.length;ca++){var Z=M[ca].indexOf(")");Y.push('url("');Y.push(this.cachedFonts[Editor.trimCssUrl(M[ca].substring(0,Z))]);Y.push('"'+M[ca].substring(Z))}B(Y.join(""))}});if(0<M.length){for(t=1;t<M.length;t++){var T=M[t].indexOf(")"),P=null,W=M[t].indexOf("format(",T);0<W&&(P=Editor.trimCssUrl(M[t].substring(W+7,M[t].indexOf(")",W))));mxUtils.bind(this,
+function(Y){if(null==this.cachedFonts[Y]){this.cachedFonts[Y]=Y;R++;var ca="application/x-font-ttf";if("svg"==P||/(\.svg)($|\?)/i.test(Y))ca="image/svg+xml";else if("otf"==P||"embedded-opentype"==P||/(\.otf)($|\?)/i.test(Y))ca="application/x-font-opentype";else if("woff"==P||/(\.woff)($|\?)/i.test(Y))ca="application/font-woff";else if("woff2"==P||/(\.woff2)($|\?)/i.test(Y))ca="application/font-woff2";else if("eot"==P||/(\.eot)($|\?)/i.test(Y))ca="application/vnd.ms-fontobject";else if("sfnt"==P||
+/(\.sfnt)($|\?)/i.test(Y))ca="application/font-sfnt";this.mapFontUrl(ca,Y,mxUtils.bind(this,function(Z,da){this.loadUrl(da,mxUtils.bind(this,function(ha){this.cachedFonts[Y]=ha;R--;Q()}),mxUtils.bind(this,function(ha){R--;Q()}),!0,null,"data:"+Z+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(M[t].substring(0,T)),P)}Q()}else B(t)};Editor.prototype.loadFonts=function(t){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(B){this.resolvedFontCss=
+B;null!=t&&t()})):null!=t&&t()};Editor.prototype.createGoogleFontCache=function(){var t={},B;for(B in Graph.fontMapping)Graph.isCssFontUrl(B)&&(t[B]=Graph.fontMapping[B]);return t};Editor.prototype.embedExtFonts=function(t){var B=this.graph.getCustomFonts();if(0<B.length){var M=[],R=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var Q=mxUtils.bind(this,function(){0==R&&this.embedCssFonts(M.join(""),t)}),T=0;T<B.length;T++)mxUtils.bind(this,function(P,W){Graph.isCssFontUrl(W)?
+null==this.cachedGoogleFonts[W]?(R++,this.loadUrl(W,mxUtils.bind(this,function(Y){this.cachedGoogleFonts[W]=Y;M.push(Y+"\n");R--;Q()}),mxUtils.bind(this,function(Y){R--;M.push("@import url("+W+");\n");Q()}))):M.push(this.cachedGoogleFonts[W]+"\n"):M.push('@font-face {font-family: "'+P+'";src: url("'+W+'")}\n')})(B[T].name,B[T].url);Q()}else t()};Editor.prototype.addMathCss=function(t){t=t.getElementsByTagName("defs");if(null!=t&&0<t.length)for(var B=document.getElementsByTagName("style"),M=0;M<B.length;M++){var R=
+mxUtils.getTextContent(B[M]);0>R.indexOf("mxPageSelector")&&0<R.indexOf("MathJax")&&t[0].appendChild(B[M].cloneNode(!0))}};Editor.prototype.addFontCss=function(t,B){B=null!=B?B:this.absoluteCssFonts(this.fontCss);if(null!=B){var M=t.getElementsByTagName("defs"),R=t.ownerDocument;0==M.length?(M=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"defs"):R.createElement("defs"),null!=t.firstChild?t.insertBefore(M,t.firstChild):t.appendChild(M)):M=M[0];t=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,
+"style"):R.createElement("style");t.setAttribute("type","text/css");mxUtils.setTextContent(t,B);M.appendChild(t)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(t,B,M){var R=mxClient.IS_FF?8192:16384;return Math.min(M,Math.min(R/t,R/B))};Editor.prototype.exportToCanvas=function(t,B,M,R,Q,T,P,W,Y,ca,Z,da,ha,ia,aa,Aa,Ga,Ca){try{T=null!=T?T:!0;P=null!=P?P:!0;da=null!=da?da:this.graph;ha=null!=ha?ha:0;var Da=
+Y?null:da.background;Da==mxConstants.NONE&&(Da=null);null==Da&&(Da=R);null==Da&&0==Y&&(Da=Aa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(da.getSvg(null,null,ha,ia,null,P,null,null,null,ca,null,Aa,Ga,Ca),mxUtils.bind(this,function(na){try{var Ia=new Image;Ia.onload=mxUtils.bind(this,function(){try{var xa=function(){mxClient.IS_SF?window.setTimeout(function(){va.drawImage(Ia,0,0);t(Ja,na)},0):(va.drawImage(Ia,0,0),t(Ja,na))},Ja=document.createElement("canvas"),Fa=parseInt(na.getAttribute("width")),
+Oa=parseInt(na.getAttribute("height"));W=null!=W?W:1;null!=B&&(W=T?Math.min(1,Math.min(3*B/(4*Oa),B/Fa)):B/Fa);W=this.getMaxCanvasScale(Fa,Oa,W);Fa=Math.ceil(W*Fa);Oa=Math.ceil(W*Oa);Ja.setAttribute("width",Fa);Ja.setAttribute("height",Oa);var va=Ja.getContext("2d");null!=Da&&(va.beginPath(),va.rect(0,0,Fa,Oa),va.fillStyle=Da,va.fill());1!=W&&va.scale(W,W);if(aa){var za=da.view,ta=za.scale;za.scale=1;var Ba=btoa(unescape(encodeURIComponent(za.createSvgGrid(za.gridColor))));za.scale=ta;Ba="data:image/svg+xml;base64,"+
+Ba;var ea=da.gridSize*za.gridSteps*W,wa=da.getGraphBounds(),ua=za.translate.x*ta,sa=za.translate.y*ta,ra=ua+(wa.x-ua)/ta-ha,ya=sa+(wa.y-sa)/ta-ha,ja=new Image;ja.onload=function(){try{for(var ma=-Math.round(ea-mxUtils.mod((ua-ra)*W,ea)),ba=-Math.round(ea-mxUtils.mod((sa-ya)*W,ea));ma<Fa;ma+=ea)for(var fa=ba;fa<Oa;fa+=ea)va.drawImage(ja,ma/W,fa/W);xa()}catch(oa){null!=Q&&Q(oa)}};ja.onerror=function(ma){null!=Q&&Q(ma)};ja.src=Ba}else xa()}catch(ma){null!=Q&&Q(ma)}});Ia.onerror=function(xa){null!=Q&&
+Q(xa)};ca&&this.graph.addSvgShadow(na);this.graph.mathEnabled&&this.addMathCss(na);var Ka=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(na,this.resolvedFontCss),Ia.src=Editor.createSvgDataUri(mxUtils.getXml(na))}catch(xa){null!=Q&&Q(xa)}});this.embedExtFonts(mxUtils.bind(this,function(xa){try{null!=xa&&this.addFontCss(na,xa),this.loadFonts(Ka)}catch(Ja){null!=Q&&Q(Ja)}}))}catch(xa){null!=Q&&Q(xa)}}),M,Z)}catch(na){null!=Q&&Q(na)}};Editor.crcTable=[];for(var m=0;256>
+m;m++)for(var n=m,v=0;8>v;v++)n=1==(n&1)?3988292384^n>>>1:n>>>1,Editor.crcTable[m]=n;Editor.updateCRC=function(t,B,M,R){for(var Q=0;Q<R;Q++)t=Editor.crcTable[(t^B.charCodeAt(M+Q))&255]^t>>>8;return t};Editor.crc32=function(t){for(var B=-1,M=0;M<t.length;M++)B=B>>>8^Editor.crcTable[(B^t.charCodeAt(M))&255];return(B^-1)>>>0};Editor.writeGraphModelToPng=function(t,B,M,R,Q){function T(Z,da){var ha=Y;Y+=da;return Z.substring(ha,Y)}function P(Z){Z=T(Z,4);return Z.charCodeAt(3)+(Z.charCodeAt(2)<<8)+(Z.charCodeAt(1)<<
+16)+(Z.charCodeAt(0)<<24)}function W(Z){return String.fromCharCode(Z>>24&255,Z>>16&255,Z>>8&255,Z&255)}t=t.substring(t.indexOf(",")+1);t=window.atob?atob(t):Base64.decode(t,!0);var Y=0;if(T(t,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=Q&&Q();else if(T(t,4),"IHDR"!=T(t,4))null!=Q&&Q();else{T(t,17);Q=t.substring(0,Y);do{var ca=P(t);if("IDAT"==T(t,4)){Q=t.substring(0,Y-8);"pHYs"==B&&"dpi"==M?(M=Math.round(R/.0254),M=W(M)+W(M)+String.fromCharCode(1)):M=M+String.fromCharCode(0)+
+("zTXt"==B?String.fromCharCode(0):"")+R;R=4294967295;R=Editor.updateCRC(R,B,0,4);R=Editor.updateCRC(R,M,0,M.length);Q+=W(M.length)+B+M+W(R^4294967295);Q+=t.substring(Y-8,t.length);break}Q+=t.substring(Y-8,Y-4+ca);T(t,ca);T(t,4)}while(ca);return"data:image/png;base64,"+(window.btoa?btoa(Q):Base64.encode(Q,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(t,B){d.apply(this,
+arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var g=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(t,B){var M=null;null!=t.editor.graph.getModel().getParent(B)?M=B.getId():null!=t.currentPage&&(M=t.currentPage.getId());return M});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;
+Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var l=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?l.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var t=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=t&&t.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=
+function(t){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(t){t=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var B=this.editorUi,M=B.editor.graph,R=this.createOption(mxResources.get("shadow"),function(){return M.shadowVisible},function(Q){var T=new ChangePageSetup(B);T.ignoreColor=!0;T.ignoreImage=!0;T.shadowVisible=Q;M.model.execute(T)},{install:function(Q){this.listener=function(){Q(M.shadowVisible)};
+B.addListener("shadowVisibleChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});Editor.enableShadowOption||(R.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(R,60));t.appendChild(R)}return t};var q=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(t){t=q.apply(this,arguments);var B=this.editorUi,M=B.editor.graph;if(M.isEnabled()){var R=B.getCurrentFile();if(null!=R&&R.isAutosaveOptional()){var Q=
+this.createOption(mxResources.get("autosave"),function(){return B.editor.autosave},function(P){B.editor.setAutosave(P);B.editor.autosave&&R.isModified()&&R.fileChanged()},{install:function(P){this.listener=function(){P(B.editor.autosave)};B.editor.addListener("autosaveChanged",this.listener)},destroy:function(){B.editor.removeListener(this.listener)}});t.appendChild(Q)}}if(this.isMathOptionVisible()&&M.isEnabled()&&"undefined"!==typeof MathJax){Q=this.createOption(mxResources.get("mathematicalTypesetting"),
+function(){return M.mathEnabled},function(P){B.actions.get("mathematicalTypesetting").funct()},{install:function(P){this.listener=function(){P(M.mathEnabled)};B.addListener("mathEnabledChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});Q.style.paddingTop="5px";t.appendChild(Q);var T=B.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");T.style.position="relative";T.style.marginLeft="6px";T.style.top="2px";Q.appendChild(T)}return t};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",
+dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",
+type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",
+dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=
+[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=
+[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
+{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",
+type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",
+type:"color",defVal:null}];mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
+mxCellRenderer.defaultShapes.tableRow.prototype.customProperties=mxCellRenderer.defaultShapes.swimlane.prototype.customProperties.concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",
+type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",
+type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",
+type:"float",min:0,defVal:24},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:12},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.dataStorage.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.1}];mxCellRenderer.defaultShapes.manualInput.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:30},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.loopLimit.prototype.customProperties=
+[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.offPageConnector.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:38},{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.display.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.singleArrow.prototype.customProperties=
+[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.doubleArrow.prototype.customProperties=[{name:"arrowWidth",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.3},{name:"arrowSize",dispName:"Arrowhead Length",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.cross.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,
+max:1,defVal:.2}];mxCellRenderer.defaultShapes.corner.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.tee.prototype.customProperties=[{name:"dx",dispName:"Width1",type:"float",min:0,defVal:20},{name:"dy",dispName:"Width2",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.umlLifeline.prototype.customProperties=[{name:"participant",dispName:"Participant",type:"enum",
+defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName:"Actor"},{val:"umlBoundary",dispName:"Boundary"},{val:"umlEntity",dispName:"Entity"},{val:"umlControl",dispName:"Control"}]},{name:"size",dispName:"Height",type:"float",defVal:40,min:0}];mxCellRenderer.defaultShapes.umlFrame.prototype.customProperties=[{name:"width",dispName:"Title Width",type:"float",defVal:60,min:0},{name:"height",dispName:"Title Height",type:"float",defVal:30,min:0}];StyleFormatPanel.prototype.defaultColorSchemes=
+[[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",font:"#333333"},{fill:"#dae8fc",stroke:"#6c8ebf"},{fill:"#d5e8d4",stroke:"#82b366"},{fill:"#ffe6cc",stroke:"#d79b00"},{fill:"#fff2cc",stroke:"#d6b656"},{fill:"#f8cecc",stroke:"#b85450"},{fill:"#e1d5e7",stroke:"#9673a6"}],[{fill:"",stroke:""},{fill:"#60a917",stroke:"#2D7600",font:"#ffffff"},{fill:"#008a00",stroke:"#005700",font:"#ffffff"},{fill:"#1ba1e2",stroke:"#006EAF",font:"#ffffff"},{fill:"#0050ef",stroke:"#001DBC",font:"#ffffff"},{fill:"#6a00ff",
+stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#000000"},{fill:"#f0a30a",stroke:"#BD7000",font:"#000000"},{fill:"#e3c800",stroke:"#B09500",font:"#000000"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",
+font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},
+{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=
+function(t,B,M){if(null!=B){var R=function(T){if(null!=T)if(M)for(var P=0;P<T.length;P++)B[T[P].name]=T[P];else for(var W in B){var Y=!1;for(P=0;P<T.length;P++)if(T[P].name==W&&T[P].type==B[W].type){Y=!0;break}Y||delete B[W]}},Q=this.editorUi.editor.graph.view.getState(t);null!=Q&&null!=Q.shape&&(Q.shape.commonCustomPropAdded||(Q.shape.commonCustomPropAdded=!0,Q.shape.customProperties=Q.shape.customProperties||[],Q.cell.vertex?Array.prototype.push.apply(Q.shape.customProperties,Editor.commonVertexProperties):
+Array.prototype.push.apply(Q.shape.customProperties,Editor.commonEdgeProperties)),R(Q.shape.customProperties));t=t.getAttribute("customProperties");if(null!=t)try{R(JSON.parse(t))}catch(T){}}};var x=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var t=this.editorUi.getSelectionState();"image"!=t.style.shape&&!t.containsLabel&&0<t.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));x.apply(this,arguments);if(Editor.enableCustomProperties){for(var B=
+{},M=t.vertices,R=t.edges,Q=0;Q<M.length;Q++)this.findCommonProperties(M[Q],B,0==Q);for(Q=0;Q<R.length;Q++)this.findCommonProperties(R[Q],B,0==M.length&&0==Q);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(B).length&&this.container.appendChild(this.addProperties(this.createPanel(),B,t))}};var y=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(t){this.addActions(t,["copyStyle","pasteStyle"]);return y.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
+!0;StyleFormatPanel.prototype.addProperties=function(t,B,M){function R(va,za,ta,Ba){da.getModel().beginUpdate();try{var ea=[],wa=[];if(null!=ta.index){for(var ua=[],sa=ta.parentRow.nextSibling;sa&&sa.getAttribute("data-pName")==va;)ua.push(sa.getAttribute("data-pValue")),sa=sa.nextSibling;ta.index<ua.length?null!=Ba?ua.splice(Ba,1):ua[ta.index]=za:ua.push(za);null!=ta.size&&ua.length>ta.size&&(ua=ua.slice(0,ta.size));za=ua.join(",");null!=ta.countProperty&&(da.setCellStyles(ta.countProperty,ua.length,
+da.getSelectionCells()),ea.push(ta.countProperty),wa.push(ua.length))}da.setCellStyles(va,za,da.getSelectionCells());ea.push(va);wa.push(za);if(null!=ta.dependentProps)for(va=0;va<ta.dependentProps.length;va++){var ra=ta.dependentPropsDefVal[va],ya=ta.dependentPropsVals[va];if(ya.length>za)ya=ya.slice(0,za);else for(var ja=ya.length;ja<za;ja++)ya.push(ra);ya=ya.join(",");da.setCellStyles(ta.dependentProps[va],ya,da.getSelectionCells());ea.push(ta.dependentProps[va]);wa.push(ya)}if("function"==typeof ta.onChange)ta.onChange(da,
+za);Z.editorUi.fireEvent(new mxEventObject("styleChanged","keys",ea,"values",wa,"cells",da.getSelectionCells()))}finally{da.getModel().endUpdate()}}function Q(va,za,ta){var Ba=mxUtils.getOffset(t,!0),ea=mxUtils.getOffset(va,!0);za.style.position="absolute";za.style.left=ea.x-Ba.x+"px";za.style.top=ea.y-Ba.y+"px";za.style.width=va.offsetWidth+"px";za.style.height=va.offsetHeight-(ta?4:0)+"px";za.style.zIndex=5}function T(va,za,ta){var Ba=document.createElement("div");Ba.style.width="32px";Ba.style.height=
+"4px";Ba.style.margin="2px";Ba.style.border="1px solid black";Ba.style.background=za&&"none"!=za?za:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(Z,function(ea){this.editorUi.pickColor(za,function(wa){Ba.style.background="none"==wa?"url('"+Dialog.prototype.noColorImage+"')":wa;R(va,wa,ta)});mxEvent.consume(ea)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(Ba);return btn}function P(va,za,ta,Ba,ea,wa,ua){null!=za&&(za=za.split(","),
+ha.push({name:va,values:za,type:ta,defVal:Ba,countProperty:ea,parentRow:wa,isDeletable:!0,flipBkg:ua}));btn=mxUtils.button("+",mxUtils.bind(Z,function(sa){for(var ra=wa,ya=0;null!=ra.nextSibling;)if(ra.nextSibling.getAttribute("data-pName")==va)ra=ra.nextSibling,ya++;else break;var ja={type:ta,parentRow:wa,index:ya,isDeletable:!0,defVal:Ba,countProperty:ea};ya=ca(va,"",ja,0==ya%2,ua);R(va,Ba,ja);ra.parentNode.insertBefore(ya,ra.nextSibling);mxEvent.consume(sa)}));btn.style.height="16px";btn.style.width=
+"25px";btn.className="geColorBtn";return btn}function W(va,za,ta,Ba,ea,wa,ua){if(0<ea){var sa=Array(ea);za=null!=za?za.split(","):[];for(var ra=0;ra<ea;ra++)sa[ra]=null!=za[ra]?za[ra]:null!=Ba?Ba:"";ha.push({name:va,values:sa,type:ta,defVal:Ba,parentRow:wa,flipBkg:ua,size:ea})}return document.createElement("div")}function Y(va,za,ta){var Ba=document.createElement("input");Ba.type="checkbox";Ba.checked="1"==za;mxEvent.addListener(Ba,"change",function(){R(va,Ba.checked?"1":"0",ta)});return Ba}function ca(va,
+za,ta,Ba,ea){var wa=ta.dispName,ua=ta.type,sa=document.createElement("tr");sa.className="gePropRow"+(ea?"Dark":"")+(Ba?"Alt":"")+" gePropNonHeaderRow";sa.setAttribute("data-pName",va);sa.setAttribute("data-pValue",za);Ba=!1;null!=ta.index&&(sa.setAttribute("data-index",ta.index),wa=(null!=wa?wa:"")+"["+ta.index+"]",Ba=!0);var ra=document.createElement("td");ra.className="gePropRowCell";wa=mxResources.get(wa,null,wa);mxUtils.write(ra,wa);ra.setAttribute("title",wa);Ba&&(ra.style.textAlign="right");
+sa.appendChild(ra);ra=document.createElement("td");ra.className="gePropRowCell";if("color"==ua)ra.appendChild(T(va,za,ta));else if("bool"==ua||"boolean"==ua)ra.appendChild(Y(va,za,ta));else if("enum"==ua){var ya=ta.enumList;for(ea=0;ea<ya.length;ea++)if(wa=ya[ea],wa.val==za){mxUtils.write(ra,mxResources.get(wa.dispName,null,wa.dispName));break}mxEvent.addListener(ra,"click",mxUtils.bind(Z,function(){var ja=document.createElement("select");Q(ra,ja);for(var ma=0;ma<ya.length;ma++){var ba=ya[ma],fa=
+document.createElement("option");fa.value=mxUtils.htmlEntities(ba.val);mxUtils.write(fa,mxResources.get(ba.dispName,null,ba.dispName));ja.appendChild(fa)}ja.value=za;t.appendChild(ja);mxEvent.addListener(ja,"change",function(){var oa=mxUtils.htmlEntities(ja.value);R(va,oa,ta)});ja.focus();mxEvent.addListener(ja,"blur",function(){t.removeChild(ja)})}))}else"dynamicArr"==ua?ra.appendChild(P(va,za,ta.subType,ta.subDefVal,ta.countProperty,sa,ea)):"staticArr"==ua?ra.appendChild(W(va,za,ta.subType,ta.subDefVal,
+ta.size,sa,ea)):"readOnly"==ua?(ea=document.createElement("input"),ea.setAttribute("readonly",""),ea.value=za,ea.style.width="96px",ea.style.borderWidth="0px",ra.appendChild(ea)):(ra.innerHTML=mxUtils.htmlEntities(decodeURIComponent(za)),mxEvent.addListener(ra,"click",mxUtils.bind(Z,function(){function ja(){var ba=ma.value;ba=0==ba.length&&"string"!=ua?0:ba;ta.allowAuto&&(null!=ba.trim&&"auto"==ba.trim().toLowerCase()?(ba="auto",ua="string"):(ba=parseFloat(ba),ba=isNaN(ba)?0:ba));null!=ta.min&&ba<
+ta.min?ba=ta.min:null!=ta.max&&ba>ta.max&&(ba=ta.max);ba=encodeURIComponent(("int"==ua?parseInt(ba):ba)+"");R(va,ba,ta)}var ma=document.createElement("input");Q(ra,ma,!0);ma.value=decodeURIComponent(za);ma.className="gePropEditor";"int"!=ua&&"float"!=ua||ta.allowAuto||(ma.type="number",ma.step="int"==ua?"1":"any",null!=ta.min&&(ma.min=parseFloat(ta.min)),null!=ta.max&&(ma.max=parseFloat(ta.max)));t.appendChild(ma);mxEvent.addListener(ma,"keypress",function(ba){13==ba.keyCode&&ja()});ma.focus();mxEvent.addListener(ma,
+"blur",function(){ja()})})));ta.isDeletable&&(ea=mxUtils.button("-",mxUtils.bind(Z,function(ja){R(va,"",ta,ta.index);mxEvent.consume(ja)})),ea.style.height="16px",ea.style.width="25px",ea.style.float="right",ea.className="geColorBtn",ra.appendChild(ea));sa.appendChild(ra);return sa}var Z=this,da=this.editorUi.editor.graph,ha=[];t.style.position="relative";t.style.padding="0";var ia=document.createElement("table");ia.className="geProperties";ia.style.whiteSpace="nowrap";ia.style.width="100%";var aa=
+document.createElement("tr");aa.className="gePropHeader";var Aa=document.createElement("th");Aa.className="gePropHeaderCell";var Ga=document.createElement("img");Ga.src=Sidebar.prototype.expandedImage;Ga.style.verticalAlign="middle";Aa.appendChild(Ga);mxUtils.write(Aa,mxResources.get("property"));aa.style.cursor="pointer";var Ca=function(){var va=ia.querySelectorAll(".gePropNonHeaderRow");if(Z.editorUi.propertiesCollapsed){Ga.src=Sidebar.prototype.collapsedImage;var za="none";for(var ta=t.childNodes.length-
+1;0<=ta;ta--)try{var Ba=t.childNodes[ta],ea=Ba.nodeName.toUpperCase();"INPUT"!=ea&&"SELECT"!=ea||t.removeChild(Ba)}catch(wa){}}else Ga.src=Sidebar.prototype.expandedImage,za="";for(ta=0;ta<va.length;ta++)va[ta].style.display=za};mxEvent.addListener(aa,"click",function(){Z.editorUi.propertiesCollapsed=!Z.editorUi.propertiesCollapsed;Ca()});aa.appendChild(Aa);Aa=document.createElement("th");Aa.className="gePropHeaderCell";Aa.innerHTML=mxResources.get("value");aa.appendChild(Aa);ia.appendChild(aa);var Da=
+!1,na=!1;aa=null;1==M.vertices.length&&0==M.edges.length?aa=M.vertices[0].id:0==M.vertices.length&&1==M.edges.length&&(aa=M.edges[0].id);null!=aa&&ia.appendChild(ca("id",mxUtils.htmlEntities(aa),{dispName:"ID",type:"readOnly"},!0,!1));for(var Ia in B)if(aa=B[Ia],"function"!=typeof aa.isVisible||aa.isVisible(M,this)){var Ka=null!=M.style[Ia]?mxUtils.htmlEntities(M.style[Ia]+""):null!=aa.getDefaultValue?aa.getDefaultValue(M,this):aa.defVal;if("separator"==aa.type)na=!na;else{if("staticArr"==aa.type)aa.size=
+parseInt(M.style[aa.sizeProperty]||B[aa.sizeProperty].defVal)||0;else if(null!=aa.dependentProps){var xa=aa.dependentProps,Ja=[],Fa=[];for(Aa=0;Aa<xa.length;Aa++){var Oa=M.style[xa[Aa]];Fa.push(B[xa[Aa]].subDefVal);Ja.push(null!=Oa?Oa.split(","):[])}aa.dependentPropsDefVal=Fa;aa.dependentPropsVals=Ja}ia.appendChild(ca(Ia,Ka,aa,Da,na));Da=!Da}}for(Aa=0;Aa<ha.length;Aa++)for(aa=ha[Aa],B=aa.parentRow,M=0;M<aa.values.length;M++)Ia=ca(aa.name,aa.values[M],{type:aa.type,parentRow:aa.parentRow,isDeletable:aa.isDeletable,
+index:M,defVal:aa.defVal,countProperty:aa.countProperty,size:aa.size},0==M%2,aa.flipBkg),B.parentNode.insertBefore(Ia,B.nextSibling),B=Ia;t.appendChild(ia);Ca();return t};StyleFormatPanel.prototype.addStyles=function(t){function B(aa){mxEvent.addListener(aa,"mouseenter",function(){aa.style.opacity="1"});mxEvent.addListener(aa,"mouseleave",function(){aa.style.opacity="0.5"})}var M=this.editorUi,R=M.editor.graph,Q=document.createElement("div");Q.style.whiteSpace="nowrap";Q.style.paddingLeft="24px";
+Q.style.paddingRight="20px";t.style.paddingLeft="16px";t.style.paddingBottom="6px";t.style.position="relative";t.appendChild(Q);var T="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(" "),P=document.createElement("div");P.style.whiteSpace="nowrap";P.style.position="relative";P.style.textAlign="center";P.style.width="210px";for(var W=[],Y=0;Y<this.defaultColorSchemes.length;Y++){var ca=
+document.createElement("div");ca.style.display="inline-block";ca.style.width="6px";ca.style.height="6px";ca.style.marginLeft="4px";ca.style.marginRight="3px";ca.style.borderRadius="3px";ca.style.cursor="pointer";ca.style.background="transparent";ca.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(aa){mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){Z(aa)}))})(Y);W.push(ca);P.appendChild(ca)}var Z=mxUtils.bind(this,function(aa){null!=W[aa]&&(null!=this.format.currentScheme&&null!=
+W[this.format.currentScheme]&&(W[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=aa,da(this.defaultColorSchemes[this.format.currentScheme]),W[this.format.currentScheme].style.background="#84d7ff")}),da=mxUtils.bind(this,function(aa){var Aa=mxUtils.bind(this,function(Ca){var Da=mxUtils.button("",mxUtils.bind(this,function(Ka){R.getModel().beginUpdate();try{for(var xa=M.getSelectionState().cells,Ja=0;Ja<xa.length;Ja++){for(var Fa=R.getModel().getStyle(xa[Ja]),Oa=
+0;Oa<T.length;Oa++)Fa=mxUtils.removeStylename(Fa,T[Oa]);var va=R.getModel().isVertex(xa[Ja])?R.defaultVertexStyle:R.defaultEdgeStyle;null!=Ca?(mxEvent.isShiftDown(Ka)||(Fa=""==Ca.fill?mxUtils.setStyle(Fa,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(Fa,mxConstants.STYLE_FILLCOLOR,Ca.fill||mxUtils.getValue(va,mxConstants.STYLE_FILLCOLOR,null)),Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_GRADIENTCOLOR,Ca.gradient||mxUtils.getValue(va,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(Ka)||
+mxClient.IS_MAC&&mxEvent.isMetaDown(Ka)||!R.getModel().isVertex(xa[Ja])||(Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_FONTCOLOR,Ca.font||mxUtils.getValue(va,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(Ka)||(Fa=""==Ca.stroke?mxUtils.setStyle(Fa,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(Fa,mxConstants.STYLE_STROKECOLOR,Ca.stroke||mxUtils.getValue(va,mxConstants.STYLE_STROKECOLOR,null)))):(Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(va,mxConstants.STYLE_FILLCOLOR,
+"#ffffff")),Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(va,mxConstants.STYLE_STROKECOLOR,"#000000")),Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(va,mxConstants.STYLE_GRADIENTCOLOR,null)),R.getModel().isVertex(xa[Ja])&&(Fa=mxUtils.setStyle(Fa,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(va,mxConstants.STYLE_FONTCOLOR,null))));R.getModel().setStyle(xa[Ja],Fa)}}finally{R.getModel().endUpdate()}}));Da.className="geStyleButton";Da.style.width="36px";
+Da.style.height=10>=this.defaultColorSchemes.length?"24px":"30px";Da.style.margin="0px 6px 6px 0px";if(null!=Ca){var na="1"==urlParams.sketch?"2px solid":"1px solid";null!=Ca.gradient?mxClient.IS_IE&&10>document.documentMode?Da.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+Ca.fill+"', EndColorStr='"+Ca.gradient+"', GradientType=0)":Da.style.backgroundImage="linear-gradient("+Ca.fill+" 0px,"+Ca.gradient+" 100%)":Ca.fill==mxConstants.NONE?Da.style.background="url('"+Dialog.prototype.noColorImage+
+"')":Da.style.backgroundColor=""==Ca.fill?mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):Ca.fill||mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");Da.style.border=Ca.stroke==mxConstants.NONE?na+" transparent":""==Ca.stroke?na+" "+mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):na+" "+(Ca.stroke||mxUtils.getValue(R.defaultVertexStyle,
+mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=Ca.title&&Da.setAttribute("title",Ca.title)}else{na=mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var Ia=mxUtils.getValue(R.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");Da.style.backgroundColor=na;Da.style.border="1px solid "+Ia}Da.style.borderRadius="0";Q.appendChild(Da)});Q.innerText="";for(var Ga=0;Ga<aa.length;Ga++)0<Ga&&0==mxUtils.mod(Ga,4)&&mxUtils.br(Q),Aa(aa[Ga])});
+null==this.format.currentScheme?Z(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):Z(this.format.currentScheme);Y=10>=this.defaultColorSchemes.length?28:8;var ha=document.createElement("div");ha.style.cssText="position:absolute;left:10px;top:8px;bottom:"+Y+"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(ha,"click",mxUtils.bind(this,function(){Z(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var ia=document.createElement("div");ia.style.cssText="position:absolute;left:202px;top:8px;bottom:"+Y+"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&&(t.appendChild(ha),t.appendChild(ia));mxEvent.addListener(ia,"click",mxUtils.bind(this,function(){Z(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));B(ha);B(ia);da(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&t.appendChild(P);return t};StyleFormatPanel.prototype.addEditOps=function(t){var B=this.editorUi.getSelectionState(),M=this.editorUi.editor.graph,R=null;1==B.cells.length&&(R=mxUtils.button(mxResources.get("editStyle"),
mxUtils.bind(this,function(Q){this.editorUi.actions.get("editStyle").funct()})),R.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),R.style.width="210px",R.style.marginBottom="2px",t.appendChild(R));M=1==B.cells.length?M.view.getState(B.cells[0]):null;null!=M&&null!=M.shape&&null!=M.shape.stencil?(B=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(Q){this.editorUi.actions.get("editShape").funct()})),B.setAttribute("title",
@@ -11681,33 +11682,33 @@ mxStencilRegistry.libraries["mockup/navigation"]=[SHAPES_PATH+"/mockup/mxMockupN
[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(t){var B=null;null!=t&&0<t.length&&("ER"==t.substring(0,2)?B="mxgraph.er":"sysML"==t.substring(0,5)&&(B="mxgraph.sysml"));return B};var S=mxMarker.createMarker;mxMarker.createMarker=function(t,B,M,R,Q,T,P,W,Y,ca){if(null!=M&&null==mxMarker.markers[M]){var Z=this.getPackageForType(M);null!=Z&&mxStencilRegistry.getStencil(Z)}return S.apply(this,arguments)};var X=mxStencil.prototype.drawShape;mxStencil.prototype.drawShape=function(t,
B,M,R,Q,T){"1"==mxUtils.getValue(B.style,"lineShape",null)&&t.setFillColor(mxUtils.getValue(B.style,mxConstants.STYLE_STROKECOLOR,this.stroke));return X.apply(this,arguments)};PrintDialog.prototype.create=function(t,B){function M(){ha.value=Math.max(1,Math.min(W,Math.max(parseInt(ha.value),parseInt(da.value))));da.value=Math.max(1,Math.min(W,Math.min(parseInt(ha.value),parseInt(da.value))))}function R(wa){function ua(Ha,La,Qa){var Na=Ha.useCssTransforms,Ra=Ha.currentTranslate,Xa=Ha.currentScale,Ma=
-Ha.view.translate,Ta=Ha.view.scale;Ha.useCssTransforms&&(Ha.useCssTransforms=!1,Ha.currentTranslate=new mxPoint(0,0),Ha.currentScale=1,Ha.view.translate=new mxPoint(0,0),Ha.view.scale=1);var Ua=Ha.getGraphBounds(),Va=0,Za=0,Wa=Ba.get(),ab=1/Ha.pageScale,Ya=Ca.checked;if(Ya){ab=parseInt(za.value);var gb=parseInt(ta.value);ab=Math.min(Wa.height*gb/(Ua.height/Ha.view.scale),Wa.width*ab/(Ua.width/Ha.view.scale))}else ab=parseInt(Ga.value)/(100*Ha.pageScale),isNaN(ab)&&(sa=1/Ha.pageScale,Ga.value="100 %");
-Wa=mxRectangle.fromRectangle(Wa);Wa.width=Math.ceil(Wa.width*sa);Wa.height=Math.ceil(Wa.height*sa);ab*=sa;!Ya&&Ha.pageVisible?(Ua=Ha.getPageLayout(),Va-=Ua.x*Wa.width,Za-=Ua.y*Wa.height):Ya=!0;if(null==La){La=PrintDialog.createPrintPreview(Ha,ab,Wa,0,Va,Za,Ya);La.pageSelector=!1;La.mathEnabled=!1;ia.checked&&(La.isCellVisible=function($a){return Ha.isCellSelected($a)});Va=t.getCurrentFile();null!=Va&&(La.title=Va.getTitle());var hb=La.writeHead;La.writeHead=function($a){hb.apply(this,arguments);null!=
-t.editor.fontCss&&($a.writeln('<style type="text/css">'),$a.writeln(t.editor.fontCss),$a.writeln("</style>"));for(var cb=Ha.getCustomFonts(),bb=0;bb<cb.length;bb++){var eb=cb[bb].name,db=cb[bb].url;Graph.isCssFontUrl(db)?$a.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(db)+'" charset="UTF-8" type="text/css">'):($a.writeln('<style type="text/css">'),$a.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(eb)+'";\nsrc: url("'+mxUtils.htmlEntities(db)+'");\n}'),$a.writeln("</style>"))}};
-if("undefined"!==typeof MathJax){var ib=La.renderPage;La.renderPage=function($a,cb,bb,eb,db,kb){var jb=mxClient.NO_FO,fb=ib.apply(this,arguments);mxClient.NO_FO=jb;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:fb.className="geDisableMathJax";return fb}}Va=null;Za=Q.shapeForegroundColor;Ya=Q.shapeBackgroundColor;Wa=Q.enableFlowAnimation;Q.enableFlowAnimation=!1;null!=Q.themes&&"darkTheme"==Q.defaultThemeName&&(Va=Q.stylesheet,Q.stylesheet=Q.getDefaultStylesheet(),Q.shapeForegroundColor=
-"#000000",Q.shapeBackgroundColor="#ffffff",Q.refresh());La.open(null,null,Qa,!0);Q.enableFlowAnimation=Wa;null!=Va&&(Q.shapeForegroundColor=Za,Q.shapeBackgroundColor=Ya,Q.stylesheet=Va,Q.refresh())}else{Wa=Ha.background;if(null==Wa||""==Wa||Wa==mxConstants.NONE)Wa="#ffffff";La.backgroundColor=Wa;La.autoOrigin=Ya;La.appendGraph(Ha,ab,Va,Za,Qa,!0);Qa=Ha.getCustomFonts();if(null!=La.wnd)for(Va=0;Va<Qa.length;Va++)Za=Qa[Va].name,Ya=Qa[Va].url,Graph.isCssFontUrl(Ya)?La.wnd.document.writeln('<link rel="stylesheet" href="'+
-mxUtils.htmlEntities(Ya)+'" charset="UTF-8" type="text/css">'):(La.wnd.document.writeln('<style type="text/css">'),La.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(Za)+'";\nsrc: url("'+mxUtils.htmlEntities(Ya)+'");\n}'),La.wnd.document.writeln("</style>"))}Na&&(Ha.useCssTransforms=Na,Ha.currentTranslate=Ra,Ha.currentScale=Xa,Ha.view.translate=Ma,Ha.view.scale=Ta);return La}var sa=parseInt(ea.value)/100;isNaN(sa)&&(sa=1,ea.value="100 %");sa*=.75;var ra=null,ya=Q.shapeForegroundColor,
-ja=Q.shapeBackgroundColor;null!=Q.themes&&"darkTheme"==Q.defaultThemeName&&(ra=Q.stylesheet,Q.stylesheet=Q.getDefaultStylesheet(),Q.shapeForegroundColor="#000000",Q.shapeBackgroundColor="#ffffff",Q.refresh());var ma=da.value,ba=ha.value,fa=!ca.checked,oa=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(t,ca.checked,ma,ba,Ca.checked,za.value,ta.value,parseInt(Ga.value)/100,parseInt(ea.value)/100,Ba.get());else{fa&&(fa=ia.checked||ma==Y&&ba==Y);if(!fa&&null!=t.pages&&t.pages.length){var la=
-0;fa=t.pages.length-1;ca.checked||(la=parseInt(ma)-1,fa=parseInt(ba)-1);for(var qa=la;qa<=fa;qa++){var pa=t.pages[qa];ma=pa==t.currentPage?Q:null;if(null==ma){ma=t.createTemporaryGraph(Q.stylesheet);ma.shapeForegroundColor=Q.shapeForegroundColor;ma.shapeBackgroundColor=Q.shapeBackgroundColor;ba=!0;la=!1;var ka=null,Ea=null;null==pa.viewState&&null==pa.root&&t.updatePageRoot(pa);null!=pa.viewState&&(ba=pa.viewState.pageVisible,la=pa.viewState.mathEnabled,ka=pa.viewState.background,Ea=pa.viewState.backgroundImage,
-ma.extFonts=pa.viewState.extFonts);null!=Ea&&null!=Ea.originalSrc&&(Ea=t.createImageForPageLink(Ea.originalSrc,pa));ma.background=ka;ma.backgroundImage=null!=Ea?new mxImage(Ea.src,Ea.width,Ea.height,Ea.x,Ea.y):null;ma.pageVisible=ba;ma.mathEnabled=la;var Pa=ma.getGraphBounds;ma.getGraphBounds=function(){var Ha=Pa.apply(this,arguments),La=this.backgroundImage;if(null!=La&&null!=La.width&&null!=La.height){var Qa=this.view.translate,Na=this.view.scale;Ha=mxRectangle.fromRectangle(Ha);Ha.add(new mxRectangle((Qa.x+
-La.x)*Na,(Qa.y+La.y)*Na,La.width*Na,La.height*Na))}return Ha};var Sa=ma.getGlobalVariable;ma.getGlobalVariable=function(Ha){return"page"==Ha?pa.getName():"pagenumber"==Ha?qa+1:"pagecount"==Ha?null!=t.pages?t.pages.length:1:Sa.apply(this,arguments)};document.body.appendChild(ma.container);t.updatePageRoot(pa);ma.model.setRoot(pa.root)}oa=ua(ma,oa,qa!=fa);ma!=Q&&ma.container.parentNode.removeChild(ma.container)}}else oa=ua(Q);null==oa?t.handleError({message:mxResources.get("errorUpdatingPreview")}):
-(oa.mathEnabled&&(fa=oa.wnd.document,wa&&(oa.wnd.IMMEDIATE_PRINT=!0),fa.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),oa.closeDocument(),!oa.mathEnabled&&wa&&PrintDialog.printPreview(oa));null!=ra&&(Q.shapeForegroundColor=ya,Q.shapeBackgroundColor=ja,Q.stylesheet=ra,Q.refresh())}}var Q=t.editor.graph,T=document.createElement("div"),P=document.createElement("h3");P.style.width="100%";P.style.textAlign="center";P.style.marginTop="0px";mxUtils.write(P,
-B||mxResources.get("print"));T.appendChild(P);var W=1,Y=1;P=document.createElement("div");P.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var ca=document.createElement("input");ca.style.cssText="margin-right:8px;margin-bottom:8px;";ca.setAttribute("value","all");ca.setAttribute("type","radio");ca.setAttribute("name","pages-printdialog");P.appendChild(ca);B=document.createElement("span");mxUtils.write(B,mxResources.get("printAllPages"));P.appendChild(B);
-mxUtils.br(P);var Z=ca.cloneNode(!0);ca.setAttribute("checked","checked");Z.setAttribute("value","range");P.appendChild(Z);B=document.createElement("span");mxUtils.write(B,mxResources.get("pages")+":");P.appendChild(B);var da=document.createElement("input");da.style.cssText="margin:0 8px 0 8px;";da.setAttribute("value","1");da.setAttribute("type","number");da.setAttribute("min","1");da.style.width="50px";P.appendChild(da);B=document.createElement("span");mxUtils.write(B,mxResources.get("to"));P.appendChild(B);
-var ha=da.cloneNode(!0);P.appendChild(ha);mxEvent.addListener(da,"focus",function(){Z.checked=!0});mxEvent.addListener(ha,"focus",function(){Z.checked=!0});mxEvent.addListener(da,"change",M);mxEvent.addListener(ha,"change",M);if(null!=t.pages&&(W=t.pages.length,null!=t.currentPage))for(B=0;B<t.pages.length;B++)if(t.currentPage==t.pages[B]){Y=B+1;da.value=Y;ha.value=Y;break}da.setAttribute("max",W);ha.setAttribute("max",W);t.isPagesEnabled()?1<W&&(T.appendChild(P),Z.checked=!0):Z.checked=!0;mxUtils.br(P);
-var ia=document.createElement("input");ia.setAttribute("value","all");ia.setAttribute("type","radio");ia.style.marginRight="8px";Q.isSelectionEmpty()&&ia.setAttribute("disabled","disabled");var aa=document.createElement("div");aa.style.marginBottom="10px";1==W?(ia.setAttribute("type","checkbox"),ia.style.marginBottom="12px",aa.appendChild(ia)):(ia.setAttribute("name","pages-printdialog"),ia.style.marginBottom="8px",P.appendChild(ia));B=document.createElement("span");mxUtils.write(B,mxResources.get("selectionOnly"));
-ia.parentNode.appendChild(B);1==W&&mxUtils.br(ia.parentNode);var Aa=document.createElement("input");Aa.style.marginRight="8px";Aa.setAttribute("value","adjust");Aa.setAttribute("type","radio");Aa.setAttribute("name","printZoom");aa.appendChild(Aa);B=document.createElement("span");mxUtils.write(B,mxResources.get("adjustTo"));aa.appendChild(B);var Ga=document.createElement("input");Ga.style.cssText="margin:0 8px 0 8px;";Ga.setAttribute("value","100 %");Ga.style.width="50px";aa.appendChild(Ga);mxEvent.addListener(Ga,
-"focus",function(){Aa.checked=!0});T.appendChild(aa);P=P.cloneNode(!1);var Ca=Aa.cloneNode(!0);Ca.setAttribute("value","fit");Aa.setAttribute("checked","checked");B=document.createElement("div");B.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";B.appendChild(Ca);P.appendChild(B);aa=document.createElement("table");aa.style.display="inline-block";var Da=document.createElement("tbody"),na=document.createElement("tr"),Ia=na.cloneNode(!0),Ka=document.createElement("td"),xa=Ka.cloneNode(!0),
-Ja=Ka.cloneNode(!0),Fa=Ka.cloneNode(!0),Oa=Ka.cloneNode(!0),va=Ka.cloneNode(!0);Ka.style.textAlign="right";Fa.style.textAlign="right";mxUtils.write(Ka,mxResources.get("fitTo"));var za=document.createElement("input");za.style.cssText="margin:0 8px 0 8px;";za.setAttribute("value","1");za.setAttribute("min","1");za.setAttribute("type","number");za.style.width="40px";xa.appendChild(za);B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsAcross"));Ja.appendChild(B);mxUtils.write(Fa,
-mxResources.get("fitToBy"));var ta=za.cloneNode(!0);Oa.appendChild(ta);mxEvent.addListener(za,"focus",function(){Ca.checked=!0});mxEvent.addListener(ta,"focus",function(){Ca.checked=!0});B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsDown"));va.appendChild(B);na.appendChild(Ka);na.appendChild(xa);na.appendChild(Ja);Ia.appendChild(Fa);Ia.appendChild(Oa);Ia.appendChild(va);Da.appendChild(na);Da.appendChild(Ia);aa.appendChild(Da);P.appendChild(aa);T.appendChild(P);P=document.createElement("div");
-B=document.createElement("div");B.style.fontWeight="bold";B.style.marginBottom="12px";mxUtils.write(B,mxResources.get("paperSize"));P.appendChild(B);B=document.createElement("div");B.style.marginBottom="12px";var Ba=PageSetupDialog.addPageFormatPanel(B,"printdialog",t.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);P.appendChild(B);B=document.createElement("span");mxUtils.write(B,mxResources.get("pageScale"));P.appendChild(B);var ea=document.createElement("input");ea.style.cssText="margin:0 8px 0 8px;";
-ea.setAttribute("value","100 %");ea.style.width="60px";P.appendChild(ea);T.appendChild(P);B=document.createElement("div");B.style.cssText="text-align:right;margin:48px 0 0 0;";P=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});P.className="geBtn";t.editor.cancelFirst&&B.appendChild(P);t.isOffline()||(aa=mxUtils.button(mxResources.get("help"),function(){Q.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),aa.className="geBtn",B.appendChild(aa));PrintDialog.previewEnabled&&
-(aa=mxUtils.button(mxResources.get("preview"),function(){t.hideDialog();R(!1)}),aa.className="geBtn",B.appendChild(aa));aa=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){t.hideDialog();R(!0)});aa.className="geBtn gePrimaryBtn";B.appendChild(aa);t.editor.cancelFirst||B.appendChild(P);T.appendChild(B);this.container=T};var J=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 t=this.image;null!=t&&null!=t.src&&Graph.isPageLink(t.src)&&(t={originalSrc:t.src});this.page.viewState.backgroundImage=t}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 J.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 V=document.createElement("canvas"),U=new Image;U.onload=function(){try{V.getContext("2d").drawImage(U,0,0);var t=V.toDataURL("image/png");
-Editor.prototype.useCanvasForExport=null!=t&&6<t.length}catch(B){}};U.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}})();
+Ha.view.translate,Ta=Ha.view.scale;Ha.useCssTransforms&&(Ha.useCssTransforms=!1,Ha.currentTranslate=new mxPoint(0,0),Ha.currentScale=1,Ha.view.translate=new mxPoint(0,0),Ha.view.scale=1);var Ua=Ha.getGraphBounds(),Va=0,$a=0,Wa=Ba.get(),ab=1/Ha.pageScale,Za=Ca.checked;if(Za){ab=parseInt(za.value);var gb=parseInt(ta.value);ab=Math.min(Wa.height*gb/(Ua.height/Ha.view.scale),Wa.width*ab/(Ua.width/Ha.view.scale))}else ab=parseInt(Ga.value)/(100*Ha.pageScale),isNaN(ab)&&(sa=1/Ha.pageScale,Ga.value="100 %");
+Wa=mxRectangle.fromRectangle(Wa);Wa.width=Math.ceil(Wa.width*sa);Wa.height=Math.ceil(Wa.height*sa);ab*=sa;!Za&&Ha.pageVisible?(Ua=Ha.getPageLayout(),Va-=Ua.x*Wa.width,$a-=Ua.y*Wa.height):Za=!0;if(null==La){La=PrintDialog.createPrintPreview(Ha,ab,Wa,0,Va,$a,Za);La.pageSelector=!1;La.mathEnabled=!1;ia.checked&&(La.isCellVisible=function(Ya){return Ha.isCellSelected(Ya)});Va=t.getCurrentFile();null!=Va&&(La.title=Va.getTitle());var hb=La.writeHead;La.writeHead=function(Ya){hb.apply(this,arguments);mxClient.IS_GC&&
+(Ya.writeln('<style type="text/css">'),Ya.writeln("@media print {"),Ya.writeln(".MathJax svg { shape-rendering: crispEdges; }"),Ya.writeln("}"),Ya.writeln("</style>"));null!=t.editor.fontCss&&(Ya.writeln('<style type="text/css">'),Ya.writeln(t.editor.fontCss),Ya.writeln("</style>"));for(var cb=Ha.getCustomFonts(),bb=0;bb<cb.length;bb++){var eb=cb[bb].name,db=cb[bb].url;Graph.isCssFontUrl(db)?Ya.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(db)+'" charset="UTF-8" type="text/css">'):
+(Ya.writeln('<style type="text/css">'),Ya.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(eb)+'";\nsrc: url("'+mxUtils.htmlEntities(db)+'");\n}'),Ya.writeln("</style>"))}};if("undefined"!==typeof MathJax){var ib=La.renderPage;La.renderPage=function(Ya,cb,bb,eb,db,kb){var jb=mxClient.NO_FO,fb=ib.apply(this,arguments);mxClient.NO_FO=jb;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:fb.className="geDisableMathJax";return fb}}Va=null;$a=Q.shapeForegroundColor;Za=Q.shapeBackgroundColor;
+Wa=Q.enableFlowAnimation;Q.enableFlowAnimation=!1;null!=Q.themes&&"darkTheme"==Q.defaultThemeName&&(Va=Q.stylesheet,Q.stylesheet=Q.getDefaultStylesheet(),Q.shapeForegroundColor="#000000",Q.shapeBackgroundColor="#ffffff",Q.refresh());La.open(null,null,Qa,!0);Q.enableFlowAnimation=Wa;null!=Va&&(Q.shapeForegroundColor=$a,Q.shapeBackgroundColor=Za,Q.stylesheet=Va,Q.refresh())}else{Wa=Ha.background;if(null==Wa||""==Wa||Wa==mxConstants.NONE)Wa="#ffffff";La.backgroundColor=Wa;La.autoOrigin=Za;La.appendGraph(Ha,
+ab,Va,$a,Qa,!0);Qa=Ha.getCustomFonts();if(null!=La.wnd)for(Va=0;Va<Qa.length;Va++)$a=Qa[Va].name,Za=Qa[Va].url,Graph.isCssFontUrl(Za)?La.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(Za)+'" charset="UTF-8" type="text/css">'):(La.wnd.document.writeln('<style type="text/css">'),La.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities($a)+'";\nsrc: url("'+mxUtils.htmlEntities(Za)+'");\n}'),La.wnd.document.writeln("</style>"))}Na&&(Ha.useCssTransforms=Na,
+Ha.currentTranslate=Ra,Ha.currentScale=Xa,Ha.view.translate=Ma,Ha.view.scale=Ta);return La}var sa=parseInt(ea.value)/100;isNaN(sa)&&(sa=1,ea.value="100 %");sa*=.75;var ra=null,ya=Q.shapeForegroundColor,ja=Q.shapeBackgroundColor;null!=Q.themes&&"darkTheme"==Q.defaultThemeName&&(ra=Q.stylesheet,Q.stylesheet=Q.getDefaultStylesheet(),Q.shapeForegroundColor="#000000",Q.shapeBackgroundColor="#ffffff",Q.refresh());var ma=da.value,ba=ha.value,fa=!ca.checked,oa=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(t,
+ca.checked,ma,ba,Ca.checked,za.value,ta.value,parseInt(Ga.value)/100,parseInt(ea.value)/100,Ba.get());else{fa&&(fa=ia.checked||ma==Y&&ba==Y);if(!fa&&null!=t.pages&&t.pages.length){var la=0;fa=t.pages.length-1;ca.checked||(la=parseInt(ma)-1,fa=parseInt(ba)-1);for(var qa=la;qa<=fa;qa++){var pa=t.pages[qa];ma=pa==t.currentPage?Q:null;if(null==ma){ma=t.createTemporaryGraph(Q.stylesheet);ma.shapeForegroundColor=Q.shapeForegroundColor;ma.shapeBackgroundColor=Q.shapeBackgroundColor;ba=!0;la=!1;var ka=null,
+Ea=null;null==pa.viewState&&null==pa.root&&t.updatePageRoot(pa);null!=pa.viewState&&(ba=pa.viewState.pageVisible,la=pa.viewState.mathEnabled,ka=pa.viewState.background,Ea=pa.viewState.backgroundImage,ma.extFonts=pa.viewState.extFonts);null!=Ea&&null!=Ea.originalSrc&&(Ea=t.createImageForPageLink(Ea.originalSrc,pa));ma.background=ka;ma.backgroundImage=null!=Ea?new mxImage(Ea.src,Ea.width,Ea.height,Ea.x,Ea.y):null;ma.pageVisible=ba;ma.mathEnabled=la;var Pa=ma.getGraphBounds;ma.getGraphBounds=function(){var Ha=
+Pa.apply(this,arguments),La=this.backgroundImage;if(null!=La&&null!=La.width&&null!=La.height){var Qa=this.view.translate,Na=this.view.scale;Ha=mxRectangle.fromRectangle(Ha);Ha.add(new mxRectangle((Qa.x+La.x)*Na,(Qa.y+La.y)*Na,La.width*Na,La.height*Na))}return Ha};var Sa=ma.getGlobalVariable;ma.getGlobalVariable=function(Ha){return"page"==Ha?pa.getName():"pagenumber"==Ha?qa+1:"pagecount"==Ha?null!=t.pages?t.pages.length:1:Sa.apply(this,arguments)};document.body.appendChild(ma.container);t.updatePageRoot(pa);
+ma.model.setRoot(pa.root)}oa=ua(ma,oa,qa!=fa);ma!=Q&&ma.container.parentNode.removeChild(ma.container)}}else oa=ua(Q);null==oa?t.handleError({message:mxResources.get("errorUpdatingPreview")}):(oa.mathEnabled&&(fa=oa.wnd.document,wa&&(oa.wnd.IMMEDIATE_PRINT=!0),fa.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),oa.closeDocument(),!oa.mathEnabled&&wa&&PrintDialog.printPreview(oa));null!=ra&&(Q.shapeForegroundColor=ya,Q.shapeBackgroundColor=ja,Q.stylesheet=
+ra,Q.refresh())}}var Q=t.editor.graph,T=document.createElement("div"),P=document.createElement("h3");P.style.width="100%";P.style.textAlign="center";P.style.marginTop="0px";mxUtils.write(P,B||mxResources.get("print"));T.appendChild(P);var W=1,Y=1;P=document.createElement("div");P.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var ca=document.createElement("input");ca.style.cssText="margin-right:8px;margin-bottom:8px;";ca.setAttribute("value","all");ca.setAttribute("type",
+"radio");ca.setAttribute("name","pages-printdialog");P.appendChild(ca);B=document.createElement("span");mxUtils.write(B,mxResources.get("printAllPages"));P.appendChild(B);mxUtils.br(P);var Z=ca.cloneNode(!0);ca.setAttribute("checked","checked");Z.setAttribute("value","range");P.appendChild(Z);B=document.createElement("span");mxUtils.write(B,mxResources.get("pages")+":");P.appendChild(B);var da=document.createElement("input");da.style.cssText="margin:0 8px 0 8px;";da.setAttribute("value","1");da.setAttribute("type",
+"number");da.setAttribute("min","1");da.style.width="50px";P.appendChild(da);B=document.createElement("span");mxUtils.write(B,mxResources.get("to"));P.appendChild(B);var ha=da.cloneNode(!0);P.appendChild(ha);mxEvent.addListener(da,"focus",function(){Z.checked=!0});mxEvent.addListener(ha,"focus",function(){Z.checked=!0});mxEvent.addListener(da,"change",M);mxEvent.addListener(ha,"change",M);if(null!=t.pages&&(W=t.pages.length,null!=t.currentPage))for(B=0;B<t.pages.length;B++)if(t.currentPage==t.pages[B]){Y=
+B+1;da.value=Y;ha.value=Y;break}da.setAttribute("max",W);ha.setAttribute("max",W);t.isPagesEnabled()?1<W&&(T.appendChild(P),Z.checked=!0):Z.checked=!0;mxUtils.br(P);var ia=document.createElement("input");ia.setAttribute("value","all");ia.setAttribute("type","radio");ia.style.marginRight="8px";Q.isSelectionEmpty()&&ia.setAttribute("disabled","disabled");var aa=document.createElement("div");aa.style.marginBottom="10px";1==W?(ia.setAttribute("type","checkbox"),ia.style.marginBottom="12px",aa.appendChild(ia)):
+(ia.setAttribute("name","pages-printdialog"),ia.style.marginBottom="8px",P.appendChild(ia));B=document.createElement("span");mxUtils.write(B,mxResources.get("selectionOnly"));ia.parentNode.appendChild(B);1==W&&mxUtils.br(ia.parentNode);var Aa=document.createElement("input");Aa.style.marginRight="8px";Aa.setAttribute("value","adjust");Aa.setAttribute("type","radio");Aa.setAttribute("name","printZoom");aa.appendChild(Aa);B=document.createElement("span");mxUtils.write(B,mxResources.get("adjustTo"));
+aa.appendChild(B);var Ga=document.createElement("input");Ga.style.cssText="margin:0 8px 0 8px;";Ga.setAttribute("value","100 %");Ga.style.width="50px";aa.appendChild(Ga);mxEvent.addListener(Ga,"focus",function(){Aa.checked=!0});T.appendChild(aa);P=P.cloneNode(!1);var Ca=Aa.cloneNode(!0);Ca.setAttribute("value","fit");Aa.setAttribute("checked","checked");B=document.createElement("div");B.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";B.appendChild(Ca);P.appendChild(B);aa=
+document.createElement("table");aa.style.display="inline-block";var Da=document.createElement("tbody"),na=document.createElement("tr"),Ia=na.cloneNode(!0),Ka=document.createElement("td"),xa=Ka.cloneNode(!0),Ja=Ka.cloneNode(!0),Fa=Ka.cloneNode(!0),Oa=Ka.cloneNode(!0),va=Ka.cloneNode(!0);Ka.style.textAlign="right";Fa.style.textAlign="right";mxUtils.write(Ka,mxResources.get("fitTo"));var za=document.createElement("input");za.style.cssText="margin:0 8px 0 8px;";za.setAttribute("value","1");za.setAttribute("min",
+"1");za.setAttribute("type","number");za.style.width="40px";xa.appendChild(za);B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsAcross"));Ja.appendChild(B);mxUtils.write(Fa,mxResources.get("fitToBy"));var ta=za.cloneNode(!0);Oa.appendChild(ta);mxEvent.addListener(za,"focus",function(){Ca.checked=!0});mxEvent.addListener(ta,"focus",function(){Ca.checked=!0});B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsDown"));va.appendChild(B);na.appendChild(Ka);
+na.appendChild(xa);na.appendChild(Ja);Ia.appendChild(Fa);Ia.appendChild(Oa);Ia.appendChild(va);Da.appendChild(na);Da.appendChild(Ia);aa.appendChild(Da);P.appendChild(aa);T.appendChild(P);P=document.createElement("div");B=document.createElement("div");B.style.fontWeight="bold";B.style.marginBottom="12px";mxUtils.write(B,mxResources.get("paperSize"));P.appendChild(B);B=document.createElement("div");B.style.marginBottom="12px";var Ba=PageSetupDialog.addPageFormatPanel(B,"printdialog",t.editor.graph.pageFormat||
+mxConstants.PAGE_FORMAT_A4_PORTRAIT);P.appendChild(B);B=document.createElement("span");mxUtils.write(B,mxResources.get("pageScale"));P.appendChild(B);var ea=document.createElement("input");ea.style.cssText="margin:0 8px 0 8px;";ea.setAttribute("value","100 %");ea.style.width="60px";P.appendChild(ea);T.appendChild(P);B=document.createElement("div");B.style.cssText="text-align:right;margin:48px 0 0 0;";P=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});P.className="geBtn";t.editor.cancelFirst&&
+B.appendChild(P);t.isOffline()||(aa=mxUtils.button(mxResources.get("help"),function(){Q.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),aa.className="geBtn",B.appendChild(aa));PrintDialog.previewEnabled&&(aa=mxUtils.button(mxResources.get("preview"),function(){t.hideDialog();R(!1)}),aa.className="geBtn",B.appendChild(aa));aa=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){t.hideDialog();R(!0)});aa.className="geBtn gePrimaryBtn";B.appendChild(aa);t.editor.cancelFirst||
+B.appendChild(P);T.appendChild(B);this.container=T};var J=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 t=this.image;null!=t&&null!=t.src&&Graph.isPageLink(t.src)&&(t={originalSrc:t.src});this.page.viewState.backgroundImage=t}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 J.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 V=document.createElement("canvas"),U=new Image;U.onload=function(){try{V.getContext("2d").drawImage(U,0,0);var t=V.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=t&&6<t.length}catch(B){}};U.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};b.afterDecode=function(e,f,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.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=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.1";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,g,k,l,p,q,x){q=null!=q?q:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index ec50f97d..284a74e9 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -2440,7 +2440,7 @@
*/
Editor.initMath = function(src, config)
{
- if (typeof window.MathJax === 'undefined')
+ if (typeof window.MathJax === 'undefined' && !mxClient.IS_IE && !mxClient.IS_IE11)
{
src = (src != null) ? src : DRAW_MATH_URL + '/startup.js';
Editor.mathJaxQueue = [];
@@ -2451,6 +2451,7 @@
{
MathJax.typesetClear([container]);
MathJax.typeset([container]);
+ Editor.onMathJaxDone();
}
catch (e)
{
@@ -2461,7 +2462,7 @@
// Experimental support for retry after autoload
e.retry.then(function()
{
- MathJax.typeset([container]);
+ MathJax.typesetPromise([container]).then(Editor.onMathJaxDone);
});
}
else if (window.console != null)
@@ -2510,6 +2511,12 @@
Editor.mathJaxQueue = [];
};
+ // Adds global MathJax render callback
+ Editor.onMathJaxDone = function()
+ {
+ // Hook for listeners
+ };
+
// Updates math typesetting after changes
var editorInit = Editor.prototype.init;
@@ -8257,6 +8264,16 @@
{
writeHead.apply(this, arguments);
+ // Fixes bold math when exported to PDF
+ if (mxClient.IS_GC)
+ {
+ doc.writeln('<style type="text/css">');
+ doc.writeln('@media print {');
+ doc.writeln('.MathJax svg { shape-rendering: crispEdges; }');
+ doc.writeln('}');
+ doc.writeln('</style>');
+ }
+
if (editorUi.editor.fontCss != null)
{
doc.writeln('<style type="text/css">');
diff --git a/src/main/webapp/js/export.js b/src/main/webapp/js/export.js
index e16b7c15..cf4edc6e 100644
--- a/src/main/webapp/js/export.js
+++ b/src/main/webapp/js/export.js
@@ -299,11 +299,21 @@ function render(data)
}
};
+ // Waits for MathJax autoloading and rendering
+ var editorOnMathJaxDone = Editor.onMathJaxDone;
+
+ Editor.onMathJaxDone = function()
+ {
+ editorOnMathJaxDone.apply(this, arguments);
+ decrementWaitCounter();
+ };
+
// Adds MathJax rendering task
function renderMath(elt)
{
if (math && Editor.MathJaxRender != null)
{
+ waitCounter++;
Editor.MathJaxRender(elt);
}
};
diff --git a/src/main/webapp/js/grapheditor/EditorUi.js b/src/main/webapp/js/grapheditor/EditorUi.js
index 0b07384c..c76ee0bd 100644
--- a/src/main/webapp/js/grapheditor/EditorUi.js
+++ b/src/main/webapp/js/grapheditor/EditorUi.js
@@ -100,6 +100,8 @@ EditorUi = function(editor, container, lightbox)
// Styles to be ignored if applyAll is false
var ignoredEdgeStyles = ['curved', 'sourcePerimeterSpacing', 'targetPerimeterSpacing',
'startArrow', 'startFill', 'startSize', 'endArrow', 'endFill', 'endSize'];
+ var vertexStyleIgnored = false;
+ var edgeStyleIgnored = false;
// Note: Everything that is not in styles is ignored (styles is augmented below)
this.setDefaultStyle = function(cell)
@@ -129,6 +131,15 @@ EditorUi = function(editor, container, lightbox)
this.fireEvent(new mxEventObject('styleChanged',
'keys', keys, 'values', values,
'cells', [cell]));
+
+ if (graph.getModel().isEdge(cell))
+ {
+ edgeStyleIgnored = true;
+ }
+ else
+ {
+ vertexStyleIgnored = true;
+ }
}
catch (e)
{
@@ -140,6 +151,8 @@ EditorUi = function(editor, container, lightbox)
{
graph.currentEdgeStyle = mxUtils.clone(graph.defaultEdgeStyle);
graph.currentVertexStyle = mxUtils.clone(graph.defaultVertexStyle);
+ edgeStyleIgnored = false;
+ vertexStyleIgnored = false;
// Updates UI
this.fireEvent(new mxEventObject('styleChanged', 'keys', [], 'values', [], 'cells', []));
@@ -732,6 +745,9 @@ EditorUi = function(editor, container, lightbox)
vertex = true;
edge = true;
}
+
+ vertex = vertex && !vertexStyleIgnored;
+ edge = edge && !edgeStyleIgnored;
var keys = evt.getProperty('keys');
var values = evt.getProperty('values');
diff --git a/src/main/webapp/js/integrate.min.js b/src/main/webapp/js/integrate.min.js
index 454ffb29..2bc42421 100644
--- a/src/main/webapp/js/integrate.min.js
+++ b/src/main/webapp/js/integrate.min.js
@@ -469,7 +469,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.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/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.1",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]"!==
@@ -2348,54 +2348,54 @@ Editor.prototype.setFilename=function(a){this.filename=a};
Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(d,g){b.undoableEditHappened(g.getProperty("edit"))};var f=mxUtils.bind(this,function(d,g){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(d,g){d=a.getSelectionCellsForChanges(g.getProperty("edit").changes,function(k){return!(k instanceof mxChildChange)});if(0<d.length){a.getModel();g=[];for(var e=0;e<d.length;e++)null!=
a.view.getState(d[e])&&g.push(d[e]);a.setSelectionCells(g)}};b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);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,f,d,g,e,k,n,u,m,r){var x=u?57:0,A=f,C=d,F=u?0:64,K=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(K.height=window.innerHeight);var D=K.height,O=Math.max(1,Math.round((K.width-f-F)/2)),Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));b.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-F):f;d=Math.min(d,D-F);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=D+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));K=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=K.x+"px";this.bg.style.top=K.y+"px";O+=K.x;Q+=K.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-Q+=a.embedViewport.y,O+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var R=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(O,Q,f,d);O=g.x;Q=g.y;R.style.width=f+"px";R.style.height=d+"px";R.style.left=O+"px";R.style.top=Q+"px";R.style.zIndex=this.zIndex;R.appendChild(b);document.body.appendChild(R);!n&&b.clientHeight>R.clientHeight-F&&(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=Q+14+"px",e.style.left=O+f+38-x+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!r)){var P=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(Z){P=!0}),null,mxUtils.bind(this,function(Z){P&&(a.hideDialog(!0),P=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=m){var Z=m();
-null!=Z&&(A=f=Z.w,C=d=Z.h)}Z=mxUtils.getDocumentSize();D=Z.height;this.bg.style.height=D+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");O=Math.max(1,Math.round((Z.width-f-F)/2));Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));f=null!=document.body?Math.min(A,document.body.scrollWidth-F):A;d=Math.min(C,D-F);Z=this.getPosition(O,Q,f,d);O=Z.x;Q=Z.y;R.style.left=O+"px";R.style.top=Q+"px";R.style.width=f+"px";R.style.height=d+"px";!n&&
-b.clientHeight>R.clientHeight-F&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=Q+14+"px",this.dialogImg.style.left=O+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=R;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+function Dialog(a,b,f,d,g,e,k,n,u,m,r){var x=u?57:0,B=f,C=d,G=u?0:64,J=Editor.inlineFullscreen||null==a.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(a.embedViewport);null==a.embedViewport&&null!=window.innerHeight&&(J.height=window.innerHeight);var D=J.height,N=Math.max(1,Math.round((J.width-f-G)/2)),Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));b.style.maxHeight="100%";f=null!=document.body?Math.min(f,document.body.scrollWidth-G):f;d=Math.min(d,D-G);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=D+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));J=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=J.x+"px";this.bg.style.top=J.y+"px";N+=J.x;Q+=J.y;Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
+Q+=a.embedViewport.y,N+=a.embedViewport.x);g&&document.body.appendChild(this.bg);var R=a.createDiv(u?"geTransDialog":"geDialog");g=this.getPosition(N,Q,f,d);N=g.x;Q=g.y;R.style.width=f+"px";R.style.height=d+"px";R.style.left=N+"px";R.style.top=Q+"px";R.style.zIndex=this.zIndex;R.appendChild(b);document.body.appendChild(R);!n&&b.clientHeight>R.clientHeight-G&&(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=Q+14+"px",e.style.left=N+f+38-x+"px",e.style.zIndex=this.zIndex,mxEvent.addListener(e,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(e),this.dialogImg=e,!r)){var P=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(Z){P=!0}),null,mxUtils.bind(this,function(Z){P&&(a.hideDialog(!0),P=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=m){var Z=m();
+null!=Z&&(B=f=Z.w,C=d=Z.h)}Z=mxUtils.getDocumentSize();D=Z.height;this.bg.style.height=D+"px";Editor.inlineFullscreen||null==a.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");N=Math.max(1,Math.round((Z.width-f-G)/2));Q=Math.max(1,Math.round((D-d-a.footerHeight)/3));f=null!=document.body?Math.min(B,document.body.scrollWidth-G):B;d=Math.min(C,D-G);Z=this.getPosition(N,Q,f,d);N=Z.x;Q=Z.y;R.style.left=N+"px";R.style.top=Q+"px";R.style.width=f+"px";R.style.height=d+"px";!n&&
+b.clientHeight>R.clientHeight-G&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=Q+14+"px",this.dialogImg.style.left=N+f+38-x+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=k;this.container=R;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+
"/clear.gif";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)};
-var ErrorDialog=function(a,b,f,d,g,e,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=b){var A=document.createElement("div");A.style.padding="0px";A.style.margin="0px";A.style.fontSize="18px";A.style.paddingBottom="16px";A.style.marginBottom="10px";A.style.borderBottom="1px solid #c0c0c0";A.style.color="gray";A.style.whiteSpace="nowrap";A.style.textOverflow="ellipsis";A.style.overflow="hidden";mxUtils.write(A,b);A.setAttribute("title",b);x.appendChild(A)}b=
+var ErrorDialog=function(a,b,f,d,g,e,k,n,u,m,r){u=null!=u?u:!0;var x=document.createElement("div");x.style.textAlign="center";if(null!=b){var B=document.createElement("div");B.style.padding="0px";B.style.margin="0px";B.style.fontSize="18px";B.style.paddingBottom="16px";B.style.marginBottom="10px";B.style.borderBottom="1px solid #c0c0c0";B.style.color="gray";B.style.whiteSpace="nowrap";B.style.textOverflow="ellipsis";B.style.overflow="hidden";mxUtils.write(B,b);B.setAttribute("title",b);x.appendChild(B)}b=
document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;x.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=e&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();e()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=m&&(m=mxUtils.button(m,function(){null!=r&&r()}),m.className="geBtn",f.appendChild(m));var C=mxUtils.button(d,function(){u&&a.hideDialog();null!=g&&g()});
C.className="geBtn";f.appendChild(C);null!=k&&(d=mxUtils.button(k,function(){u&&a.hideDialog();null!=n&&n()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){C.focus()};x.appendChild(f);this.container=x},PrintDialog=function(a,b){this.create(a,b)};
-PrintDialog.prototype.create=function(a){function b(C){var F=k.checked||m.checked,K=parseInt(x.value)/100;isNaN(K)&&(K=1,x.value="100%");K*=.75;var D=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,O=1/f.pageScale;if(F){var Q=k.checked?1:parseInt(r.value);isNaN(Q)||(O=mxUtils.getScaleForPageCount(Q,f,D))}f.getGraphBounds();var R=Q=0;D=mxRectangle.fromRectangle(D);D.width=Math.ceil(D.width*K);D.height=Math.ceil(D.height*K);O*=K;!F&&f.pageVisible?(K=f.getPageLayout(),Q-=K.x*D.width,R-=K.y*D.height):
-F=!0;F=PrintDialog.createPrintPreview(f,O,D,0,Q,R,F);F.open();C&&PrintDialog.printPreview(F)}var f=a.editor.graph,d=document.createElement("table");d.style.width="100%";d.style.height="100%";var g=document.createElement("tbody");var e=document.createElement("tr");var k=document.createElement("input");k.setAttribute("type","checkbox");var n=document.createElement("td");n.setAttribute("colspan","2");n.style.fontSize="10pt";n.appendChild(k);var u=document.createElement("span");mxUtils.write(u," "+mxResources.get("fitPage"));
+PrintDialog.prototype.create=function(a){function b(C){var G=k.checked||m.checked,J=parseInt(x.value)/100;isNaN(J)&&(J=1,x.value="100%");J*=.75;var D=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,N=1/f.pageScale;if(G){var Q=k.checked?1:parseInt(r.value);isNaN(Q)||(N=mxUtils.getScaleForPageCount(Q,f,D))}f.getGraphBounds();var R=Q=0;D=mxRectangle.fromRectangle(D);D.width=Math.ceil(D.width*J);D.height=Math.ceil(D.height*J);N*=J;!G&&f.pageVisible?(J=f.getPageLayout(),Q-=J.x*D.width,R-=J.y*D.height):
+G=!0;G=PrintDialog.createPrintPreview(f,N,D,0,Q,R,G);G.open();C&&PrintDialog.printPreview(G)}var f=a.editor.graph,d=document.createElement("table");d.style.width="100%";d.style.height="100%";var g=document.createElement("tbody");var e=document.createElement("tr");var k=document.createElement("input");k.setAttribute("type","checkbox");var n=document.createElement("td");n.setAttribute("colspan","2");n.style.fontSize="10pt";n.appendChild(k);var u=document.createElement("span");mxUtils.write(u," "+mxResources.get("fitPage"));
n.appendChild(u);mxEvent.addListener(u,"click",function(C){k.checked=!k.checked;m.checked=!k.checked;mxEvent.consume(C)});mxEvent.addListener(k,"change",function(){m.checked=!k.checked});e.appendChild(n);g.appendChild(e);e=e.cloneNode(!1);var m=document.createElement("input");m.setAttribute("type","checkbox");n=document.createElement("td");n.style.fontSize="10pt";n.appendChild(m);u=document.createElement("span");mxUtils.write(u," "+mxResources.get("posterPrint")+":");n.appendChild(u);mxEvent.addListener(u,
"click",function(C){m.checked=!m.checked;k.checked=!m.checked;mxEvent.consume(C)});e.appendChild(n);var r=document.createElement("input");r.setAttribute("value","1");r.setAttribute("type","number");r.setAttribute("min","1");r.setAttribute("size","4");r.setAttribute("disabled","disabled");r.style.width="50px";n=document.createElement("td");n.style.fontSize="10pt";n.appendChild(r);mxUtils.write(n," "+mxResources.get("pages")+" (max)");e.appendChild(n);g.appendChild(e);mxEvent.addListener(m,"change",
function(){m.checked?r.removeAttribute("disabled"):r.setAttribute("disabled","disabled");k.checked=!m.checked});e=e.cloneNode(!1);n=document.createElement("td");mxUtils.write(n,mxResources.get("pageScale")+":");e.appendChild(n);n=document.createElement("td");var x=document.createElement("input");x.setAttribute("value","100 %");x.setAttribute("size","5");x.style.width="50px";n.appendChild(x);e.appendChild(n);g.appendChild(e);e=document.createElement("tr");n=document.createElement("td");n.colSpan=2;
-n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});A.className="geBtn";n.appendChild(A)}A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});A.className="geBtn gePrimaryBtn";n.appendChild(A);a.editor.cancelFirst||
+n.style.paddingTop="20px";n.setAttribute("align","right");u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});u.className="geBtn";a.editor.cancelFirst&&n.appendChild(u);if(PrintDialog.previewEnabled){var B=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});B.className="geBtn";n.appendChild(B)}B=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});B.className="geBtn gePrimaryBtn";n.appendChild(B);a.editor.cancelFirst||
n.appendChild(u);e.appendChild(n);g.appendChild(e);d.appendChild(g);this.container=d};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(f){}};
PrintDialog.createPrintPreview=function(a,b,f,d,g,e,k){b=new mxPrintPreview(a,b,f,d,g,e);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=k;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var n=b.writeHead;b.writeHead=function(u){n.apply(this,arguments);u.writeln('<style type="text/css">');u.writeln("@media screen {");u.writeln(" body > div { padding:30px;box-sizing:content-box; }");u.writeln("}");u.writeln("</style>")};return b};
PrintDialog.previewEnabled=!0;
-var PageSetupDialog=function(a){function b(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var D=F;null!=D&&Graph.isPageLink(D.src)&&(D=a.createImageForPageLink(D.src,null));null!=D&&null!=D.src?(C.setAttribute("src",D.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var d=a.editor.graph,g=document.createElement("table");g.style.width=
+var PageSetupDialog=function(a){function b(){null==r||r==mxConstants.NONE?(m.style.backgroundColor="",m.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(m.style.backgroundColor=r,m.style.backgroundImage="")}function f(){var D=G;null!=D&&Graph.isPageLink(D.src)&&(D=a.createImageForPageLink(D.src,null));null!=D&&null!=D.src?(C.setAttribute("src",D.src),C.style.display=""):(C.removeAttribute("src"),C.style.display="none")}var d=a.editor.graph,g=document.createElement("table");g.style.width=
"100%";g.style.height="100%";var e=document.createElement("tbody");var k=document.createElement("tr");var n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";mxUtils.write(n,mxResources.get("paperSize")+":");k.appendChild(n);n=document.createElement("td");n.style.verticalAlign="top";n.style.fontSize="10pt";var u=PageSetupDialog.addPageFormatPanel(n,"pagesetupdialog",d.pageFormat);k.appendChild(n);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");
mxUtils.write(n,mxResources.get("background")+":");k.appendChild(n);n=document.createElement("td");n.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var m=document.createElement("button");m.style.width="22px";m.style.height="22px";m.style.cursor="pointer";m.style.marginRight="20px";m.style.backgroundPosition="center center";m.style.backgroundRepeat="no-repeat";mxClient.IS_FF&&(m.style.position="relative",m.style.top="-6px");var r=d.background;b();mxEvent.addListener(m,
-"click",function(D){a.pickColor(r||"none",function(O){r=O;b()});mxEvent.consume(D)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=d.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var D=parseInt(x.value);x.value=Math.max(1,isNaN(D)?d.getGridSize():D)});k.appendChild(n);e.appendChild(k);k=document.createElement("tr");
-n=document.createElement("td");mxUtils.write(n,mxResources.get("image")+":");k.appendChild(n);n=document.createElement("td");var A=document.createElement("button");A.className="geBtn";A.style.margin="0px";mxUtils.write(A,mxResources.get("change")+"...");var C=document.createElement("img");C.setAttribute("valign","middle");C.style.verticalAlign="middle";C.style.border="1px solid lightGray";C.style.borderRadius="4px";C.style.marginRight="14px";C.style.maxWidth="100px";C.style.cursor="pointer";C.style.height=
-"60px";C.style.padding="4px";var F=d.backgroundImage,K=function(D){a.showBackgroundImageDialog(function(O,Q){Q||(F=O,f())},F);mxEvent.consume(D)};mxEvent.addListener(A,"click",K);mxEvent.addListener(C,"click",K);f();n.appendChild(C);n.appendChild(A);k.appendChild(n);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.paddingTop="16px";n.setAttribute("align","right");A=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});A.className="geBtn";
-a.editor.cancelFirst&&n.appendChild(A);K=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var D=parseInt(x.value);isNaN(D)||d.gridSize===D||d.setGridSize(D);D=new ChangePageSetup(a,r,F,u.get());D.ignoreColor=d.background==r;D.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=F?F.src:null);d.pageFormat.width==D.previousFormat.width&&d.pageFormat.height==D.previousFormat.height&&D.ignoreColor&&D.ignoreImage||d.model.execute(D)});K.className="geBtn gePrimaryBtn";
-n.appendChild(K);a.editor.cancelFirst||n.appendChild(A);k.appendChild(n);e.appendChild(k);g.appendChild(e);this.container=g};
-PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function g(Z,T,U){if(U||x!=document.activeElement&&A!=document.activeElement){Z=!1;for(T=0;T<F.length;T++)U=F[T],Q?"custom"==U.key&&(n.value=U.key,Q=!1):null!=U.format&&("a4"==U.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==U.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==U.format.width&&
-f.height==U.format.height?(n.value=U.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1,Z=!0):f.width==U.format.height&&f.height==U.format.width&&(n.value=U.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,k.setAttribute("checked","checked"),k.defaultChecked=!0,Z=k.checked=!0));Z?(u.style.display="",r.style.display="none"):(x.value=f.width/100,A.value=f.height/100,e.setAttribute("checked","checked"),
+"click",function(D){a.pickColor(r||"none",function(N){r=N;b()});mxEvent.consume(D)});n.appendChild(m);mxUtils.write(n,mxResources.get("gridSize")+":");var x=document.createElement("input");x.setAttribute("type","number");x.setAttribute("min","0");x.style.width="40px";x.style.marginLeft="6px";x.value=d.getGridSize();n.appendChild(x);mxEvent.addListener(x,"change",function(){var D=parseInt(x.value);x.value=Math.max(1,isNaN(D)?d.getGridSize():D)});k.appendChild(n);e.appendChild(k);k=document.createElement("tr");
+n=document.createElement("td");mxUtils.write(n,mxResources.get("image")+":");k.appendChild(n);n=document.createElement("td");var B=document.createElement("button");B.className="geBtn";B.style.margin="0px";mxUtils.write(B,mxResources.get("change")+"...");var C=document.createElement("img");C.setAttribute("valign","middle");C.style.verticalAlign="middle";C.style.border="1px solid lightGray";C.style.borderRadius="4px";C.style.marginRight="14px";C.style.maxWidth="100px";C.style.cursor="pointer";C.style.height=
+"60px";C.style.padding="4px";var G=d.backgroundImage,J=function(D){a.showBackgroundImageDialog(function(N,Q){Q||(G=N,f())},G);mxEvent.consume(D)};mxEvent.addListener(B,"click",J);mxEvent.addListener(C,"click",J);f();n.appendChild(C);n.appendChild(B);k.appendChild(n);e.appendChild(k);k=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.paddingTop="16px";n.setAttribute("align","right");B=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});B.className="geBtn";
+a.editor.cancelFirst&&n.appendChild(B);J=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();var D=parseInt(x.value);isNaN(D)||d.gridSize===D||d.setGridSize(D);D=new ChangePageSetup(a,r,G,u.get());D.ignoreColor=d.background==r;D.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=G?G.src:null);d.pageFormat.width==D.previousFormat.width&&d.pageFormat.height==D.previousFormat.height&&D.ignoreColor&&D.ignoreImage||d.model.execute(D)});J.className="geBtn gePrimaryBtn";
+n.appendChild(J);a.editor.cancelFirst||n.appendChild(B);k.appendChild(n);e.appendChild(k);g.appendChild(e);this.container=g};
+PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function g(Z,U,V){if(V||x!=document.activeElement&&B!=document.activeElement){Z=!1;for(U=0;U<G.length;U++)V=G[U],Q?"custom"==V.key&&(n.value=V.key,Q=!1):null!=V.format&&("a4"==V.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==V.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==V.format.width&&
+f.height==V.format.height?(n.value=V.key,e.setAttribute("checked","checked"),e.defaultChecked=!0,e.checked=!0,k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1,Z=!0):f.width==V.format.height&&f.height==V.format.width&&(n.value=V.key,e.removeAttribute("checked"),e.defaultChecked=!1,e.checked=!1,k.setAttribute("checked","checked"),k.defaultChecked=!0,Z=k.checked=!0));Z?(u.style.display="",r.style.display="none"):(x.value=f.width/100,B.value=f.height/100,e.setAttribute("checked","checked"),
n.value="custom",u.style.display="none",r.style.display="")}}b="format-"+b;var e=document.createElement("input");e.setAttribute("name",b);e.setAttribute("type","radio");e.setAttribute("value","portrait");var k=document.createElement("input");k.setAttribute("name",b);k.setAttribute("type","radio");k.setAttribute("value","landscape");var n=document.createElement("select");n.style.marginBottom="8px";n.style.borderRadius="4px";n.style.border="1px solid rgb(160, 160, 160)";n.style.width="206px";var u=
document.createElement("div");u.style.marginLeft="4px";u.style.width="210px";u.style.height="24px";e.style.marginRight="6px";u.appendChild(e);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));u.appendChild(b);k.style.marginLeft="10px";k.style.marginRight="6px";u.appendChild(k);var m=document.createElement("span");m.style.width="100px";mxUtils.write(m,mxResources.get("landscape"));u.appendChild(m);var r=document.createElement("div");r.style.marginLeft=
-"4px";r.style.width="210px";r.style.height="24px";var x=document.createElement("input");x.setAttribute("size","7");x.style.textAlign="right";r.appendChild(x);mxUtils.write(r," in x ");var A=document.createElement("input");A.setAttribute("size","7");A.style.textAlign="right";r.appendChild(A);mxUtils.write(r," in");u.style.display="none";r.style.display="none";for(var C={},F=PageSetupDialog.getFormats(),K=0;K<F.length;K++){var D=F[K];C[D.key]=D;var O=document.createElement("option");O.setAttribute("value",
-D.key);mxUtils.write(O,D.title);n.appendChild(O)}var Q=!1;g();a.appendChild(n);mxUtils.br(a);a.appendChild(u);a.appendChild(r);var R=f,P=function(Z,T){Z=C[n.value];null!=Z.format?(x.value=Z.format.width/100,A.value=Z.format.height/100,r.style.display="none",u.style.display=""):(u.style.display="none",r.style.display="");Z=parseFloat(x.value);if(isNaN(Z)||0>=Z)x.value=f.width/100;Z=parseFloat(A.value);if(isNaN(Z)||0>=Z)A.value=f.height/100;Z=new mxRectangle(0,0,Math.floor(100*parseFloat(x.value)),
-Math.floor(100*parseFloat(A.value)));"custom"!=n.value&&k.checked&&(Z=new mxRectangle(0,0,Z.height,Z.width));T&&Q||Z.width==R.width&&Z.height==R.height||(R=Z,null!=d&&d(R))};mxEvent.addListener(b,"click",function(Z){e.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(m,"click",function(Z){k.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(A,"blur",P);mxEvent.addListener(A,"click",P);mxEvent.addListener(k,"change",P);mxEvent.addListener(e,
-"change",P);mxEvent.addListener(n,"change",function(Z){Q="custom"==n.value;P(Z,!0)});P();return{set:function(Z){f=Z;g(null,null,!0)},get:function(){return R},widthInput:x,heightInput:A}};
+"4px";r.style.width="210px";r.style.height="24px";var x=document.createElement("input");x.setAttribute("size","7");x.style.textAlign="right";r.appendChild(x);mxUtils.write(r," in x ");var B=document.createElement("input");B.setAttribute("size","7");B.style.textAlign="right";r.appendChild(B);mxUtils.write(r," in");u.style.display="none";r.style.display="none";for(var C={},G=PageSetupDialog.getFormats(),J=0;J<G.length;J++){var D=G[J];C[D.key]=D;var N=document.createElement("option");N.setAttribute("value",
+D.key);mxUtils.write(N,D.title);n.appendChild(N)}var Q=!1;g();a.appendChild(n);mxUtils.br(a);a.appendChild(u);a.appendChild(r);var R=f,P=function(Z,U){Z=C[n.value];null!=Z.format?(x.value=Z.format.width/100,B.value=Z.format.height/100,r.style.display="none",u.style.display=""):(u.style.display="none",r.style.display="");Z=parseFloat(x.value);if(isNaN(Z)||0>=Z)x.value=f.width/100;Z=parseFloat(B.value);if(isNaN(Z)||0>=Z)B.value=f.height/100;Z=new mxRectangle(0,0,Math.floor(100*parseFloat(x.value)),
+Math.floor(100*parseFloat(B.value)));"custom"!=n.value&&k.checked&&(Z=new mxRectangle(0,0,Z.height,Z.width));U&&Q||Z.width==R.width&&Z.height==R.height||(R=Z,null!=d&&d(R))};mxEvent.addListener(b,"click",function(Z){e.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(m,"click",function(Z){k.checked=!0;P(Z);mxEvent.consume(Z)});mxEvent.addListener(x,"blur",P);mxEvent.addListener(x,"click",P);mxEvent.addListener(B,"blur",P);mxEvent.addListener(B,"click",P);mxEvent.addListener(k,"change",P);mxEvent.addListener(e,
+"change",P);mxEvent.addListener(n,"change",function(Z){Q="custom"==n.value;P(Z,!0)});P();return{set:function(Z){f=Z;g(null,null,!0)},get:function(){return R},widthInput:x,heightInput:B}};
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,f,d,g,e,k,n,u,m,r,x,A){u=null!=u?u:!0;var C=document.createElement("table"),F=document.createElement("tbody");C.style.position="absolute";C.style.top="30px";C.style.left="20px";var K=document.createElement("tr");var D=document.createElement("td");D.style.textOverflow="ellipsis";D.style.textAlign="right";D.style.maxWidth=(A?A+15:100)+"px";D.style.fontSize="10pt";D.style.width=(A?A:84)+"px";mxUtils.write(D,(g||mxResources.get("filename"))+":");K.appendChild(D);var O=
-document.createElement("input");O.setAttribute("value",b||"");O.style.marginLeft="4px";O.style.width=null!=x?x+"px":"180px";var Q=mxUtils.button(f,function(){if(null==e||e(O.value))u&&a.hideDialog(),d(O.value)});Q.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(O.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?O.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=C.parentNode;if(null!=R){var P=null;mxEvent.addListener(R,"dragleave",
-function(Z){null!=P&&(P.style.backgroundColor="",P=null);Z.stopPropagation();Z.preventDefault()});mxEvent.addListener(R,"dragover",mxUtils.bind(this,function(Z){null==P&&(!mxClient.IS_IE||10<document.documentMode)&&(P=O,P.style.backgroundColor="#ebf2f9");Z.stopPropagation();Z.preventDefault()}));mxEvent.addListener(R,"drop",mxUtils.bind(this,function(Z){null!=P&&(P.style.backgroundColor="",P=null);0<=mxUtils.indexOf(Z.dataTransfer.types,"text/uri-list")&&(O.value=decodeURIComponent(Z.dataTransfer.getData("text/uri-list")),
-Q.click());Z.stopPropagation();Z.preventDefault()}))}}};D=document.createElement("td");D.style.whiteSpace="nowrap";D.appendChild(O);K.appendChild(D);if(null!=g||null==k)F.appendChild(K),null!=r&&(D.appendChild(FilenameDialog.createTypeHint(a,O,r)),null!=a.editor.diagramFileTypes&&(K=document.createElement("tr"),D=document.createElement("td"),D.style.textOverflow="ellipsis",D.style.textAlign="right",D.style.maxWidth="100px",D.style.fontSize="10pt",D.style.width="84px",mxUtils.write(D,mxResources.get("type")+
-":"),K.appendChild(D),D=document.createElement("td"),D.style.whiteSpace="nowrap",K.appendChild(D),b=FilenameDialog.createFileTypes(a,O,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",D.appendChild(b),O.style.width=null!=x?x-40+"px":"190px",K.appendChild(D),F.appendChild(K)));null!=k&&(K=document.createElement("tr"),D=document.createElement("td"),D.colSpan=2,D.appendChild(k),K.appendChild(D),F.appendChild(K));K=document.createElement("tr");D=document.createElement("td");D.colSpan=
-2;D.style.paddingTop=null!=r?"12px":"20px";D.style.whiteSpace="nowrap";D.setAttribute("align","right");r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=m&&m()});r.className="geBtn";a.editor.cancelFirst&&D.appendChild(r);null!=n&&(x=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(n)}),x.className="geBtn",D.appendChild(x));mxEvent.addListener(O,"keypress",function(R){13==R.keyCode&&Q.click()});D.appendChild(Q);a.editor.cancelFirst||D.appendChild(r);
-K.appendChild(D);F.appendChild(K);C.appendChild(F);this.container=C};FilenameDialog.filenameHelpLink=null;
+var FilenameDialog=function(a,b,f,d,g,e,k,n,u,m,r,x,B){u=null!=u?u:!0;var C=document.createElement("table"),G=document.createElement("tbody");C.style.position="absolute";C.style.top="30px";C.style.left="20px";var J=document.createElement("tr");var D=document.createElement("td");D.style.textOverflow="ellipsis";D.style.textAlign="right";D.style.maxWidth=(B?B+15:100)+"px";D.style.fontSize="10pt";D.style.width=(B?B:84)+"px";mxUtils.write(D,(g||mxResources.get("filename"))+":");J.appendChild(D);var N=
+document.createElement("input");N.setAttribute("value",b||"");N.style.marginLeft="4px";N.style.width=null!=x?x+"px":"180px";var Q=mxUtils.button(f,function(){if(null==e||e(N.value))u&&a.hideDialog(),d(N.value)});Q.className="geBtn gePrimaryBtn";this.init=function(){if(null!=g||null==k)if(N.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?N.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var R=C.parentNode;if(null!=R){var P=null;mxEvent.addListener(R,"dragleave",
+function(Z){null!=P&&(P.style.backgroundColor="",P=null);Z.stopPropagation();Z.preventDefault()});mxEvent.addListener(R,"dragover",mxUtils.bind(this,function(Z){null==P&&(!mxClient.IS_IE||10<document.documentMode)&&(P=N,P.style.backgroundColor="#ebf2f9");Z.stopPropagation();Z.preventDefault()}));mxEvent.addListener(R,"drop",mxUtils.bind(this,function(Z){null!=P&&(P.style.backgroundColor="",P=null);0<=mxUtils.indexOf(Z.dataTransfer.types,"text/uri-list")&&(N.value=decodeURIComponent(Z.dataTransfer.getData("text/uri-list")),
+Q.click());Z.stopPropagation();Z.preventDefault()}))}}};D=document.createElement("td");D.style.whiteSpace="nowrap";D.appendChild(N);J.appendChild(D);if(null!=g||null==k)G.appendChild(J),null!=r&&(D.appendChild(FilenameDialog.createTypeHint(a,N,r)),null!=a.editor.diagramFileTypes&&(J=document.createElement("tr"),D=document.createElement("td"),D.style.textOverflow="ellipsis",D.style.textAlign="right",D.style.maxWidth="100px",D.style.fontSize="10pt",D.style.width="84px",mxUtils.write(D,mxResources.get("type")+
+":"),J.appendChild(D),D=document.createElement("td"),D.style.whiteSpace="nowrap",J.appendChild(D),b=FilenameDialog.createFileTypes(a,N,a.editor.diagramFileTypes),b.style.marginLeft="4px",b.style.width="198px",D.appendChild(b),N.style.width=null!=x?x-40+"px":"190px",J.appendChild(D),G.appendChild(J)));null!=k&&(J=document.createElement("tr"),D=document.createElement("td"),D.colSpan=2,D.appendChild(k),J.appendChild(D),G.appendChild(J));J=document.createElement("tr");D=document.createElement("td");D.colSpan=
+2;D.style.paddingTop=null!=r?"12px":"20px";D.style.whiteSpace="nowrap";D.setAttribute("align","right");r=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=m&&m()});r.className="geBtn";a.editor.cancelFirst&&D.appendChild(r);null!=n&&(x=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(n)}),x.className="geBtn",D.appendChild(x));mxEvent.addListener(N,"keypress",function(R){13==R.keyCode&&Q.click()});D.appendChild(Q);a.editor.cancelFirst||D.appendChild(r);
+J.appendChild(D);G.appendChild(J);C.appendChild(G);this.container=C};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(a,b,f){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 g=function(){d.setAttribute("src",Editor.helpImage);d.setAttribute("title",mxResources.get("help"));for(var e=0;e<f.length;e++)if(0<f[e].ext.length&&b.value.toLowerCase().substring(b.value.length-
f[e].ext.length-1)=="."+f[e].ext){d.setAttribute("title",mxResources.get(f[e].title));break}};mxEvent.addListener(b,"keyup",g);mxEvent.addListener(b,"change",g);mxEvent.addListener(d,"click",function(e){var k=d.getAttribute("title");d.getAttribute("src")==Editor.helpImage?a.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=k&&a.showError(null,k,mxResources.get("help"),function(){a.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(e)});
g();return d};
@@ -2408,42 +2408,42 @@ mxGraphView.prototype.validateBackgroundStyles=function(){var k=this.graph,n=nul
")";var x=u=0;null!=k.view.backgroundPageShape&&(x=this.getBackgroundPageBounds(),u=1+x.x,x=1+x.y);r=-Math.round(r-mxUtils.mod(this.translate.x*this.scale-u,r))+"px "+-Math.round(r-mxUtils.mod(this.translate.y*this.scale-x,r))+"px"}u=k.view.canvas;null!=u.ownerSVGElement&&(u=u.ownerSVGElement);null!=k.view.backgroundPageShape?(k.view.backgroundPageShape.node.style.backgroundPosition=r,k.view.backgroundPageShape.node.style.backgroundImage=m,k.view.backgroundPageShape.node.style.backgroundColor=n,k.view.backgroundPageShape.node.style.borderColor=
k.defaultPageBorderColor,k.container.className="geDiagramContainer geDiagramBackdrop",u.style.backgroundImage="none",u.style.backgroundColor=""):(k.container.className="geDiagramContainer",u.style.backgroundPosition=r,u.style.backgroundColor=n,u.style.backgroundImage=m)};mxGraphView.prototype.createSvgGrid=function(k){for(var n=this.graph.gridSize*this.scale;n<this.minGridSize;)n*=2;for(var u=this.gridSteps*n,m=[],r=1;r<this.gridSteps;r++){var x=r*n;m.push("M 0 "+x+" L "+u+" "+x+" M "+x+" 0 L "+x+
" "+u)}return'<svg width="'+u+'" height="'+u+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+u+'" height="'+u+'" patternUnits="userSpaceOnUse"><path d="'+m.join(" ")+'" fill="none" stroke="'+k+'" opacity="0.2" stroke-width="1"/><path d="M '+u+" 0 L 0 0 0 "+u+'" fill="none" stroke="'+k+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(k,n){a.apply(this,arguments);
-if(null!=this.shiftPreview1){var u=this.view.canvas;null!=u.ownerSVGElement&&(u=u.ownerSVGElement);var m=this.gridSize*this.view.scale*this.view.gridSteps;m=-Math.round(m-mxUtils.mod(this.view.translate.x*this.view.scale+k,m))+"px "+-Math.round(m-mxUtils.mod(this.view.translate.y*this.view.scale+n,m))+"px";u.style.backgroundPosition=m}};mxGraph.prototype.updatePageBreaks=function(k,n,u){var m=this.view.scale,r=this.view.translate,x=this.pageFormat,A=m*this.pageScale,C=this.view.getBackgroundPageBounds();
-n=C.width;u=C.height;var F=new mxRectangle(m*r.x,m*r.y,x.width*A,x.height*A),K=(k=k&&Math.min(F.width,F.height)>this.minPageBreakDist)?Math.ceil(u/F.height)-1:0,D=k?Math.ceil(n/F.width)-1:0,O=C.x+n,Q=C.y+u;null==this.horizontalPageBreaks&&0<K&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<D&&(this.verticalPageBreaks=[]);k=mxUtils.bind(this,function(R){if(null!=R){for(var P=R==this.horizontalPageBreaks?K:D,Z=0;Z<=P;Z++){var T=R==this.horizontalPageBreaks?[new mxPoint(Math.round(C.x),
-Math.round(C.y+(Z+1)*F.height)),new mxPoint(Math.round(O),Math.round(C.y+(Z+1)*F.height))]:[new mxPoint(Math.round(C.x+(Z+1)*F.width),Math.round(C.y)),new mxPoint(Math.round(C.x+(Z+1)*F.width),Math.round(Q))];null!=R[Z]?(R[Z].points=T,R[Z].redraw()):(T=new mxPolyline(T,this.pageBreakColor),T.dialect=this.dialect,T.isDashed=this.pageBreakDashed,T.pointerEvents=!1,T.init(this.view.backgroundPane),T.redraw(),R[Z]=T)}for(Z=P;Z<R.length;Z++)R[Z].destroy();R.splice(P,R.length-P)}});k(this.horizontalPageBreaks);
+if(null!=this.shiftPreview1){var u=this.view.canvas;null!=u.ownerSVGElement&&(u=u.ownerSVGElement);var m=this.gridSize*this.view.scale*this.view.gridSteps;m=-Math.round(m-mxUtils.mod(this.view.translate.x*this.view.scale+k,m))+"px "+-Math.round(m-mxUtils.mod(this.view.translate.y*this.view.scale+n,m))+"px";u.style.backgroundPosition=m}};mxGraph.prototype.updatePageBreaks=function(k,n,u){var m=this.view.scale,r=this.view.translate,x=this.pageFormat,B=m*this.pageScale,C=this.view.getBackgroundPageBounds();
+n=C.width;u=C.height;var G=new mxRectangle(m*r.x,m*r.y,x.width*B,x.height*B),J=(k=k&&Math.min(G.width,G.height)>this.minPageBreakDist)?Math.ceil(u/G.height)-1:0,D=k?Math.ceil(n/G.width)-1:0,N=C.x+n,Q=C.y+u;null==this.horizontalPageBreaks&&0<J&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<D&&(this.verticalPageBreaks=[]);k=mxUtils.bind(this,function(R){if(null!=R){for(var P=R==this.horizontalPageBreaks?J:D,Z=0;Z<=P;Z++){var U=R==this.horizontalPageBreaks?[new mxPoint(Math.round(C.x),
+Math.round(C.y+(Z+1)*G.height)),new mxPoint(Math.round(N),Math.round(C.y+(Z+1)*G.height))]:[new mxPoint(Math.round(C.x+(Z+1)*G.width),Math.round(C.y)),new mxPoint(Math.round(C.x+(Z+1)*G.width),Math.round(Q))];null!=R[Z]?(R[Z].points=U,R[Z].redraw()):(U=new mxPolyline(U,this.pageBreakColor),U.dialect=this.dialect,U.isDashed=this.pageBreakDashed,U.pointerEvents=!1,U.init(this.view.backgroundPane),U.redraw(),R[Z]=U)}for(Z=P;Z<R.length;Z++)R[Z].destroy();R.splice(P,R.length-P)}});k(this.horizontalPageBreaks);
k(this.verticalPageBreaks)};var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(k,n,u){for(var m=0;m<n.length;m++){if(this.graph.isTableCell(n[m])||this.graph.isTableRow(n[m]))return!1;if(this.graph.getModel().isVertex(n[m])){var r=this.graph.getCellGeometry(n[m]);if(null!=r&&r.relative)return!1}}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var k=
f.apply(this,arguments);k.intersects=mxUtils.bind(this,function(n,u){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(k,arguments)});return k};mxGraphView.prototype.createBackgroundPageShape=function(k){return new mxRectangleShape(k,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var k=this.getGraphBounds(),n=0<k.width?k.x/this.scale-this.translate.x:0,u=0<k.height?k.y/this.scale-this.translate.y:0,m=this.graph.pageFormat,
-r=this.graph.pageScale,x=m.width*r;m=m.height*r;r=Math.floor(Math.min(0,n)/x);var A=Math.floor(Math.min(0,u)/m);return new mxRectangle(this.scale*(this.translate.x+r*x),this.scale*(this.translate.y+A*m),this.scale*(Math.ceil(Math.max(1,n+k.width/this.scale)/x)-r)*x,this.scale*(Math.ceil(Math.max(1,u+k.height/this.scale)/m)-A)*m)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(k,n){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
-this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=k+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var g=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(k,n,u,m,r,x){var A=g.apply(this,arguments);null==x||x||mxEvent.addListener(A,"mousedown",function(C){mxEvent.consume(C)});return A};var e=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
+r=this.graph.pageScale,x=m.width*r;m=m.height*r;r=Math.floor(Math.min(0,n)/x);var B=Math.floor(Math.min(0,u)/m);return new mxRectangle(this.scale*(this.translate.x+r*x),this.scale*(this.translate.y+B*m),this.scale*(Math.ceil(Math.max(1,n+k.width/this.scale)/x)-r)*x,this.scale*(Math.ceil(Math.max(1,u+k.height/this.scale)/m)-B)*m)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(k,n){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
+this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=k+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var g=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(k,n,u,m,r,x){var B=g.apply(this,arguments);null==x||x||mxEvent.addListener(B,"mousedown",function(C){mxEvent.consume(C)});return B};var e=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(k,n,u){var m=this.graph.model.getParent(k);if(n){var r=this.graph.model.isEdge(k)?null:this.graph.getCellGeometry(k);r=!this.graph.model.isEdge(m)&&!this.graph.isSiblingSelected(k)&&(null!=r&&r.relative||!this.graph.isContainer(m)||this.graph.isPart(k))}else if(r=e.apply(this,arguments),this.graph.isTableCell(k)||this.graph.isTableRow(k))r=m,this.graph.isTable(r)||(r=this.graph.model.getParent(r)),r=!this.graph.selectionCellsHandler.isHandled(r)||this.graph.isCellSelected(r)&&this.graph.isToggleEvent(u.getEvent())||
-this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;var g=d.getGraphBounds;d.getGraphBounds=function(){var I=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var H=this.view.translate,S=this.view.scale;I=mxRectangle.fromRectangle(I);I.add(new mxRectangle((H.x+L.x)*S,(H.y+L.y)*S,L.width*S,L.height*S))}return I};d.useCssTransforms&&(this.lazyZoomDelay=
-0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(I,L){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(I){return!mxEvent.isPopupTrigger(I.getEvent())});this.actions=new Actions(this);this.menus=
+this.graph.isCellSelected(k)&&!this.graph.isToggleEvent(u.getEvent())||this.graph.isTableCell(k)&&this.graph.isCellSelected(m);return r};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(k){k=k.getCell();for(var n=this.graph.getModel(),u=n.getParent(k),m=this.graph.view.getState(u),r=this.graph.isCellSelected(k);null!=m&&(n.isVertex(u)||n.isEdge(u));){var x=this.graph.isCellSelected(u);r=r||x;if(x||!r&&(this.graph.isTableCell(k)||this.graph.isTableRow(k)))k=u;u=n.getParent(u)}return k}})();EditorUi=function(a,b,f){mxEventSource.call(this);this.destroyFunctions=[];this.editor=a||new Editor;this.container=b||document.body;var d=this.editor.graph;d.lightbox=f;var g=d.getGraphBounds;d.getGraphBounds=function(){var F=g.apply(this,arguments),L=this.backgroundImage;if(null!=L&&null!=L.width&&null!=L.height){var T=this.view.translate,ca=this.view.scale;F=mxRectangle.fromRectangle(F);F.add(new mxRectangle((T.x+L.x)*ca,(T.y+L.y)*ca,L.width*ca,L.height*ca))}return F};d.useCssTransforms&&(this.lazyZoomDelay=
+0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(F,L){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(F){return!mxEvent.isPopupTrigger(F.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(" "),k="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-n="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(I){try{var L=d.getCellStyle(I,!1),H=[],S=[],V;for(V in L)H.push(L[V]),S.push(V);d.getModel().isEdge(I)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",S,"values",H,"cells",[I]))}catch(ea){this.handleError(ea)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);
-d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var u=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<u.length;b++)0>mxUtils.indexOf(e,u[b])&&e.push(u[b]);var m="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),r=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<r.length;b++)for(f=0;f<r[b].length;f++)e.push(r[b][f]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(e,k[b])&&e.push(k[b]);var x=function(I,L,H,S,V,ea,ka){S=null!=S?S:d.currentVertexStyle;V=null!=V?V:d.currentEdgeStyle;ea=null!=ea?ea:!0;H=null!=H?H:d.getModel();if(ka){ka=[];for(var wa=0;wa<I.length;wa++)ka=ka.concat(H.getDescendants(I[wa]));I=ka}H.beginUpdate();try{for(wa=0;wa<I.length;wa++){var W=I[wa];if(L)var aa=["fontSize",
-"fontFamily","fontColor"];else{var oa=H.getStyle(W),ua=null!=oa?oa.split(";"):[];aa=e.slice();for(var Ja=0;Ja<ua.length;Ja++){var Ga=ua[Ja],va=Ga.indexOf("=");if(0<=va){var za=Ga.substring(0,va),ra=mxUtils.indexOf(aa,za);0<=ra&&aa.splice(ra,1);for(ka=0;ka<r.length;ka++){var Ha=r[ka];if(0<=mxUtils.indexOf(Ha,za))for(var Ta=0;Ta<Ha.length;Ta++){var db=mxUtils.indexOf(aa,Ha[Ta]);0<=db&&aa.splice(db,1)}}}}}var Ua=H.isEdge(W);ka=Ua?V:S;var Va=H.getStyle(W);for(Ja=0;Ja<aa.length;Ja++){za=aa[Ja];var Ya=
-ka[za];null!=Ya&&"edgeStyle"!=za&&("shape"!=za||Ua)&&(!Ua||ea||0>mxUtils.indexOf(n,za))&&(Va=mxUtils.setStyle(Va,za,Ya))}Editor.simpleLabels&&(Va=mxUtils.setStyle(mxUtils.setStyle(Va,"html",null),"whiteSpace",null));H.setStyle(W,Va)}}finally{H.endUpdate()}return I};d.addListener("cellsInserted",function(I,L){x(L.getProperty("cells"),null,null,null,null,!0,!0)});d.addListener("textInserted",function(I,L){x(L.getProperty("cells"),!0)});this.insertHandler=x;this.createDivs();this.createUi();this.refresh();
-var A=mxUtils.bind(this,function(I){null==I&&(I=window.event);return d.isEditing()||null!=I&&this.isSelectionAllowed(I)});this.container==document.body&&(this.menubarContainer.onselectstart=A,this.menubarContainer.onmousedown=A,this.toolbarContainer.onselectstart=A,this.toolbarContainer.onmousedown=A,this.diagramContainer.onselectstart=A,this.diagramContainer.onmousedown=A,this.sidebarContainer.onselectstart=A,this.sidebarContainer.onmousedown=A,this.formatContainer.onselectstart=A,this.formatContainer.onmousedown=
-A,this.footerContainer.onselectstart=A,this.footerContainer.onmousedown=A,null!=this.tabContainer&&(this.tabContainer.onselectstart=A));!this.editor.chromeless||this.editor.editable?(b=function(I){if(null!=I){var L=mxEvent.getSource(I);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return A(I)},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 C=d.graphHandler.start;d.graphHandler.start=function(){null!=fa.hoverIcons&&fa.hoverIcons.reset();C.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(I){var L=mxUtils.getOffset(this.diagramContainer);
-0<mxEvent.getClientX(I)-L.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(I)-L.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var F=!1,K=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(I,L){return F||K.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(I){32!=I.which||d.isEditing()?mxEvent.isConsumed(I)||27!=I.keyCode||this.hideDialog(null,
-!0):(F=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(I)!=d.container||mxEvent.consume(I))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(I){d.container.style.cursor="";F=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var D=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(I){return D.apply(this,arguments)||F||mxEvent.isMouseEvent(I.getEvent())&&(this.usePopupTrigger||
-!mxEvent.isPopupTrigger(I.getEvent()))&&(!mxEvent.isControlDown(I.getEvent())&&mxEvent.isRightMouseButton(I.getEvent())||mxEvent.isMiddleMouseButton(I.getEvent()))};var O=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(I){return O.apply(this,arguments)||13==I.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(I)||mxClient.IS_MAC&&mxEvent.isMetaDown(I)||mxClient.IS_SF&&mxEvent.isShiftDown(I))};var Q=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return F||Q.apply(this,arguments)};
-var R=!1,P=null,Z=null,T=null,U=mxUtils.bind(this,function(){if(null!=this.toolbar&&R!=d.cellEditor.isContentEditing()){for(var I=this.toolbar.container.firstChild,L=[];null!=I;){var H=I.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,I)&&(I.parentNode.removeChild(I),L.push(I));I=H}I=this.toolbar.fontMenu;H=this.toolbar.sizeMenu;if(null==T)this.toolbar.createTextToolbar();else{for(var S=0;S<T.length;S++)this.toolbar.container.appendChild(T[S]);this.toolbar.fontMenu=P;this.toolbar.sizeMenu=
-Z}R=d.cellEditor.isContentEditing();P=I;Z=H;T=L}}),fa=this,ha=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){ha.apply(this,arguments);U();if(d.cellEditor.isContentEditing()){var I=!1,L=function(){I||(I=!0,window.setTimeout(function(){var H=d.getSelectedEditingElement();null!=H&&(H=mxUtils.getCurrentStyle(H),null!=H&&null!=fa.toolbar&&(fa.toolbar.setFontName(Graph.stripQuotes(H.fontFamily)),fa.toolbar.setFontSize(parseInt(H.fontSize))));I=!1},0))};mxEvent.addListener(d.cellEditor.textarea,
-"input",L);mxEvent.addListener(d.cellEditor.textarea,"touchend",L);mxEvent.addListener(d.cellEditor.textarea,"mouseup",L);mxEvent.addListener(d.cellEditor.textarea,"keyup",L);L()}};var ba=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(I,L){try{ba.apply(this,arguments),U()}catch(H){fa.handleError(H)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(I){}var qa=d.fireMouseEvent;
-d.fireMouseEvent=function(I,L,H){I==mxEvent.MOUSE_DOWN&&this.container.focus();qa.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(I,L,H){this.menus.createPopupMenu(I,L,H)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(I){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};d.connectionHandler.addListener(mxEvent.CONNECT,function(I,
-L){var H=[L.getProperty("cell")];L.getProperty("terminalInserted")&&(H.push(L.getProperty("terminal")),window.setTimeout(function(){null!=fa.hoverIcons&&fa.hoverIcons.update(d.view.getState(H[H.length-1]))},0));x(H)});this.addListener("styleChanged",mxUtils.bind(this,function(I,L){var H=L.getProperty("cells"),S=I=!1;if(0<H.length)for(var V=0;V<H.length&&(I=d.getModel().isVertex(H[V])||I,!(S=d.getModel().isEdge(H[V])||S)||!I);V++);else S=I=!0;H=L.getProperty("keys");L=L.getProperty("values");for(V=
-0;V<H.length;V++){var ea=0<=mxUtils.indexOf(u,H[V]);if("strokeColor"!=H[V]||null!=L[V]&&"none"!=L[V])if(0<=mxUtils.indexOf(k,H[V]))S||0<=mxUtils.indexOf(m,H[V])?null==L[V]?delete d.currentEdgeStyle[H[V]]:d.currentEdgeStyle[H[V]]=L[V]:I&&0<=mxUtils.indexOf(e,H[V])&&(null==L[V]?delete d.currentVertexStyle[H[V]]:d.currentVertexStyle[H[V]]=L[V]);else if(0<=mxUtils.indexOf(e,H[V])){if(I||ea)null==L[V]?delete d.currentVertexStyle[H[V]]:d.currentVertexStyle[H[V]]=L[V];if(S||ea||0<=mxUtils.indexOf(m,H[V]))null==
-L[V]?delete d.currentEdgeStyle[H[V]]:d.currentEdgeStyle[H[V]]=L[V]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==d.currentEdgeStyle.edgeStyle||
-"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),
-null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var I=d.currentVertexStyle.fontFamily||"Helvetica",L=String(d.currentVertexStyle.fontSize||"12"),H=d.getView().getState(d.getSelectionCell());
-null!=H&&(I=H.style[mxConstants.STYLE_FONTFAMILY]||I,L=H.style[mxConstants.STYLE_FONTSIZE]||L,10<I.length&&(I=I.substring(0,8)+"..."));this.toolbar.setFontName(I);this.toolbar.setFontSize(L)}),d.getSelectionModel().addListener(mxEvent.CHANGE,a),d.getModel().addListener(mxEvent.CHANGE,a));d.addListener(mxEvent.CELLS_ADDED,function(I,L){I=L.getProperty("cells");L=L.getProperty("parent");null!=L&&d.getModel().isLayer(L)&&!d.isCellVisible(L)&&null!=I&&0<I.length&&d.getModel().setVisible(L,!0)});this.gestureHandler=
-mxUtils.bind(this,function(I){null!=this.currentMenu&&mxEvent.getSource(I)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
-this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));
-d.addListener("gridSizeChanged",mxUtils.bind(this,function(){d.isGridEnabled()&&d.view.validateBackground()}));this.editor.resetGraph()}this.init();d.standalone||this.open()};EditorUi.compactUi=!0;
+n="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" "),u=!1,m=!1;this.setDefaultStyle=function(F){try{var L=d.getCellStyle(F,!1),T=[],ca=[],fa;for(fa in L)T.push(L[fa]),ca.push(fa);d.getModel().isEdge(F)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",ca,"values",T,"cells",[F]));d.getModel().isEdge(F)?m=!0:u=!0}catch(wa){this.handleError(wa)}};this.clearDefaultStyle=function(){d.currentEdgeStyle=
+mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);u=m=!1;this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var r=["fontFamily","fontSource","fontSize","fontColor"];for(b=0;b<r.length;b++)0>mxUtils.indexOf(e,r[b])&&e.push(r[b]);var x="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),B=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],
+["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(b=0;b<B.length;b++)for(f=0;f<B[b].length;f++)e.push(B[b][f]);for(b=0;b<k.length;b++)0>mxUtils.indexOf(e,k[b])&&e.push(k[b]);var C=function(F,L,T,ca,fa,wa,W){ca=null!=ca?ca:d.currentVertexStyle;fa=null!=fa?fa:d.currentEdgeStyle;wa=null!=wa?wa:!0;T=null!=T?T:d.getModel();if(W){W=[];for(var aa=0;aa<F.length;aa++)W=W.concat(T.getDescendants(F[aa]));F=W}T.beginUpdate();try{for(aa=0;aa<F.length;aa++){var oa=
+F[aa];if(L)var sa=["fontSize","fontFamily","fontColor"];else{var Ka=T.getStyle(oa),Ha=null!=Ka?Ka.split(";"):[];sa=e.slice();for(var ua=0;ua<Ha.length;ua++){var Ca=Ha[ua],ra=Ca.indexOf("=");if(0<=ra){var Da=Ca.substring(0,ra),Ua=mxUtils.indexOf(sa,Da);0<=Ua&&sa.splice(Ua,1);for(W=0;W<B.length;W++){var db=B[W];if(0<=mxUtils.indexOf(db,Da))for(var Ta=0;Ta<db.length;Ta++){var $a=mxUtils.indexOf(sa,db[Ta]);0<=$a&&sa.splice($a,1)}}}}}var Xa=T.isEdge(oa);W=Xa?fa:ca;var Va=T.getStyle(oa);for(ua=0;ua<sa.length;ua++){Da=
+sa[ua];var Ya=W[Da];null!=Ya&&"edgeStyle"!=Da&&("shape"!=Da||Xa)&&(!Xa||wa||0>mxUtils.indexOf(n,Da))&&(Va=mxUtils.setStyle(Va,Da,Ya))}Editor.simpleLabels&&(Va=mxUtils.setStyle(mxUtils.setStyle(Va,"html",null),"whiteSpace",null));T.setStyle(oa,Va)}}finally{T.endUpdate()}return F};d.addListener("cellsInserted",function(F,L){C(L.getProperty("cells"),null,null,null,null,!0,!0)});d.addListener("textInserted",function(F,L){C(L.getProperty("cells"),!0)});this.insertHandler=C;this.createDivs();this.createUi();
+this.refresh();var G=mxUtils.bind(this,function(F){null==F&&(F=window.event);return d.isEditing()||null!=F&&this.isSelectionAllowed(F)});this.container==document.body&&(this.menubarContainer.onselectstart=G,this.menubarContainer.onmousedown=G,this.toolbarContainer.onselectstart=G,this.toolbarContainer.onmousedown=G,this.diagramContainer.onselectstart=G,this.diagramContainer.onmousedown=G,this.sidebarContainer.onselectstart=G,this.sidebarContainer.onmousedown=G,this.formatContainer.onselectstart=G,
+this.formatContainer.onmousedown=G,this.footerContainer.onselectstart=G,this.footerContainer.onmousedown=G,null!=this.tabContainer&&(this.tabContainer.onselectstart=G));!this.editor.chromeless||this.editor.editable?(b=function(F){if(null!=F){var L=mxEvent.getSource(F);if("A"==L.nodeName)for(;null!=L;){if("geHint"==L.className)return!0;L=L.parentNode}}return G(F)},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 J=d.graphHandler.start;d.graphHandler.start=function(){null!=ba.hoverIcons&&ba.hoverIcons.reset();J.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(F){var L=
+mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(F)-L.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(F)-L.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var D=!1,N=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(F,L){return D||N.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(F){32!=F.which||d.isEditing()?mxEvent.isConsumed(F)||
+27!=F.keyCode||this.hideDialog(null,!0):(D=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(F)!=d.container||mxEvent.consume(F))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(F){d.container.style.cursor="";D=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var Q=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(F){return Q.apply(this,arguments)||D||mxEvent.isMouseEvent(F.getEvent())&&
+(this.usePopupTrigger||!mxEvent.isPopupTrigger(F.getEvent()))&&(!mxEvent.isControlDown(F.getEvent())&&mxEvent.isRightMouseButton(F.getEvent())||mxEvent.isMiddleMouseButton(F.getEvent()))};var R=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(F){return R.apply(this,arguments)||13==F.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(F)||mxClient.IS_MAC&&mxEvent.isMetaDown(F)||mxClient.IS_SF&&mxEvent.isShiftDown(F))};var P=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return D||
+P.apply(this,arguments)};var Z=!1,U=null,V=null,ia=null,ha=mxUtils.bind(this,function(){if(null!=this.toolbar&&Z!=d.cellEditor.isContentEditing()){for(var F=this.toolbar.container.firstChild,L=[];null!=F;){var T=F.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,F)&&(F.parentNode.removeChild(F),L.push(F));F=T}F=this.toolbar.fontMenu;T=this.toolbar.sizeMenu;if(null==ia)this.toolbar.createTextToolbar();else{for(var ca=0;ca<ia.length;ca++)this.toolbar.container.appendChild(ia[ca]);this.toolbar.fontMenu=
+U;this.toolbar.sizeMenu=V}Z=d.cellEditor.isContentEditing();U=F;V=T;ia=L}}),ba=this,qa=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){qa.apply(this,arguments);ha();if(d.cellEditor.isContentEditing()){var F=!1,L=function(){F||(F=!0,window.setTimeout(function(){var T=d.getSelectedEditingElement();null!=T&&(T=mxUtils.getCurrentStyle(T),null!=T&&null!=ba.toolbar&&(ba.toolbar.setFontName(Graph.stripQuotes(T.fontFamily)),ba.toolbar.setFontSize(parseInt(T.fontSize))));F=!1},0))};mxEvent.addListener(d.cellEditor.textarea,
+"input",L);mxEvent.addListener(d.cellEditor.textarea,"touchend",L);mxEvent.addListener(d.cellEditor.textarea,"mouseup",L);mxEvent.addListener(d.cellEditor.textarea,"keyup",L);L()}};var O=d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(F,L){try{O.apply(this,arguments),ha()}catch(T){ba.handleError(T)}};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(F){}var S=d.fireMouseEvent;
+d.fireMouseEvent=function(F,L,T){F==mxEvent.MOUSE_DOWN&&this.container.focus();S.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(F,L,T){this.menus.createPopupMenu(F,L,T)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(F){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};d.connectionHandler.addListener(mxEvent.CONNECT,function(F,
+L){var T=[L.getProperty("cell")];L.getProperty("terminalInserted")&&(T.push(L.getProperty("terminal")),window.setTimeout(function(){null!=ba.hoverIcons&&ba.hoverIcons.update(d.view.getState(T[T.length-1]))},0));C(T)});this.addListener("styleChanged",mxUtils.bind(this,function(F,L){var T=L.getProperty("cells"),ca=F=!1;if(0<T.length)for(var fa=0;fa<T.length&&(F=d.getModel().isVertex(T[fa])||F,!(ca=d.getModel().isEdge(T[fa])||ca)||!F);fa++);else ca=F=!0;F=F&&!u;ca=ca&&!m;T=L.getProperty("keys");L=L.getProperty("values");
+for(fa=0;fa<T.length;fa++){var wa=0<=mxUtils.indexOf(r,T[fa]);if("strokeColor"!=T[fa]||null!=L[fa]&&"none"!=L[fa])if(0<=mxUtils.indexOf(k,T[fa]))ca||0<=mxUtils.indexOf(x,T[fa])?null==L[fa]?delete d.currentEdgeStyle[T[fa]]:d.currentEdgeStyle[T[fa]]=L[fa]:F&&0<=mxUtils.indexOf(e,T[fa])&&(null==L[fa]?delete d.currentVertexStyle[T[fa]]:d.currentVertexStyle[T[fa]]=L[fa]);else if(0<=mxUtils.indexOf(e,T[fa])){if(F||wa)null==L[fa]?delete d.currentVertexStyle[T[fa]]:d.currentVertexStyle[T[fa]]=L[fa];if(ca||
+wa||0<=mxUtils.indexOf(x,T[fa]))null==L[fa]?delete d.currentEdgeStyle[T[fa]]:d.currentEdgeStyle[T[fa]]=L[fa]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":
+"straight"==d.currentEdgeStyle.edgeStyle||"none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):
+"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(a=mxUtils.bind(this,function(){var F=d.currentVertexStyle.fontFamily||"Helvetica",L=String(d.currentVertexStyle.fontSize||
+"12"),T=d.getView().getState(d.getSelectionCell());null!=T&&(F=T.style[mxConstants.STYLE_FONTFAMILY]||F,L=T.style[mxConstants.STYLE_FONTSIZE]||L,10<F.length&&(F=F.substring(0,8)+"..."));this.toolbar.setFontName(F);this.toolbar.setFontSize(L)}),d.getSelectionModel().addListener(mxEvent.CHANGE,a),d.getModel().addListener(mxEvent.CHANGE,a));d.addListener(mxEvent.CELLS_ADDED,function(F,L){F=L.getProperty("cells");L=L.getProperty("parent");null!=L&&d.getModel().isLayer(L)&&!d.isCellVisible(L)&&null!=F&&
+0<F.length&&d.getModel().setVisible(L,!0)});this.gestureHandler=mxUtils.bind(this,function(F){null!=this.currentMenu&&mxEvent.getSource(F)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});
+mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){d.view.validateBackground()}));this.addListener("backgroundColorChanged",
+mxUtils.bind(this,function(){d.view.validateBackground()}));d.addListener("gridSizeChanged",mxUtils.bind(this,function(){d.isGridEnabled()&&d.view.validateBackground()}));this.editor.resetGraph()}this.init();d.standalone||this.open()};EditorUi.compactUi=!0;
EditorUi.parsePng=function(a,b,f){function d(n,u){var m=e;e+=u;return n.substring(m,e)}function g(n){n=d(n,4);return n.charCodeAt(3)+(n.charCodeAt(2)<<8)+(n.charCodeAt(1)<<16)+(n.charCodeAt(0)<<24)}var e=0;if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(d(a,4),"IHDR"!=d(a,4))null!=f&&f();else{d(a,17);do{f=g(a);var k=d(a,4);if(null!=b&&b(e-8,k,f))break;value=d(a,f);d(a,4);if("IEND"==k)break}while(f)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
@@ -2452,23 +2452,23 @@ EditorUi.prototype.init=function(){var a=this.editor.graph;if(!a.standalone){"0"
arguments);f.updateActionStates()};a.editLink=f.actions.get("editLink").funct;this.updateActionStates();this.initClipboard();this.initCanvas();null!=this.format&&this.format.init()}};EditorUi.prototype.clearSelectionState=function(){this.selectionState=null};EditorUi.prototype.getSelectionState=function(){null==this.selectionState&&(this.selectionState=this.createSelectionState());return this.selectionState};
EditorUi.prototype.createSelectionState=function(){for(var a=this.editor.graph,b=a.getSelectionCells(),f=this.initSelectionState(),d=!0,g=0;g<b.length;g++){var e=a.getCurrentCellStyle(b[g]);"0"!=mxUtils.getValue(e,mxConstants.STYLE_EDITABLE,"1")&&(this.updateSelectionStateForCell(f,b[g],b,d),d=!1)}this.updateSelectionStateForTableCells(f);return f};
EditorUi.prototype.initSelectionState=function(){return{vertices:[],edges:[],cells:[],x:null,y:null,width:null,height:null,style:{},containsImage:!1,containsLabel:!1,fill:!0,glass:!0,rounded:!0,autoSize:!1,image:!0,shadow:!0,lineJumps:!0,resizable:!0,table:!1,cell:!1,row:!1,movable:!0,rotatable:!0,stroke:!0,swimlane:!1,unlocked:this.editor.graph.isEnabled(),connections:!1}};
-EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var b=mxUtils.sortCells(a.cells),f=this.editor.graph.model,d=f.getParent(b[0]),g=f.getParent(d),e=d.getIndex(b[0]),k=g.getIndex(d),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),e):null;r<b.length-1;){var A=b[++r];null==x||x!=A||null!=n&&u!=n||(n=u,u=0,m++,d=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),e):null);var C=this.editor.graph.view.getState(A);
-if(A==f.getChildAt(d,e+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=b[0],a.colspan=u,a.rowspan=m)}};
+EditorUi.prototype.updateSelectionStateForTableCells=function(a){if(1<a.cells.length&&a.cell){for(var b=mxUtils.sortCells(a.cells),f=this.editor.graph.model,d=f.getParent(b[0]),g=f.getParent(d),e=d.getIndex(b[0]),k=g.getIndex(d),n=null,u=1,m=1,r=0,x=k<g.getChildCount()-1?f.getChildAt(f.getChildAt(g,k+1),e):null;r<b.length-1;){var B=b[++r];null==x||x!=B||null!=n&&u!=n||(n=u,u=0,m++,d=f.getParent(x),x=k+m<g.getChildCount()?f.getChildAt(f.getChildAt(g,k+m),e):null);var C=this.editor.graph.view.getState(B);
+if(B==f.getChildAt(d,e+u)&&null!=C&&1==mxUtils.getValue(C.style,"colspan",1)&&1==mxUtils.getValue(C.style,"rowspan",1))u++;else break}r==m*u-1&&(a.mergeCell=b[0],a.colspan=u,a.rowspan=m)}};
EditorUi.prototype.updateSelectionStateForCell=function(a,b,f,d){f=this.editor.graph;a.cells.push(b);if(f.getModel().isVertex(b)){a.connections=0<f.model.getEdgeCount(b);a.unlocked=a.unlocked&&!f.isCellLocked(b);a.resizable=a.resizable&&f.isCellResizable(b);a.rotatable=a.rotatable&&f.isCellRotatable(b);a.movable=a.movable&&f.isCellMovable(b)&&!f.isTableRow(b)&&!f.isTableCell(b);a.swimlane=a.swimlane||f.isSwimlane(b);a.table=a.table||f.isTable(b);a.cell=a.cell||f.isTableCell(b);a.row=a.row||f.isTableRow(b);
a.vertices.push(b);var g=f.getCellGeometry(b);if(null!=g&&(0<g.width?null==a.width?a.width=g.width:a.width!=g.width&&(a.width=""):a.containsLabel=!0,0<g.height?null==a.height?a.height=g.height:a.height!=g.height&&(a.height=""):a.containsLabel=!0,!g.relative||null!=g.offset)){var e=g.relative?g.offset.x:g.x;g=g.relative?g.offset.y:g.y;null==a.x?a.x=e:a.x!=e&&(a.x="");null==a.y?a.y=g:a.y!=g&&(a.y="")}}else f.getModel().isEdge(b)&&(a.edges.push(b),a.connections=!0,a.resizable=!1,a.rotatable=!1,a.movable=
!1);b=f.view.getState(b);null!=b&&(a.autoSize=a.autoSize||f.isAutoSizeState(b),a.glass=a.glass&&f.isGlassState(b),a.rounded=a.rounded&&f.isRoundedState(b),a.lineJumps=a.lineJumps&&f.isLineJumpState(b),a.image=a.image&&f.isImageState(b),a.shadow=a.shadow&&f.isShadowState(b),a.fill=a.fill&&f.isFillState(b),a.stroke=a.stroke&&f.isStrokeState(b),e=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==e,f.mergeStyle(b.style,a.style,d))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,b=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(u,m){"mouseDown"==m.getProperty("eventName")&&b.hideShapePicker()}));var f=mxUtils.bind(this,function(){b.hideShapePicker(!0)});a.addListener("wheel",f);a.addListener(mxEvent.ESCAPE,f);a.view.addListener(mxEvent.SCALE,f);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,f);a.getSelectionModel().addListener(mxEvent.CHANGE,f);var d=a.popupMenuHandler.isMenuShowing;
a.popupMenuHandler.isMenuShowing=function(){return d.apply(this,arguments)||null!=b.shapePicker};var g=a.dblClick;a.dblClick=function(u,m){if(this.isEnabled())if(null!=m||null==b.sidebar||mxEvent.isShiftDown(u)||a.isCellLocked(a.getDefaultParent()))g.apply(this,arguments);else{var r=mxUtils.convertPoint(this.container,mxEvent.getClientX(u),mxEvent.getClientY(u));mxEvent.consume(u);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.x,r.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
-f);var e=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();e.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(A,C,F){var K=a.getCompositeParent(u.cell);A=a.getCellGeometry(K);for(r.consume();null!=K&&a.model.isVertex(K)&&null!=A&&A.relative;)cell=
-K,K=a.model.getParent(cell),A=a.getCellGeometry(K);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.getGraphX(),r.getGraphY(),K,mxUtils.bind(this,function(D){F(D);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(D))}),m)}),30)}),mxUtils.bind(this,function(A){this.graph.selectCellsForConnectVertex(A,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
-m.getProperty("arrow"),x=m.getProperty("direction"),A=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),F=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var K=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),D=b.showShapePicker(F,C,K,mxUtils.bind(this,function(O){null!=O&&a.connectVertex(K,x,a.defaultEdgeLength,A,!0,!0,function(Q,R,P){P(O);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(O))},
-function(Q){a.selectCellsForConnectVertex(Q)},A,this.hoverIcons)}),x,!0);this.centerShapePicker(D,r,F,C,x);mxUtils.setOpacity(D,30);mxEvent.addListener(D,"mouseenter",function(){mxUtils.setOpacity(D,100)});mxEvent.addListener(D,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
+f);var e=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();e.apply(this,arguments)};var k=this.hoverIcons.execute;this.hoverIcons.execute=function(u,m,r){var x=r.getEvent();this.graph.isCloneEvent(x)||mxEvent.isShiftDown(x)?k.apply(this,arguments):this.graph.connectVertex(u.cell,m,this.graph.defaultEdgeLength,x,null,null,mxUtils.bind(this,function(B,C,G){var J=a.getCompositeParent(u.cell);B=a.getCellGeometry(J);for(r.consume();null!=J&&a.model.isVertex(J)&&null!=B&&B.relative;)cell=
+J,J=a.model.getParent(cell),B=a.getCellGeometry(J);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(r.getGraphX(),r.getGraphY(),J,mxUtils.bind(this,function(D){G(D);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(D))}),m)}),30)}),mxUtils.bind(this,function(B){this.graph.selectCellsForConnectVertex(B,x,this)}))};var n=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,function(){var r=
+m.getProperty("arrow"),x=m.getProperty("direction"),B=m.getProperty("event");r=r.getBoundingClientRect();var C=mxUtils.getOffset(a.container),G=a.container.scrollLeft+r.x-C.x;C=a.container.scrollTop+r.y-C.y;var J=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),D=b.showShapePicker(G,C,J,mxUtils.bind(this,function(N){null!=N&&a.connectVertex(J,x,a.defaultEdgeLength,B,!0,!0,function(Q,R,P){P(N);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(N))},
+function(Q){a.selectCellsForConnectVertex(Q)},B,this.hoverIcons)}),x,!0);this.centerShapePicker(D,r,G,C,x);mxUtils.setOpacity(D,30);mxEvent.addListener(D,"mouseenter",function(){mxUtils.setOpacity(D,100)});mxEvent.addListener(D,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(u,m){null!=n&&window.clearTimeout(n)}))}};
EditorUi.prototype.centerShapePicker=function(a,b,f,d,g){if(g==mxConstants.DIRECTION_EAST||g==mxConstants.DIRECTION_WEST)a.style.width="40px";var e=a.getBoundingClientRect();g==mxConstants.DIRECTION_NORTH?(f-=e.width/2-10,d-=e.height+6):g==mxConstants.DIRECTION_SOUTH?(f-=e.width/2-10,d+=b.height+6):g==mxConstants.DIRECTION_WEST?(f-=e.width+6,d-=e.height/2-10):g==mxConstants.DIRECTION_EAST&&(f+=b.width+6,d-=e.height/2-10);a.style.left=f+"px";a.style.top=d+"px"};
EditorUi.prototype.showShapePicker=function(a,b,f,d,g,e){a=this.createShapePicker(a,b,f,d,g,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(f,e),e);null!=a&&(null==this.hoverIcons||e||this.hoverIcons.reset(),e=this.editor.graph,e.popupMenuHandler.hideMenu(),e.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=d,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,b,f,d,g,e,k,n){var u=null;if(null!=k&&0<k.length){var m=this,r=this.editor.graph;u=document.createElement("div");g=r.view.getState(f);var x=null==f||null!=g&&r.isTransparentState(g)?null:r.copyStyle(f);f=6>k.length?35*k.length:140;u.className="geToolbarContainer geSidebarContainer";u.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+f+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
-mxPopupMenu.prototype.zIndex+1+";";n||mxUtils.setPrefixedStyle(u.style,"transform","translate(-22px,-22px)");null!=r.background&&r.background!=mxConstants.NONE&&(u.style.backgroundColor=r.background);r.container.appendChild(u);f=mxUtils.bind(this,function(A){var C=document.createElement("a");C.className="geItem";C.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";u.appendChild(C);null!=x&&"1"!=urlParams.sketch?
-this.sidebar.graph.pasteStyle(x,[A]):m.insertHandler([A],""!=A.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([A],25,25,C,null,!0,!1,A.geometry.width,A.geometry.height);mxEvent.addListener(C,"click",function(){var F=r.cloneCell(A);if(null!=d)d(F);else{F.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-A.geometry.width/2);F.geometry.y=r.snap(Math.round(b/r.view.scale)-r.view.translate.y-A.geometry.height/2);r.model.beginUpdate();try{r.addCell(F)}finally{r.model.endUpdate()}r.setSelectionCell(F);
-r.scrollCellToVisible(F);r.startEditingAtCell(F);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(F))}null!=e&&e()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,b-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
+mxPopupMenu.prototype.zIndex+1+";";n||mxUtils.setPrefixedStyle(u.style,"transform","translate(-22px,-22px)");null!=r.background&&r.background!=mxConstants.NONE&&(u.style.backgroundColor=r.background);r.container.appendChild(u);f=mxUtils.bind(this,function(B){var C=document.createElement("a");C.className="geItem";C.style.cssText="position:relative;display:inline-block;position:relative;width:30px;height:30px;cursor:pointer;overflow:hidden;padding:3px 0 0 3px;";u.appendChild(C);null!=x&&"1"!=urlParams.sketch?
+this.sidebar.graph.pasteStyle(x,[B]):m.insertHandler([B],""!=B.value&&"1"!=urlParams.sketch,this.sidebar.graph.model);this.sidebar.createThumb([B],25,25,C,null,!0,!1,B.geometry.width,B.geometry.height);mxEvent.addListener(C,"click",function(){var G=r.cloneCell(B);if(null!=d)d(G);else{G.geometry.x=r.snap(Math.round(a/r.view.scale)-r.view.translate.x-B.geometry.width/2);G.geometry.y=r.snap(Math.round(b/r.view.scale)-r.view.translate.y-B.geometry.height/2);r.model.beginUpdate();try{r.addCell(G)}finally{r.model.endUpdate()}r.setSelectionCell(G);
+r.scrollCellToVisible(G);r.startEditingAtCell(G);null!=m.hoverIcons&&m.hoverIcons.update(r.view.getState(G))}null!=e&&e()})});for(g=0;g<(n?Math.min(k.length,4):k.length);g++)f(k[g]);k=u.offsetTop+u.clientHeight-(r.container.scrollTop+r.container.offsetHeight);0<k&&(u.style.top=Math.max(r.container.scrollTop+22,b-k)+"px");k=u.offsetLeft+u.clientWidth-(r.container.scrollLeft+r.container.offsetWidth);0<k&&(u.style.left=Math.max(r.container.scrollLeft+22,a-k)+"px")}return u};
EditorUi.prototype.getCellsForShapePicker=function(a,b){b=mxUtils.bind(this,function(f,d,g,e){return this.editor.graph.createVertex(null,null,e||"",0,0,d||120,g||60,f,!1)});return[null!=a?this.editor.graph.cloneCell(a):b("text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;",40,20,"Text"),b("whiteSpace=wrap;html=1;"),b("ellipse;whiteSpace=wrap;html=1;"),b("rhombus;whiteSpace=wrap;html=1;",80,80),b("rounded=1;whiteSpace=wrap;html=1;"),b("shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;"),
b("shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,60),b("shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;",120,80),b("shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;"),b("triangle;whiteSpace=wrap;html=1;",60,80),b("shape=document;whiteSpace=wrap;html=1;boundedLbl=1;",120,80),b("shape=tape;whiteSpace=wrap;html=1;",120,100),b("ellipse;shape=cloud;whiteSpace=wrap;html=1;",
120,80),b("shape=singleArrow;whiteSpace=wrap;html=1;arrowWidth=0.4;arrowSize=0.4;",80,60),b("shape=waypoint;sketch=0;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;",40,40)]};EditorUi.prototype.hideShapePicker=function(a){null!=this.shapePicker&&(this.shapePicker.parentNode.removeChild(this.shapePicker),this.shapePicker=null,a||null==this.shapePickerCallback||this.shapePickerCallback(),this.shapePickerCallback=null)};
@@ -2484,43 +2484,43 @@ a==mxConstants.ARROW_BLOCK_THIN?f="1"!=b?Format.blockThinMarkerImage.src:Format.
f=Format.ERmandOneMarkerImage.src:"ERmany"==a?f=Format.ERmanyMarkerImage.src:"ERoneToMany"==a?f=Format.ERoneToManyMarkerImage.src:"ERzeroToOne"==a?f=Format.ERzeroToOneMarkerImage.src:"ERzeroToMany"==a&&(f=Format.ERzeroToManyMarkerImage.src);return f};EditorUi.prototype.createMenus=function(){return null};
EditorUi.prototype.updatePasteActionStates=function(){var a=this.editor.graph,b=this.actions.get("paste"),f=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()));f.setEnabled(b.isEnabled())};
EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipboard.cut=function(e){e.cellEditor.isContentEditing()?document.execCommand("cut",!1,null):b.apply(this,arguments);a.updatePasteActionStates()};mxClipboard.copy=function(e){var k=null;if(e.cellEditor.isContentEditing())document.execCommand("copy",!1,null);else{k=k||e.getSelectionCells();k=e.getExportableCells(e.model.getTopmostCells(k));for(var n={},u=e.createCellLookup(k),m=e.cloneCells(k,null,n),r=new mxGraphModel,x=r.getChildAt(r.getRoot(),
-0),A=0;A<m.length;A++){r.add(x,m[A]);var C=e.view.getState(k[A]);if(null!=C){var F=e.getCellGeometry(m[A]);null!=F&&F.relative&&!r.isEdge(k[A])&&null==u[mxObjectIdentity.get(r.getParent(k[A]))]&&(F.offset=null,F.relative=!1,F.x=C.x/C.view.scale-C.view.translate.x,F.y=C.y/C.view.scale-C.view.translate.y)}}e.updateCustomLinks(e.createCellMapping(n,u),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return k};var f=mxClipboard.paste;mxClipboard.paste=function(e){var k=
+0),B=0;B<m.length;B++){r.add(x,m[B]);var C=e.view.getState(k[B]);if(null!=C){var G=e.getCellGeometry(m[B]);null!=G&&G.relative&&!r.isEdge(k[B])&&null==u[mxObjectIdentity.get(r.getParent(k[B]))]&&(G.offset=null,G.relative=!1,G.x=C.x/C.view.scale-C.view.translate.x,G.y=C.y/C.view.scale-C.view.translate.y)}}e.updateCustomLinks(e.createCellMapping(n,u),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return k};var f=mxClipboard.paste;mxClipboard.paste=function(e){var k=
null;e.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):k=f.apply(this,arguments);a.updatePasteActionStates();return k};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()};var g=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(e,k){g.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 H=this.graph.getPageLayout(),S=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+H.x*S.width),this.scale*(this.translate.y+H.y*S.height),this.scale*H.width*S.width,
-this.scale*H.height*S.height)};a.getPreferredPageSize=function(H,S,V){H=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,H.width*S.width,H.height*S.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(H,S,V,ea){if(null!=a.container&&!a.isViewer()){V=null!=V?V:0;ea=null!=ea?ea:0;var ka=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,aa=a.view.scale,
-oa=mxRectangle.fromRectangle(ka);oa.x=oa.x/aa-W.x;oa.y=oa.y/aa-W.y;oa.width/=aa;oa.height/=aa;W=a.container.scrollTop;var ua=a.container.scrollLeft,Ja=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)Ja+=3;var Ga=a.container.offsetWidth-Ja;Ja=a.container.offsetHeight-Ja;H=H?Math.max(.3,Math.min(S||1,Ga/oa.width)):aa;S=(Ga-H*oa.width)/2/H;var va=0==this.lightboxVerticalDivider?0:(Ja-H*oa.height)/this.lightboxVerticalDivider/H;wa&&(S=Math.max(S,0),va=Math.max(va,
-0));if(wa||ka.width<Ga||ka.height<Ja)a.view.scaleAndTranslate(H,Math.floor(S-oa.x),Math.floor(va-oa.y)),a.container.scrollTop=W*H/aa,a.container.scrollLeft=ua*H/aa;else if(0!=V||0!=ea)ka=a.view.translate,a.view.setTranslate(Math.floor(ka.x+V/aa),Math.floor(ka.y+ea/aa))}});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(H){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(H){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var g=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position=
+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 F=this.graph.getPageLayout(),L=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+F.x*L.width),this.scale*(this.translate.y+F.y*L.height),this.scale*F.width*L.width,
+this.scale*F.height*L.height)};a.getPreferredPageSize=function(F,L,T){F=this.getPageLayout();L=this.getPageSize();return new mxRectangle(0,0,F.width*L.width,F.height*L.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(F,L,T,ca){if(null!=a.container&&!a.isViewer()){T=null!=T?T:0;ca=null!=ca?ca:0;var fa=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),wa=mxUtils.hasScrollbars(a.container),W=a.view.translate,aa=a.view.scale,
+oa=mxRectangle.fromRectangle(fa);oa.x=oa.x/aa-W.x;oa.y=oa.y/aa-W.y;oa.width/=aa;oa.height/=aa;W=a.container.scrollTop;var sa=a.container.scrollLeft,Ka=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)Ka+=3;var Ha=a.container.offsetWidth-Ka;Ka=a.container.offsetHeight-Ka;F=F?Math.max(.3,Math.min(L||1,Ha/oa.width)):aa;L=(Ha-F*oa.width)/2/F;var ua=0==this.lightboxVerticalDivider?0:(Ka-F*oa.height)/this.lightboxVerticalDivider/F;wa&&(L=Math.max(L,0),ua=Math.max(ua,
+0));if(wa||fa.width<Ha||fa.height<Ka)a.view.scaleAndTranslate(F,Math.floor(L-oa.x),Math.floor(ua-oa.y)),a.container.scrollTop=W*F/aa,a.container.scrollLeft=sa*F/aa;else if(0!=T||0!=ca)fa=a.view.translate,a.view.setTranslate(Math.floor(fa.x+T/aa),Math.floor(fa.y+ca/aa))}});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(F){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(F){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var g=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 H=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=H?parseInt(H["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var k=0;e=mxUtils.bind(this,function(H,S,V){k++;
-var ea=document.createElement("span");ea.style.paddingLeft="8px";ea.style.paddingRight="8px";ea.style.cursor="pointer";mxEvent.addListener(ea,"click",H);null!=V&&ea.setAttribute("title",V);H=document.createElement("img");H.setAttribute("border","0");H.setAttribute("src",S);H.style.width="36px";H.style.filter="invert(100%)";ea.appendChild(H);this.chromelessToolbar.appendChild(ea);return ea});null!=g.backBtn&&e(mxUtils.bind(this,function(H){window.location.href=g.backBtn.url;mxEvent.consume(H)}),Editor.backImage,
-mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var n=e(mxUtils.bind(this,function(H){this.actions.get("previousPage").funct();mxEvent.consume(H)}),Editor.previousImage,mxResources.get("previousPage")),u=document.createElement("div");u.style.fontFamily=Editor.defaultHtmlFont;u.style.display="inline-block";u.style.verticalAlign="top";u.style.fontWeight="bold";u.style.marginTop="8px";u.style.fontSize="14px";u.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(u);
-var m=e(mxUtils.bind(this,function(H){this.actions.get("nextPage").funct();mxEvent.consume(H)}),Editor.nextImage,mxResources.get("nextPage")),r=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(u.innerText="",mxUtils.write(u,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});n.style.paddingLeft="0px";n.style.paddingRight="4px";m.style.paddingLeft="4px";m.style.paddingRight="0px";var x=mxUtils.bind(this,function(){null!=this.pages&&
-1<this.pages.length&&null!=this.currentPage?(m.style.display="",n.style.display="",u.style.display="inline-block"):(m.style.display="none",n.style.display="none",u.style.display="none");r()});this.editor.addListener("resetGraphView",x);this.editor.addListener("pageSelected",r)}e(mxUtils.bind(this,function(H){this.actions.get("zoomOut").funct();mxEvent.consume(H)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(H){this.actions.get("zoomIn").funct();
-mxEvent.consume(H)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(H){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(H)}),Editor.zoomFitImage,mxResources.get("fit"));var A=null,C=null,F=mxUtils.bind(this,function(H){null!=A&&(window.clearTimeout(A),A=null);null!=C&&(window.clearTimeout(C),C=null);A=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
-0);A=null;C=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";C=null}),600)}),H||200)}),K=mxUtils.bind(this,function(H){null!=A&&(window.clearTimeout(A),A=null);null!=C&&(window.clearTimeout(C),C=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,H||30)});if("1"==urlParams.layers){this.layersDialog=null;var D=e(mxUtils.bind(this,function(H){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 S=D.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=S.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));S=mxUtils.getCurrentStyle(this.editor.graph.container);
-this.layersDialog.style.zIndex=S.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(H)}),Editor.layersImage,mxResources.get("layers")),O=a.getModel();O.addListener(mxEvent.CHANGE,function(){D.style.display=1<O.getChildCount(O.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(H){null!=
-this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(H)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(x=0;x<this.lightboxToolbarActions.length;x++){var Q=this.lightboxToolbarActions[x];Q.elem=e(Q.fn,Q.icon,Q.tooltip)}null!=g.refreshBtn&&e(mxUtils.bind(this,function(H){g.refreshBtn.url?window.location.href=g.refreshBtn.url:
-window.location.reload();mxEvent.consume(H)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=g.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,function(H){g.fullscreenBtn.url?a.openLink(g.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(H)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(g.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&e(mxUtils.bind(this,
-function(H){"1"==urlParams.close||g.closeBtn?window.close():(this.destroy(),mxEvent.consume(H))}),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(H){mxEvent.isTouchEvent(H)||(mxEvent.isShiftDown(H)||
-K(30),F())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(H){mxEvent.consume(H)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(H){a.tooltipHandler.resetTimer();a.tooltipHandler.hideTooltip();mxEvent.isShiftDown(H)?F():K(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(H){mxEvent.isShiftDown(H)?F():K(100);mxEvent.consume(H)}));mxEvent.addListener(this.chromelessToolbar,
-"mouseleave",mxUtils.bind(this,function(H){mxEvent.isTouchEvent(H)||K(30)}));var R=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(H,S){this.startX=S.getGraphX();this.startY=S.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(H,S){},mouseUp:function(H,S){mxEvent.isTouchEvent(S.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<R&&Math.abs(this.scrollTop-a.container.scrollTop)<R&&
-Math.abs(this.startX-S.getGraphX())<R&&Math.abs(this.startY-S.getGraphY())<R&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?F():K(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var P=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var H=this.graph.getPagePadding(),S=this.graph.getPageSize();this.translate.x=H.x-(this.x0||0)*S.width;this.translate.y=H.y-(this.y0||0)*S.height}P.apply(this,
-arguments)};if(!a.isViewer()){var Z=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var H=this.getPageLayout(),S=this.getPagePadding(),V=this.getPageSize(),ea=Math.ceil(2*S.x+H.width*V.width),ka=Math.ceil(2*S.y+H.height*V.height),wa=a.minimumGraphSize;if(null==wa||wa.width!=ea||wa.height!=ka)a.minimumGraphSize=new mxRectangle(0,0,ea,ka);ea=S.x-H.x*V.width;S=S.y-H.y*V.height;this.autoTranslate||this.view.translate.x==ea&&this.view.translate.y==
-S?Z.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=H.x,this.view.y0=H.y,H=a.view.translate.x,V=a.view.translate.y,a.view.setTranslate(ea,S),a.container.scrollLeft+=Math.round((ea-H)*a.view.scale),a.container.scrollTop+=Math.round((S-V)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var T=a.view.getBackgroundPane(),U=a.view.getDrawPane();a.cumulativeZoomFactor=1;var fa=null,ha=null,ba=null,qa=null,I=null,L=function(H){null!=
-fa&&window.clearTimeout(fa);0<=H&&window.setTimeout(function(){if(!a.isMouseDown||qa)fa=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)),U.style.transformOrigin="",T.style.transformOrigin="",mxClient.IS_SF?(U.style.transform="scale(1)",
-T.style.transform="scale(1)",window.setTimeout(function(){U.style.transform="";T.style.transform=""},0)):(U.style.transform="",T.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var S=new mxPoint(a.container.scrollLeft,a.container.scrollTop),V=mxUtils.getOffset(a.container),ea=a.view.scale,ka=0,wa=0;null!=ha&&(ka=a.container.offsetWidth/2-ha.x+V.x,wa=a.container.offsetHeight/2-ha.y+V.y);a.zoom(a.cumulativeZoomFactor,null,a.isFastZoomEnabled()?
-20:null);a.view.scale!=ea&&(null!=ba&&(ka+=S.x-ba.x,wa+=S.y-ba.y),null!=b&&f.chromelessResize(!1,null,ka*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==ka&&0==wa||(a.container.scrollLeft-=ka*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=I&&U.setAttribute("filter",I);a.cumulativeZoomFactor=1;I=qa=ha=ba=fa=null}),null!=H?H:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(H,S,
-V,ea){ea=null!=ea?ea:this.zoomFactor;(S=S||!a.scrollbars)&&(ha=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));H?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=ea,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/=ea,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==I&&""!=U.getAttribute("filter")&&(I=U.getAttribute("filter"),U.removeAttribute("filter")),ba=new mxPoint(a.container.scrollLeft,a.container.scrollTop),H=S||null==ha?a.container.scrollLeft+a.container.clientWidth/
-2:ha.x+a.container.scrollLeft-a.container.offsetLeft,ea=S||null==ha?a.container.scrollTop+a.container.clientHeight/2:ha.y+a.container.scrollTop-a.container.offsetTop,U.style.transformOrigin=H+"px "+ea+"px",U.style.transform="scale("+this.cumulativeZoomFactor+")",T.style.transformOrigin=H+"px "+ea+"px",T.style.transform="scale("+this.cumulativeZoomFactor+")",null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(H=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(H.style,
-"transform-origin",(S||null==ha?a.container.clientWidth/2+a.container.scrollLeft-H.offsetLeft+"px":ha.x+a.container.scrollLeft-H.offsetLeft-a.container.offsetLeft+"px")+" "+(S||null==ha?a.container.clientHeight/2+a.container.scrollTop-H.offsetTop+"px":ha.y+a.container.scrollTop-H.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(H.style,"transform","scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=f.hoverIcons&&
-f.hoverIcons.reset());L(a.isFastZoomEnabled()?V:0)};mxEvent.addGestureListeners(a.container,function(H){null!=fa&&window.clearTimeout(fa)},null,function(H){1!=a.cumulativeZoomFactor&&L(0)});mxEvent.addListener(a.container,"scroll",function(H){null==fa||a.isMouseDown||1==a.cumulativeZoomFactor||L(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(H,S,V,ea,ka){a.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!V&&a.isScrollWheelEvent(H))V=
-a.view.getTranslate(),ea=40/a.view.scale,mxEvent.isShiftDown(H)?a.view.setTranslate(V.x+(S?-ea:ea),V.y):a.view.setTranslate(V.x,V.y+(S?ea:-ea));else if(V||a.isZoomWheelEvent(H))for(var wa=mxEvent.getSource(H);null!=wa;){if(wa==a.container)return a.tooltipHandler.hideTooltip(),ha=null!=ea&&null!=ka?new mxPoint(ea,ka):new mxPoint(mxEvent.getClientX(H),mxEvent.getClientY(H)),qa=V,V=a.zoomFactor,ea=null,H.ctrlKey&&null!=H.deltaY&&40>Math.abs(H.deltaY)&&Math.round(H.deltaY)!=H.deltaY?V=1+Math.abs(H.deltaY)/
-20*(V-1):null!=H.movementY&&"pointermove"==H.type&&(V=1+Math.max(1,Math.abs(H.movementY))/20*(V-1),ea=-1),a.lazyZoom(S,null,ea,V),mxEvent.consume(H),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(H){a.cumulativeZoomFactor=H.scale;a.lazyZoom(0<H.scale,!0);mxEvent.consume(H)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
+"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var e=mxUtils.bind(this,function(){var F=mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=F?parseInt(F["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",e);e();var k=0;e=mxUtils.bind(this,function(F,L,T){k++;
+var ca=document.createElement("span");ca.style.paddingLeft="8px";ca.style.paddingRight="8px";ca.style.cursor="pointer";mxEvent.addListener(ca,"click",F);null!=T&&ca.setAttribute("title",T);F=document.createElement("img");F.setAttribute("border","0");F.setAttribute("src",L);F.style.width="36px";F.style.filter="invert(100%)";ca.appendChild(F);this.chromelessToolbar.appendChild(ca);return ca});null!=g.backBtn&&e(mxUtils.bind(this,function(F){window.location.href=g.backBtn.url;mxEvent.consume(F)}),Editor.backImage,
+mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var n=e(mxUtils.bind(this,function(F){this.actions.get("previousPage").funct();mxEvent.consume(F)}),Editor.previousImage,mxResources.get("previousPage")),u=document.createElement("div");u.style.fontFamily=Editor.defaultHtmlFont;u.style.display="inline-block";u.style.verticalAlign="top";u.style.fontWeight="bold";u.style.marginTop="8px";u.style.fontSize="14px";u.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";this.chromelessToolbar.appendChild(u);
+var m=e(mxUtils.bind(this,function(F){this.actions.get("nextPage").funct();mxEvent.consume(F)}),Editor.nextImage,mxResources.get("nextPage")),r=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(u.innerText="",mxUtils.write(u,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});n.style.paddingLeft="0px";n.style.paddingRight="4px";m.style.paddingLeft="4px";m.style.paddingRight="0px";var x=mxUtils.bind(this,function(){null!=this.pages&&
+1<this.pages.length&&null!=this.currentPage?(m.style.display="",n.style.display="",u.style.display="inline-block"):(m.style.display="none",n.style.display="none",u.style.display="none");r()});this.editor.addListener("resetGraphView",x);this.editor.addListener("pageSelected",r)}e(mxUtils.bind(this,function(F){this.actions.get("zoomOut").funct();mxEvent.consume(F)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(F){this.actions.get("zoomIn").funct();
+mxEvent.consume(F)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");e(mxUtils.bind(this,function(F){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(F)}),Editor.zoomFitImage,mxResources.get("fit"));var B=null,C=null,G=mxUtils.bind(this,function(F){null!=B&&(window.clearTimeout(B),B=null);null!=C&&(window.clearTimeout(C),C=null);B=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
+0);B=null;C=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";C=null}),600)}),F||200)}),J=mxUtils.bind(this,function(F){null!=B&&(window.clearTimeout(B),B=null);null!=C&&(window.clearTimeout(C),C=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,F||30)});if("1"==urlParams.layers){this.layersDialog=null;var D=e(mxUtils.bind(this,function(F){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 L=D.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=L.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));L=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=L.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(F)}),Editor.layersImage,mxResources.get("layers")),N=a.getModel();N.addListener(mxEvent.CHANGE,function(){D.style.display=1<N.getChildCount(N.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(e);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||e(mxUtils.bind(this,function(F){null!=
+this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(F)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(x=0;x<this.lightboxToolbarActions.length;x++){var Q=this.lightboxToolbarActions[x];Q.elem=e(Q.fn,Q.icon,Q.tooltip)}null!=g.refreshBtn&&e(mxUtils.bind(this,function(F){g.refreshBtn.url?window.location.href=g.refreshBtn.url:
+window.location.reload();mxEvent.consume(F)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=g.fullscreenBtn&&window.self!==window.top&&e(mxUtils.bind(this,function(F){g.fullscreenBtn.url?a.openLink(g.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(F)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(g.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&e(mxUtils.bind(this,
+function(F){"1"==urlParams.close||g.closeBtn?window.close():(this.destroy(),mxEvent.consume(F))}),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(F){mxEvent.isTouchEvent(F)||(mxEvent.isShiftDown(F)||
+J(30),G())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(F){mxEvent.consume(F)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(F){a.tooltipHandler.resetTimer();a.tooltipHandler.hideTooltip();mxEvent.isShiftDown(F)?G():J(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(F){mxEvent.isShiftDown(F)?G():J(100);mxEvent.consume(F)}));mxEvent.addListener(this.chromelessToolbar,
+"mouseleave",mxUtils.bind(this,function(F){mxEvent.isTouchEvent(F)||J(30)}));var R=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(F,L){this.startX=L.getGraphX();this.startY=L.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(F,L){},mouseUp:function(F,L){mxEvent.isTouchEvent(L.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<R&&Math.abs(this.scrollTop-a.container.scrollTop)<R&&
+Math.abs(this.startX-L.getGraphX())<R&&Math.abs(this.startY-L.getGraphY())<R&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?G():J(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var P=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var F=this.graph.getPagePadding(),L=this.graph.getPageSize();this.translate.x=F.x-(this.x0||0)*L.width;this.translate.y=F.y-(this.y0||0)*L.height}P.apply(this,
+arguments)};if(!a.isViewer()){var Z=a.sizeDidChange;a.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var F=this.getPageLayout(),L=this.getPagePadding(),T=this.getPageSize(),ca=Math.ceil(2*L.x+F.width*T.width),fa=Math.ceil(2*L.y+F.height*T.height),wa=a.minimumGraphSize;if(null==wa||wa.width!=ca||wa.height!=fa)a.minimumGraphSize=new mxRectangle(0,0,ca,fa);ca=L.x-F.x*T.width;L=L.y-F.y*T.height;this.autoTranslate||this.view.translate.x==ca&&this.view.translate.y==
+L?Z.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=F.x,this.view.y0=F.y,F=a.view.translate.x,T=a.view.translate.y,a.view.setTranslate(ca,L),a.container.scrollLeft+=Math.round((ca-F)*a.view.scale),a.container.scrollTop+=Math.round((L-T)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var U=a.view.getBackgroundPane(),V=a.view.getDrawPane();a.cumulativeZoomFactor=1;var ia=null,ha=null,ba=null,qa=null,O=null,S=function(F){null!=
+ia&&window.clearTimeout(ia);0<=F&&window.setTimeout(function(){if(!a.isMouseDown||qa)ia=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)),V.style.transformOrigin="",U.style.transformOrigin="",mxClient.IS_SF?(V.style.transform="scale(1)",
+U.style.transform="scale(1)",window.setTimeout(function(){V.style.transform="";U.style.transform=""},0)):(V.style.transform="",U.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var L=new mxPoint(a.container.scrollLeft,a.container.scrollTop),T=mxUtils.getOffset(a.container),ca=a.view.scale,fa=0,wa=0;null!=ha&&(fa=a.container.offsetWidth/2-ha.x+T.x,wa=a.container.offsetHeight/2-ha.y+T.y);a.zoom(a.cumulativeZoomFactor,null,a.isFastZoomEnabled()?
+20:null);a.view.scale!=ca&&(null!=ba&&(fa+=L.x-ba.x,wa+=L.y-ba.y),null!=b&&f.chromelessResize(!1,null,fa*(a.cumulativeZoomFactor-1),wa*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)||0==fa&&0==wa||(a.container.scrollLeft-=fa*(a.cumulativeZoomFactor-1),a.container.scrollTop-=wa*(a.cumulativeZoomFactor-1)));null!=O&&V.setAttribute("filter",O);a.cumulativeZoomFactor=1;O=qa=ha=ba=ia=null}),null!=F?F:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay)},0)};a.lazyZoom=function(F,L,
+T,ca){ca=null!=ca?ca:this.zoomFactor;(L=L||!a.scrollbars)&&(ha=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));F?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=ca,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/=ca,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&&""!=V.getAttribute("filter")&&(O=V.getAttribute("filter"),V.removeAttribute("filter")),ba=new mxPoint(a.container.scrollLeft,a.container.scrollTop),F=L||null==ha?a.container.scrollLeft+a.container.clientWidth/
+2:ha.x+a.container.scrollLeft-a.container.offsetLeft,ca=L||null==ha?a.container.scrollTop+a.container.clientHeight/2:ha.y+a.container.scrollTop-a.container.offsetTop,V.style.transformOrigin=F+"px "+ca+"px",V.style.transform="scale("+this.cumulativeZoomFactor+")",U.style.transformOrigin=F+"px "+ca+"px",U.style.transform="scale("+this.cumulativeZoomFactor+")",null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(F=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(F.style,
+"transform-origin",(L||null==ha?a.container.clientWidth/2+a.container.scrollLeft-F.offsetLeft+"px":ha.x+a.container.scrollLeft-F.offsetLeft-a.container.offsetLeft+"px")+" "+(L||null==ha?a.container.clientHeight/2+a.container.scrollTop-F.offsetTop+"px":ha.y+a.container.scrollTop-F.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(F.style,"transform","scale("+this.cumulativeZoomFactor+")")),a.view.getDecoratorPane().style.opacity="0",a.view.getOverlayPane().style.opacity="0",null!=f.hoverIcons&&
+f.hoverIcons.reset());S(a.isFastZoomEnabled()?T:0)};mxEvent.addGestureListeners(a.container,function(F){null!=ia&&window.clearTimeout(ia)},null,function(F){1!=a.cumulativeZoomFactor&&S(0)});mxEvent.addListener(a.container,"scroll",function(F){null==ia||a.isMouseDown||1==a.cumulativeZoomFactor||S(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(F,L,T,ca,fa){a.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!T&&a.isScrollWheelEvent(F))T=
+a.view.getTranslate(),ca=40/a.view.scale,mxEvent.isShiftDown(F)?a.view.setTranslate(T.x+(L?-ca:ca),T.y):a.view.setTranslate(T.x,T.y+(L?ca:-ca));else if(T||a.isZoomWheelEvent(F))for(var wa=mxEvent.getSource(F);null!=wa;){if(wa==a.container)return a.tooltipHandler.hideTooltip(),ha=null!=ca&&null!=fa?new mxPoint(ca,fa):new mxPoint(mxEvent.getClientX(F),mxEvent.getClientY(F)),qa=T,T=a.zoomFactor,ca=null,F.ctrlKey&&null!=F.deltaY&&40>Math.abs(F.deltaY)&&Math.round(F.deltaY)!=F.deltaY?T=1+Math.abs(F.deltaY)/
+20*(T-1):null!=F.movementY&&"pointermove"==F.type&&(T=1+Math.max(1,Math.abs(F.movementY))/20*(T-1),ca=-1),a.lazyZoom(L,null,ca,T),mxEvent.consume(F),!1;wa=wa.parentNode}}),a.container);a.panningHandler.zoomGraph=function(F){a.cumulativeZoomFactor=F.scale;a.lazyZoom(0<F.scale,!0);mxEvent.consume(F)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(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(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,f=60;null!=b&&(f=parseInt(b));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(f,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))};
@@ -2566,11 +2566,11 @@ this.container.appendChild(this.sidebarFooterContainer);this.container.appendChi
!0,0,mxUtils.bind(this,function(b){this.hsplitPosition=b;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a;0==this.statusContainer.getElementsByTagName("div").length&&(this.statusContainer.innerText="",a=this.createStatusDiv(a),this.statusContainer.appendChild(a))};
EditorUi.prototype.createStatusDiv=function(a){var b=document.createElement("div");b.setAttribute("title",a);b.innerHTML=a;return b};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)};EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};
EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b};
-EditorUi.prototype.addSplitHandler=function(a,b,f,d){function g(x){if(null!=k){var A=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));d(Math.max(0,n+(b?A.x-k.x:k.y-A.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function e(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(b?a.style.left:a.style.bottom);b||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
-mxEvent.getClientY(x));n=r();u=!1;mxEvent.consume(x)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(x){if(!u&&this.hsplitClickEnabled){var A=null!=m?m-f:0;m=r();d(A);mxEvent.consume(x)}}));mxEvent.addGestureListeners(document,null,g,e);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,g,e)})};
+EditorUi.prototype.addSplitHandler=function(a,b,f,d){function g(x){if(null!=k){var B=new mxPoint(mxEvent.getClientX(x),mxEvent.getClientY(x));d(Math.max(0,n+(b?B.x-k.x:k.y-B.y)-f));mxEvent.consume(x);n!=r()&&(u=!0,m=null)}}function e(x){g(x);k=n=null}var k=null,n=null,u=!0,m=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var r=mxUtils.bind(this,function(){var x=parseInt(b?a.style.left:a.style.bottom);b||(x=x+f-this.footerHeight);return x});mxEvent.addGestureListeners(a,function(x){k=new mxPoint(mxEvent.getClientX(x),
+mxEvent.getClientY(x));n=r();u=!1;mxEvent.consume(x)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(x){if(!u&&this.hsplitClickEnabled){var B=null!=m?m-f:0;m=r();d(B);mxEvent.consume(x)}}));mxEvent.addGestureListeners(document,null,g,e);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,g,e)})};
EditorUi.prototype.prompt=function(a,b,f){a=new FilenameDialog(this,b,mxResources.get("apply"),function(d){f(parseFloat(d))},a);this.showDialog(a.container,300,80,!0,!0);a.init()};
EditorUi.prototype.handleError=function(a,b,f,d,g){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){g=mxUtils.htmlEntities(mxResources.get("unknownError"));var e=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(g=mxUtils.htmlEntities(a.message));this.showError(b,g,e,f,null,null,null,null,null,null,null,null,d?f:null)}else null!=f&&f()};
-EditorUi.prototype.showError=function(a,b,f,d,g,e,k,n,u,m,r,x,A){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,g,e,k,x,n,u);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,r||100+20*b,!0,!1,A);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,g,e,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,g,e,k,n,u,m);this.dialogs.push(this.dialog)};
+EditorUi.prototype.showError=function(a,b,f,d,g,e,k,n,u,m,r,x,B){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,g,e,k,x,n,u);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,m||340,r||100+20*b,!0,!1,B);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,g,e,k,n,u,m){this.editor.graph.tooltipHandler.resetTimer();this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,g,e,k,n,u,m);this.dialogs.push(this.dialog)};
EditorUi.prototype.hideDialog=function(a,b,f){null!=this.dialogs&&0<this.dialogs.length&&(null==f||f==this.dialog.container.firstChild)&&(f=this.dialogs.pop(),0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?
this.editor.graph.cellEditor.textarea.focus():(mxUtils.clearSelection(),this.editor.graph.container.focus())}),0)))};EditorUi.prototype.ctrlEnter=function(){var a=this.editor.graph;if(a.isEnabled())try{for(var b=a.getSelectionCells(),f=new mxDictionary,d=[],g=0;g<b.length;g++){var e=a.isTableCell(b[g])?a.model.getParent(b[g]):b[g];null==e||f.get(e)||(f.put(e,!0),d.push(e))}a.setSelectionCells(a.duplicateCells(d,!1))}catch(k){this.handleError(k)}};
EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),g=230+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));a=new ColorDialog(this,mxUtils.rgba2hex(a)||"none",function(e){f.cellEditor.restoreSelection(d);b(e)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(a.container,230,g,!0,!1);a.init()};
@@ -2594,13 +2594,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(d){d=new ChangePageSetup(this,null,d);d.ignoreColor=!0;this.editor.graph.model.execute(d)});var f=mxUtils.prompt(mxResources.get("backgroundImage"),null!=b?b.src:"");null!=f&&0<f.length?(b=new Image,b.onload=function(){a(new mxImage(f,b.width,b.height),!1)},b.onerror=function(){a(null,!0);mxUtils.alert(mxResources.get("fileNotFound"))},b.src=f):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,f){mxUtils.confirm(a)?null!=b&&b():null!=f&&f()};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(x,A,C){if(!d.isSelectionEmpty()&&d.isEnabled()){A=null!=A?A:1;var F=d.getCompositeParents(d.getSelectionCells()),K=0<F.length?F[0]:null;if(null!=K)if(C){d.getModel().beginUpdate();try{for(K=0;K<F.length;K++)if(d.getModel().isVertex(F[K])&&d.isCellResizable(F[K])){var D=d.getCellGeometry(F[K]);null!=D&&(D=D.clone(),37==x?D.width=Math.max(0,D.width-A):38==x?D.height=Math.max(0,D.height-A):39==x?D.width+=A:40==x&&(D.height+=A),d.getModel().setGeometry(F[K],
-D))}}finally{d.getModel().endUpdate()}}else{D=d.model.getParent(K);var O=d.getView().scale;C=null;1==d.getSelectionCount()&&d.model.isVertex(K)&&null!=d.layoutManager&&!d.isCellLocked(K)&&(C=d.layoutManager.getLayout(D));if(null!=C&&C.constructor==mxStackLayout)A=D.getIndex(K),37==x||38==x?d.model.add(D,K,Math.max(0,A-1)):(39==x||40==x)&&d.model.add(D,K,Math.min(d.model.getChildCount(D),A+1));else{var Q=d.graphHandler;null!=Q&&(null==Q.first&&Q.start(K,0,0,F),null!=Q.first&&(K=F=0,37==x?F=-A:38==
-x?K=-A:39==x?F=A:40==x&&(K=A),Q.currentDx+=F*O,Q.currentDy+=K*O,Q.checkPreview(),Q.updatePreview()),null!=k&&window.clearTimeout(k),k=window.setTimeout(function(){if(null!=Q.first){var R=Q.roundLength(Q.currentDx/O),P=Q.roundLength(Q.currentDy/O);Q.moveCells(Q.cells,R,P);Q.reset()}},400))}}}}var f=this,d=this.editor.graph,g=new mxKeyHandler(d),e=g.isEventIgnored;g.isEventIgnored=function(x){return!(mxEvent.isShiftDown(x)&&9==x.keyCode)&&(!this.isControlDown(x)||mxEvent.isShiftDown(x)||90!=x.keyCode&&
+EditorUi.prototype.createKeyHandler=function(a){function b(x,B,C){if(!d.isSelectionEmpty()&&d.isEnabled()){B=null!=B?B:1;var G=d.getCompositeParents(d.getSelectionCells()),J=0<G.length?G[0]:null;if(null!=J)if(C){d.getModel().beginUpdate();try{for(J=0;J<G.length;J++)if(d.getModel().isVertex(G[J])&&d.isCellResizable(G[J])){var D=d.getCellGeometry(G[J]);null!=D&&(D=D.clone(),37==x?D.width=Math.max(0,D.width-B):38==x?D.height=Math.max(0,D.height-B):39==x?D.width+=B:40==x&&(D.height+=B),d.getModel().setGeometry(G[J],
+D))}}finally{d.getModel().endUpdate()}}else{D=d.model.getParent(J);var N=d.getView().scale;C=null;1==d.getSelectionCount()&&d.model.isVertex(J)&&null!=d.layoutManager&&!d.isCellLocked(J)&&(C=d.layoutManager.getLayout(D));if(null!=C&&C.constructor==mxStackLayout)B=D.getIndex(J),37==x||38==x?d.model.add(D,J,Math.max(0,B-1)):(39==x||40==x)&&d.model.add(D,J,Math.min(d.model.getChildCount(D),B+1));else{var Q=d.graphHandler;null!=Q&&(null==Q.first&&Q.start(J,0,0,G),null!=Q.first&&(J=G=0,37==x?G=-B:38==
+x?J=-B:39==x?G=B:40==x&&(J=B),Q.currentDx+=G*N,Q.currentDy+=J*N,Q.checkPreview(),Q.updatePreview()),null!=k&&window.clearTimeout(k),k=window.setTimeout(function(){if(null!=Q.first){var R=Q.roundLength(Q.currentDx/N),P=Q.roundLength(Q.currentDy/N);Q.moveCells(Q.cells,R,P);Q.reset()}},400))}}}}var f=this,d=this.editor.graph,g=new mxKeyHandler(d),e=g.isEventIgnored;g.isEventIgnored=function(x){return!(mxEvent.isShiftDown(x)&&9==x.keyCode)&&(!this.isControlDown(x)||mxEvent.isShiftDown(x)||90!=x.keyCode&&
89!=x.keyCode&&188!=x.keyCode&&190!=x.keyCode&&85!=x.keyCode)&&(66!=x.keyCode&&73!=x.keyCode||!this.isControlDown(x)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&e.apply(this,arguments)};g.isEnabledForEvent=function(x){return!mxEvent.isConsumed(x)&&this.isGraphEvent(x)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};g.isControlDown=function(x){return mxEvent.isControlDown(x)||mxClient.IS_MAC&&x.metaKey};var k=null,n={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,
-39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},u=g.getFunction;mxKeyHandler.prototype.getFunction=function(x){if(d.isEnabled()){if(mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){var A=f.actions.get(f.altShiftActions[x.keyCode]);if(null!=A)return A.funct}if(null!=n[x.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(x)&&mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){if(d.model.isVertex(d.getSelectionCell()))return function(){var C=d.connectVertex(d.getSelectionCell(),n[x.keyCode],
+39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},u=g.getFunction;mxKeyHandler.prototype.getFunction=function(x){if(d.isEnabled()){if(mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){var B=f.actions.get(f.altShiftActions[x.keyCode]);if(null!=B)return B.funct}if(null!=n[x.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(x)&&mxEvent.isShiftDown(x)&&mxEvent.isAltDown(x)){if(d.model.isVertex(d.getSelectionCell()))return function(){var C=d.connectVertex(d.getSelectionCell(),n[x.keyCode],
d.defaultEdgeLength,x,!0);null!=C&&0<C.length&&(1==C.length&&d.model.isEdge(C[0])?d.setSelectionCell(d.model.getTerminal(C[0],!1)):d.setSelectionCell(C[C.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(x)?function(){b(x.keyCode,mxEvent.isShiftDown(x)?d.gridSize:null,!0)}:function(){b(x.keyCode,mxEvent.isShiftDown(x)?d.gridSize:null)}}return u.apply(this,arguments)};g.bindAction=mxUtils.bind(this,
-function(x,A,C,F){var K=this.actions.get(C);null!=K&&(C=function(){K.isEnabled()&&K.funct()},A?F?g.bindControlShiftKey(x,C):g.bindControlKey(x,C):F?g.bindShiftKey(x,C):g.bindKey(x,C))});var m=this,r=g.escape;g.escape=function(x){r.apply(this,arguments)};g.enter=function(){};g.bindControlShiftKey(36,function(){d.exitGroup()});g.bindControlShiftKey(35,function(){d.enterGroup()});g.bindShiftKey(36,function(){d.home()});g.bindKey(35,function(){d.refresh()});g.bindAction(107,!0,"zoomIn");g.bindAction(109,
+function(x,B,C,G){var J=this.actions.get(C);null!=J&&(C=function(){J.isEnabled()&&J.funct()},B?G?g.bindControlShiftKey(x,C):g.bindControlKey(x,C):G?g.bindShiftKey(x,C):g.bindKey(x,C))});var m=this,r=g.escape;g.escape=function(x){r.apply(this,arguments)};g.enter=function(){};g.bindControlShiftKey(36,function(){d.exitGroup()});g.bindControlShiftKey(35,function(){d.enterGroup()});g.bindShiftKey(36,function(){d.home()});g.bindKey(35,function(){d.refresh()});g.bindAction(107,!0,"zoomIn");g.bindAction(109,
!0,"zoomOut");g.bindAction(80,!0,"print");g.bindAction(79,!0,"outline",!0);if(!this.editor.chromeless||this.editor.editable)g.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),g.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),g.bindControlKey(13,function(){m.ctrlEnter()}),g.bindAction(8,!1,"delete"),g.bindAction(8,!0,"deleteAll"),g.bindAction(8,!1,"deleteLabels",!0),g.bindAction(46,!1,"delete"),g.bindAction(46,!0,"deleteAll"),g.bindAction(46,!1,"deleteLabels",!0),g.bindAction(36,
!1,"resetView"),g.bindAction(72,!0,"fitWindow",!0),g.bindAction(74,!0,"fitPage"),g.bindAction(74,!0,"fitTwoPages",!0),g.bindAction(48,!0,"customZoom"),g.bindAction(82,!0,"turn"),g.bindAction(82,!0,"clearDefaultStyle",!0),g.bindAction(83,!0,"save"),g.bindAction(83,!0,"saveAs",!0),g.bindAction(65,!0,"selectAll"),g.bindAction(65,!0,"selectNone",!0),g.bindAction(73,!0,"selectVertices",!0),g.bindAction(69,!0,"selectEdges",!0),g.bindAction(69,!0,"editStyle"),g.bindAction(66,!0,"bold"),g.bindAction(66,!0,
"toBack",!0),g.bindAction(70,!0,"toFront",!0),g.bindAction(68,!0,"duplicate"),g.bindAction(68,!0,"setAsDefaultStyle",!0),g.bindAction(90,!0,"undo"),g.bindAction(89,!0,"autosize",!0),g.bindAction(88,!0,"cut"),g.bindAction(67,!0,"copy"),g.bindAction(86,!0,"paste"),g.bindAction(71,!0,"group"),g.bindAction(77,!0,"editData"),g.bindAction(71,!0,"grid",!0),g.bindAction(73,!0,"italic"),g.bindAction(76,!0,"lockUnlock"),g.bindAction(76,!0,"layers",!0),g.bindAction(80,!0,"formatPanel",!0),g.bindAction(85,!0,
@@ -2639,15 +2639,15 @@ Sidebar.prototype.addEntries=function(a){for(var b=0;b<a.length;b++)mxUtils.bind
mxUtils.bind(this,function(){var e=this.editorUi.stringToCells(Graph.decompress(f.xml));return this.createVertexTemplateFromCells(e,f.w,f.h,f.title||"",!0,!1,!0)}))})(a[b])};Sidebar.prototype.setCurrentSearchEntryLibrary=function(a,b){this.currentSearchEntryLibrary=null!=a?{id:a,lib:b}:null};
Sidebar.prototype.addEntry=function(a,b){if(null!=this.taglist&&null!=a&&0<a.length){null!=this.currentSearchEntryLibrary&&(b.parentLibraries=[this.currentSearchEntryLibrary]);a=a.toLowerCase().replace(/[\/,\(\)]/g," ").split(" ");for(var f=[],d={},g=0;g<a.length;g++){null==d[a[g]]&&(d[a[g]]=!0,f.push(a[g]));var e=a[g].replace(/\.*\d*$/,"");e!=a[g]&&null==d[e]&&(d[e]=!0,f.push(e))}for(g=0;g<f.length;g++)this.addEntryForTag(f[g],b)}return b};
Sidebar.prototype.addEntryForTag=function(a,b){if(null!=a&&1<a.length){var f=this.taglist[a];"object"!==typeof f&&(f={entries:[]},this.taglist[a]=f);f.entries.push(b)}};
-Sidebar.prototype.searchEntries=function(a,b,f,d,g){if(null!=this.taglist&&null!=a){var e=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*b;a=[];for(var n=0,u=0;u<e.length;u++)if(0<e[u].length){var m=this.taglist[e[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var A=0;A<x.length;A++)if(m=x[A],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==e.length-1&&a.length==k)){d(a.slice(f*b,k),k,!0,e);return}}else a=[];g=r;n++}g=a.length;d(a.slice(f*b,(f+1)*b),g,!1,e)}else d([],null,
+Sidebar.prototype.searchEntries=function(a,b,f,d,g){if(null!=this.taglist&&null!=a){var e=a.toLowerCase().split(" ");g=new mxDictionary;var k=(f+1)*b;a=[];for(var n=0,u=0;u<e.length;u++)if(0<e[u].length){var m=this.taglist[e[u]],r=new mxDictionary;if(null!=m){var x=m.entries;a=[];for(var B=0;B<x.length;B++)if(m=x[B],0==n==(null==g.get(m))&&(r.put(m,m),a.push(m),u==e.length-1&&a.length==k)){d(a.slice(f*b,k),k,!0,e);return}}else a=[];g=r;n++}g=a.length;d(a.slice(f*b,(f+1)*b),g,!1,e)}else d([],null,
null,e)};Sidebar.prototype.filterTags=function(a){if(null!=a){a=a.split(" ");for(var b=[],f={},d=0;d<a.length;d++)null==f[a[d]]&&(f[a[d]]="1",b.push(a[d]));return b.join(" ")}return null};Sidebar.prototype.cloneCell=function(a,b){a=a.clone();null!=b&&(a.value=b);return a};Sidebar.prototype.showPopupMenuForEntry=function(a,b,f){};
Sidebar.prototype.addSearchPalette=function(a){var b=document.createElement("div");b.style.visibility="hidden";this.container.appendChild(b);var f=document.createElement("div");f.className="geSidebar";f.style.boxSizing="border-box";f.style.overflow="hidden";f.style.width="100%";f.style.padding="8px";f.style.paddingTop="14px";f.style.paddingBottom="0px";a||(f.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 g=document.createElement("input");g.setAttribute("placeholder",mxResources.get("searchShapes"));g.setAttribute("type","text");g.style.fontSize="12px";g.style.overflow="hidden";g.style.boxSizing="border-box";g.style.border="solid 1px #d5d5d5";g.style.borderRadius="4px";g.style.width="100%";g.style.outline="none";g.style.padding="6px";g.style.paddingRight="20px";d.appendChild(g);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+"')";d.appendChild(e);f.appendChild(d);var k=document.createElement("center"),n=mxUtils.button(mxResources.get("moreResults"),function(){K()});n.style.display="none";n.style.lineHeight="normal";n.style.fontSize="12px";n.style.padding="6px 12px 6px 12px";n.style.marginTop="4px";n.style.marginBottom="8px";k.style.paddingTop="4px";k.style.paddingBottom=
-"4px";k.appendChild(n);f.appendChild(k);var u="",m=!1,r=!1,x=0,A={},C=12,F=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var D=f.firstChild;null!=D;){var O=D.nextSibling;D!=d&&D!=k&&D.parentNode.removeChild(D);D=O}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),n.style.display="none",u=g.value="",F());g.focus()});var K=mxUtils.bind(this,
-function(){C=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=g.value){if(null!=k.parentNode&&(u!=g.value&&(F(),u=g.value,A={},r=!1,x=0),!m&&!r)){n.setAttribute("disabled","true");n.style.display="";n.style.cursor="wait";n.innerHTML=mxResources.get("loading")+"...";m=!0;var D={};this.currentSearch=D;this.searchEntries(u,C,x,mxUtils.bind(this,function(O,Q,R,P){if(this.currentSearch==D){O=null!=O?O:[];m=!1;x++;this.insertSearchHint(f,u,C,x,O,Q,R,P);
-0==O.length&&1==x&&(u="");null!=k.parentNode&&k.parentNode.removeChild(k);for(Q=0;Q<O.length;Q++)mxUtils.bind(this,function(Z){try{var T=Z();null==A[T.innerHTML]?(A[T.innerHTML]=null!=Z.parentLibraries?Z.parentLibraries.slice():[],f.appendChild(T)):null!=Z.parentLibraries&&(A[T.innerHTML]=A[T.innerHTML].concat(Z.parentLibraries));mxEvent.addGestureListeners(T,null,null,mxUtils.bind(this,function(U){var fa=A[T.innerHTML];mxEvent.isPopupTrigger(U)&&this.showPopupMenuForEntry(T,fa,U)}));mxEvent.disableContextMenu(T)}catch(U){}})(O[Q]);
-R?(n.removeAttribute("disabled"),n.innerHTML=mxResources.get("moreResults")):(n.innerHTML=mxResources.get("reset"),n.style.display="none",r=!0);n.style.cursor="";f.appendChild(k)}}),mxUtils.bind(this,function(){n.style.cursor=""}))}}else F(),u=g.value="",A={},n.style.display="none",r=!1,g.focus()});this.searchShapes=function(D){g.value=D;K()};mxEvent.addListener(g,"keydown",mxUtils.bind(this,function(D){13==D.keyCode&&(K(),mxEvent.consume(D))}));mxEvent.addListener(g,"keyup",mxUtils.bind(this,function(D){""==
+mxResources.get("search"));e.style.position="relative";e.style.left="-18px";e.style.top="1px";e.style.background="url('"+this.editorUi.editor.transparentImage+"')";d.appendChild(e);f.appendChild(d);var k=document.createElement("center"),n=mxUtils.button(mxResources.get("moreResults"),function(){J()});n.style.display="none";n.style.lineHeight="normal";n.style.fontSize="12px";n.style.padding="6px 12px 6px 12px";n.style.marginTop="4px";n.style.marginBottom="8px";k.style.paddingTop="4px";k.style.paddingBottom=
+"4px";k.appendChild(n);f.appendChild(k);var u="",m=!1,r=!1,x=0,B={},C=12,G=mxUtils.bind(this,function(){m=!1;this.currentSearch=null;for(var D=f.firstChild;null!=D;){var N=D.nextSibling;D!=d&&D!=k&&D.parentNode.removeChild(D);D=N}});mxEvent.addListener(e,"click",function(){e.getAttribute("src")==Dialog.prototype.closeImage&&(e.setAttribute("src",Sidebar.prototype.searchImage),e.setAttribute("title",mxResources.get("search")),n.style.display="none",u=g.value="",G());g.focus()});var J=mxUtils.bind(this,
+function(){C=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10)));this.hideTooltip();if(""!=g.value){if(null!=k.parentNode&&(u!=g.value&&(G(),u=g.value,B={},r=!1,x=0),!m&&!r)){n.setAttribute("disabled","true");n.style.display="";n.style.cursor="wait";n.innerHTML=mxResources.get("loading")+"...";m=!0;var D={};this.currentSearch=D;this.searchEntries(u,C,x,mxUtils.bind(this,function(N,Q,R,P){if(this.currentSearch==D){N=null!=N?N:[];m=!1;x++;this.insertSearchHint(f,u,C,x,N,Q,R,P);
+0==N.length&&1==x&&(u="");null!=k.parentNode&&k.parentNode.removeChild(k);for(Q=0;Q<N.length;Q++)mxUtils.bind(this,function(Z){try{var U=Z();null==B[U.innerHTML]?(B[U.innerHTML]=null!=Z.parentLibraries?Z.parentLibraries.slice():[],f.appendChild(U)):null!=Z.parentLibraries&&(B[U.innerHTML]=B[U.innerHTML].concat(Z.parentLibraries));mxEvent.addGestureListeners(U,null,null,mxUtils.bind(this,function(V){var ia=B[U.innerHTML];mxEvent.isPopupTrigger(V)&&this.showPopupMenuForEntry(U,ia,V)}));mxEvent.disableContextMenu(U)}catch(V){}})(N[Q]);
+R?(n.removeAttribute("disabled"),n.innerHTML=mxResources.get("moreResults")):(n.innerHTML=mxResources.get("reset"),n.style.display="none",r=!0);n.style.cursor="";f.appendChild(k)}}),mxUtils.bind(this,function(){n.style.cursor=""}))}}else G(),u=g.value="",B={},n.style.display="none",r=!1,g.focus()});this.searchShapes=function(D){g.value=D;J()};mxEvent.addListener(g,"keydown",mxUtils.bind(this,function(D){13==D.keyCode&&(J(),mxEvent.consume(D))}));mxEvent.addListener(g,"keyup",mxUtils.bind(this,function(D){""==
g.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")));""==g.value?(r=!0,n.style.display="none"):g.value!=u?(n.style.display="none",r=!1):m||(n.style.display=r?"none":"")}));mxEvent.addListener(g,"mousedown",function(D){D.stopPropagation&&D.stopPropagation();D.cancelBubble=!0});mxEvent.addListener(g,"selectstart",function(D){D.stopPropagation&&
D.stopPropagation();D.cancelBubble=!0});a=document.createElement("div");a.appendChild(f);this.container.appendChild(a);this.palettes.search=[b,a]};
Sidebar.prototype.insertSearchHint=function(a,b,f,d,g,e,k,n){0==g.length&&1==d&&(f=document.createElement("div"),f.className="geTitle",f.style.cssText="background-color:transparent;border-color:transparent;color:gray;padding:6px 0px 0px 0px !important;margin:4px 8px 4px 8px;text-align:center;cursor:default !important",mxUtils.write(f,mxResources.get("noResultsFor",[b])),a.appendChild(f))};
@@ -2770,42 +2770,42 @@ Sidebar.prototype.updateShapes=function(a,b){var f=this.editorUi.editor.graph,d=
0;n<b.length;n++){var u=b[n];if(f.getModel().isVertex(u)==f.getModel().isVertex(a)||f.getModel().isEdge(u)==f.getModel().isEdge(a)){var m=f.getCellStyle(b[n],!1);f.getModel().setStyle(u,e);if("1"==mxUtils.getValue(m,"composite","0"))for(var r=f.model.getChildCount(u);0<=r;r--)f.model.remove(f.model.getChildAt(u,r));"umlLifeline"==m[mxConstants.STYLE_SHAPE]&&"umlLifeline"!=d[mxConstants.STYLE_SHAPE]&&(f.setCellStyles(mxConstants.STYLE_SHAPE,"umlLifeline",[u]),f.setCellStyles("participant",d[mxConstants.STYLE_SHAPE],
[u]));for(r=0;r<k.length;r++){var x=m[k[r]];null!=x&&f.setCellStyles(k[r],x,[u])}g.push(u)}}}finally{f.model.endUpdate()}return g};
Sidebar.prototype.createDropHandler=function(a,b,f,d){f=null!=f?f:!0;return mxUtils.bind(this,function(g,e,k,n,u,m){for(m=m?null:mxEvent.isTouchEvent(e)||mxEvent.isPenEvent(e)?document.elementFromPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)):mxEvent.getSource(e);null!=m&&m!=this.container;)m=m.parentNode;if(null==m&&g.isEnabled()){a=g.getImportableCells(a);if(0<a.length){g.stopEditing();m=null==k||mxEvent.isAltDown(e)?!1:g.isValidDropTarget(k,a,e);var r=null;null==k||m||(k=null);if(!g.isCellLocked(k||
-g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(b&&g.isSplitTarget(k,a,e)){var x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,K=g.cloneCells(a);g.splitEdge(k,K,null,n-d.width/2,u-d.height/2,C,F);r=K}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var D=g.layoutManager.getLayout(k);if(null!=D)for(x=g.view.scale,A=g.view.translate,C=(n+A.x)*x,F=(u+A.y)*x,k=0;k<r.length;k++)D.moveCell(r[k],C,F)}!f||null!=e&&mxEvent.isShiftDown(e)||
-g.fireEvent(new mxEventObject("cellsInserted","cells",r))}catch(O){this.editorUi.handleError(O)}finally{g.model.endUpdate()}null!=r&&0<r.length&&(g.scrollCellToVisible(r[0]),g.setSelectionCells(r));g.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=r&&1==r.length&&window.setTimeout(function(){g.startEditing(r[0])},0)}}mxEvent.consume(e)}})};
+g.getDefaultParent())){g.model.beginUpdate();try{n=Math.round(n);u=Math.round(u);if(b&&g.isSplitTarget(k,a,e)){var x=g.view.scale,B=g.view.translate,C=(n+B.x)*x,G=(u+B.y)*x,J=g.cloneCells(a);g.splitEdge(k,J,null,n-d.width/2,u-d.height/2,C,G);r=J}else 0<a.length&&(r=g.importCells(a,n,u,k));if(null!=g.layoutManager){var D=g.layoutManager.getLayout(k);if(null!=D)for(x=g.view.scale,B=g.view.translate,C=(n+B.x)*x,G=(u+B.y)*x,k=0;k<r.length;k++)D.moveCell(r[k],C,G)}!f||null!=e&&mxEvent.isShiftDown(e)||
+g.fireEvent(new mxEventObject("cellsInserted","cells",r))}catch(N){this.editorUi.handleError(N)}finally{g.model.endUpdate()}null!=r&&0<r.length&&(g.scrollCellToVisible(r[0]),g.setSelectionCells(r));g.editAfterInsert&&null!=e&&mxEvent.isMouseEvent(e)&&null!=r&&1==r.length&&window.setTimeout(function(){g.startEditing(r[0])},0)}}mxEvent.consume(e)}})};
Sidebar.prototype.createDragPreview=function(a,b){var f=document.createElement("div");f.className="geDragPreview";f.style.width=a+"px";f.style.height=b+"px";return f};
-Sidebar.prototype.dropAndConnect=function(a,b,f,d,g){var e=this.getDropAndConnectGeometry(a,b[d],f,b),k=[];if(null!=e){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(b[d]),x=n.model.getParent(a),A=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(A=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var F=C=0;if(null!=k){var K=k.origin;C=K.x;F=K.y;var D=e.getTerminalPoint(!1);null!=
-D&&(D.x+=K.x,D.y+=K.y)}var O=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&A),Q=n.getCellAt((e.x+C+n.view.translate.x)*n.view.scale,(e.y+F+n.view.translate.y)*n.view.scale,null,null,null,function(Z,T,U){return!n.isContainer(Z.cell)});if(null!=Q&&Q!=x)k=n.view.getState(Q),null!=k&&(K=k.origin,x=Q,O=!0,n.model.isEdge(a)||(e.x-=K.x-C,e.y-=K.y-F));else if(!A||n.isTableRow(a)||n.isTableCell(a))e.x+=C,e.y+=F;C=r.x;F=r.y;n.model.isEdge(b[d])&&(F=C=0);k=b=n.importCells(b,
-e.x-(O?C:0),e.y-(O?F:0),O?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,b[d],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(b[d])){n.model.setTerminal(b[d],a,!0);var R=n.getCellGeometry(b[d]);R.points=null;if(null!=R.getTerminalPoint(!1))R.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(O&&n.model.isVertex(x)){var P=n.view.getState(x);K=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(b,K.x,K.y,null,null,!0)}}else r=n.getCellGeometry(b[d]),C=e.x-Math.round(r.x),F=
-e.y-Math.round(r.y),e.x=Math.round(r.x),e.y=Math.round(r.y),n.model.setGeometry(b[d],e),n.cellsMoved(b,C,F,null,null,!0),k=b.slice(),u=1==k.length?k[0]:null,b.push(n.insertEdge(null,null,"",a,b[d],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(Z){this.editorUi.handleError(Z)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
+Sidebar.prototype.dropAndConnect=function(a,b,f,d,g){var e=this.getDropAndConnectGeometry(a,b[d],f,b),k=[];if(null!=e){var n=this.editorUi.editor.graph,u=null;n.model.beginUpdate();try{var m=n.getCellGeometry(a),r=n.getCellGeometry(b[d]),x=n.model.getParent(a),B=!0;if(null!=n.layoutManager){var C=n.layoutManager.getLayout(x);null!=C&&C.constructor==mxStackLayout&&(B=!1)}k=n.model.isEdge(a)?null:n.view.getState(x);var G=C=0;if(null!=k){var J=k.origin;C=J.x;G=J.y;var D=e.getTerminalPoint(!1);null!=
+D&&(D.x+=J.x,D.y+=J.y)}var N=!n.isTableRow(a)&&!n.isTableCell(a)&&(n.model.isEdge(a)||null!=m&&!m.relative&&B),Q=n.getCellAt((e.x+C+n.view.translate.x)*n.view.scale,(e.y+G+n.view.translate.y)*n.view.scale,null,null,null,function(Z,U,V){return!n.isContainer(Z.cell)});if(null!=Q&&Q!=x)k=n.view.getState(Q),null!=k&&(J=k.origin,x=Q,N=!0,n.model.isEdge(a)||(e.x-=J.x-C,e.y-=J.y-G));else if(!B||n.isTableRow(a)||n.isTableCell(a))e.x+=C,e.y+=G;C=r.x;G=r.y;n.model.isEdge(b[d])&&(G=C=0);k=b=n.importCells(b,
+e.x-(N?C:0),e.y-(N?G:0),N?x:null);if(n.model.isEdge(a))n.model.setTerminal(a,b[d],f==mxConstants.DIRECTION_NORTH);else if(n.model.isEdge(b[d])){n.model.setTerminal(b[d],a,!0);var R=n.getCellGeometry(b[d]);R.points=null;if(null!=R.getTerminalPoint(!1))R.setTerminalPoint(e.getTerminalPoint(!1),!1);else if(N&&n.model.isVertex(x)){var P=n.view.getState(x);J=P.cell!=n.view.currentRoot?P.origin:new mxPoint(0,0);n.cellsMoved(b,J.x,J.y,null,null,!0)}}else r=n.getCellGeometry(b[d]),C=e.x-Math.round(r.x),G=
+e.y-Math.round(r.y),e.x=Math.round(r.x),e.y=Math.round(r.y),n.model.setGeometry(b[d],e),n.cellsMoved(b,C,G,null,null,!0),k=b.slice(),u=1==k.length?k[0]:null,b.push(n.insertEdge(null,null,"",a,b[d],n.createCurrentEdgeStyle()));null!=g&&mxEvent.isShiftDown(g)||n.fireEvent(new mxEventObject("cellsInserted","cells",b))}catch(Z){this.editorUi.handleError(Z)}finally{n.model.endUpdate()}n.editAfterInsert&&null!=g&&mxEvent.isMouseEvent(g)&&null!=u&&window.setTimeout(function(){n.startEditing(u)},0)}return k};
Sidebar.prototype.getDropAndConnectGeometry=function(a,b,f,d){var g=this.editorUi.editor.graph,e=g.view,k=1<d.length,n=g.getCellGeometry(a);d=g.getCellGeometry(b);null!=n&&null!=d&&(d=d.clone(),g.model.isEdge(a)?(a=g.view.getState(a),n=a.absolutePoints,b=n[0],g=n[n.length-1],f==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=g.x/e.scale-e.translate.x-d.width/2,d.y=g.y/e.scale-e.translate.y-d.height/2)):(n.relative&&(a=g.view.getState(a),
n=n.clone(),n.x=(a.x-e.translate.x)/e.scale,n.y=(a.y-e.translate.y)/e.scale),e=g.defaultEdgeLength,g.model.isEdge(b)&&null!=d.getTerminalPoint(!0)&&null!=d.getTerminalPoint(!1)?(b=d.getTerminalPoint(!0),g=d.getTerminalPoint(!1),e=g.x-b.x,b=g.y-b.y,e=Math.sqrt(e*e+b*b),d.x=n.getCenterX(),d.y=n.getCenterY(),d.width=1,d.height=1,f==mxConstants.DIRECTION_NORTH?(d.height=e,d.y=n.y-e,d.setTerminalPoint(new mxPoint(d.x,d.y),!1)):f==mxConstants.DIRECTION_EAST?(d.width=e,d.x=n.x+n.width,d.setTerminalPoint(new mxPoint(d.x+
d.width,d.y),!1)):f==mxConstants.DIRECTION_SOUTH?(d.height=e,d.y=n.y+n.height,d.setTerminalPoint(new mxPoint(d.x,d.y+d.height),!1)):f==mxConstants.DIRECTION_WEST&&(d.width=e,d.x=n.x-e,d.setTerminalPoint(new mxPoint(d.x,d.y),!1))):(!k&&45<d.width&&45<d.height&&45<n.width&&45<n.height&&(d.width*=n.height/d.height,d.height=n.height),d.x=n.x+n.width/2-d.width/2,d.y=n.y+n.height/2-d.height/2,f==mxConstants.DIRECTION_NORTH?d.y=d.y-n.height/2-d.height/2-e:f==mxConstants.DIRECTION_EAST?d.x=d.x+n.width/2+
d.width/2+e:f==mxConstants.DIRECTION_SOUTH?d.y=d.y+n.height/2+d.height/2+e:f==mxConstants.DIRECTION_WEST&&(d.x=d.x-n.width/2-d.width/2-e),g.model.isEdge(b)&&null!=d.getTerminalPoint(!0)&&null!=b.getTerminal(!1)&&(n=g.getCellGeometry(b.getTerminal(!1)),null!=n&&(f==mxConstants.DIRECTION_NORTH?(d.x-=n.getCenterX(),d.y-=n.getCenterY()+n.height/2):f==mxConstants.DIRECTION_EAST?(d.x-=n.getCenterX()-n.width/2,d.y-=n.getCenterY()):f==mxConstants.DIRECTION_SOUTH?(d.x-=n.getCenterX(),d.y-=n.getCenterY()-n.height/
2):f==mxConstants.DIRECTION_WEST&&(d.x-=n.getCenterX()+n.width/2,d.y-=n.getCenterY()))))));return d};Sidebar.prototype.isDropStyleEnabled=function(a,b){var f=!0;null!=b&&1==a.length&&(a=this.graph.getCellStyle(a[b]),null!=a&&(f=mxUtils.getValue(a,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(a,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE));return f};
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,f,d,g){function e(aa,oa){var ua=mxUtils.createImage(aa.src);ua.style.width=aa.width+"px";ua.style.height=aa.height+"px";null!=oa&&ua.setAttribute("title",oa);mxUtils.setOpacity(ua,aa==this.refreshTarget?30:20);ua.style.position="absolute";ua.style.cursor="crosshair";return ua}function k(aa,oa,ua,Ja){null!=Ja.parentNode&&(mxUtils.contains(ua,aa,oa)?(mxUtils.setOpacity(Ja,100),L=Ja):mxUtils.setOpacity(Ja,Ja==fa?30:20));return ua}for(var n=this.editorUi,
-u=n.editor.graph,m=null,r=null,x=this,A=0;A<d.length&&(null==r&&u.model.isVertex(d[A])?r=A:null==m&&u.model.isEdge(d[A])&&null==u.model.getTerminal(d[A],!0)&&(m=A),null==r||null==m);A++);var C=this.isDropStyleEnabled(d,r),F=mxUtils.makeDraggable(a,u,mxUtils.bind(this,function(aa,oa,ua,Ja,Ga){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=d&&null!=Q&&L==fa){var va=aa.isCellSelected(Q.cell)?aa.getSelectionCells():[Q.cell];va=this.updateShapes(aa.model.isEdge(Q.cell)?d[0]:d[r],
-va);aa.setSelectionCells(va)}else null!=d&&null!=L&&null!=D&&L!=fa?(va=aa.model.isEdge(D.cell)||null==m?r:m,aa.setSelectionCells(this.dropAndConnect(D.cell,d,I,va,oa))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(aa.view.getState(aa.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(aa,oa){F.isActive()&&F.reset()});var K=F.mouseDown;F.mouseDown=function(aa){mxEvent.isPopupTrigger(aa)||mxEvent.isMultiTouchEvent(aa)||u.isCellLocked(u.getDefaultParent())||
-(u.stopEditing(),K.apply(this,arguments))};var D=null,O=null,Q=null,R=!1,P=e(this.triangleUp,mxResources.get("connect")),Z=e(this.triangleRight,mxResources.get("connect")),T=e(this.triangleDown,mxResources.get("connect")),U=e(this.triangleLeft,mxResources.get("connect")),fa=e(this.refreshTarget,mxResources.get("replace")),ha=null,ba=e(this.roundDrop),qa=e(this.roundDrop),I=mxConstants.DIRECTION_NORTH,L=null,H=F.createPreviewElement;F.createPreviewElement=function(aa){var oa=H.apply(this,arguments);
-mxClient.IS_SVG&&(oa.style.pointerEvents="none");this.previewElementWidth=oa.style.width;this.previewElementHeight=oa.style.height;return oa};var S=F.dragEnter;F.dragEnter=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("none");S.apply(this,arguments)};var V=F.dragExit;F.dragExit=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("");V.apply(this,arguments)};F.dragOver=function(aa,oa){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=L&&this.currentGuide.hide();
-if(null!=this.previewElement){var ua=aa.view;if(null!=Q&&L==fa)this.previewElement.style.display=aa.model.isEdge(Q.cell)?"none":"",this.previewElement.style.left=Q.x+"px",this.previewElement.style.top=Q.y+"px",this.previewElement.style.width=Q.width+"px",this.previewElement.style.height=Q.height+"px";else if(null!=D&&null!=L){null!=F.currentHighlight&&null!=F.currentHighlight.state&&F.currentHighlight.hide();var Ja=aa.model.isEdge(D.cell)||null==m?r:m,Ga=x.getDropAndConnectGeometry(D.cell,d[Ja],I,
-d),va=aa.model.isEdge(D.cell)?null:aa.getCellGeometry(D.cell),za=aa.getCellGeometry(d[Ja]),ra=aa.model.getParent(D.cell),Ha=ua.translate.x*ua.scale,Ta=ua.translate.y*ua.scale;null!=va&&!va.relative&&aa.model.isVertex(ra)&&ra!=ua.currentRoot&&(Ta=ua.getState(ra),Ha=Ta.x,Ta=Ta.y);va=za.x;za=za.y;aa.model.isEdge(d[Ja])&&(za=va=0);this.previewElement.style.left=(Ga.x-va)*ua.scale+Ha+"px";this.previewElement.style.top=(Ga.y-za)*ua.scale+Ta+"px";1==d.length&&(this.previewElement.style.width=Ga.width*ua.scale+
-"px",this.previewElement.style.height=Ga.height*ua.scale+"px");this.previewElement.style.display=""}else null!=F.currentHighlight.state&&aa.model.isEdge(F.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-g.width*ua.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-g.height*ua.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,
-this.previewElement.style.display="")}};var ea=(new Date).getTime(),ka=0,wa=null,W=this.editorUi.editor.graph.getCellStyle(d[0]);F.getDropTarget=mxUtils.bind(this,function(aa,oa,ua,Ja){var Ga=mxEvent.isAltDown(Ja)||null==d?null:aa.getCellAt(oa,ua,null,null,null,function(Ta,db,Ua){return aa.isContainer(Ta.cell)});if(null!=Ga&&!this.graph.isCellConnectable(Ga)&&!this.graph.model.isEdge(Ga)){var va=this.graph.getModel().getParent(Ga);this.graph.getModel().isVertex(va)&&this.graph.isCellConnectable(va)&&
-(Ga=va)}aa.isCellLocked(Ga)&&(Ga=null);var za=aa.view.getState(Ga);va=L=null;wa!=za?(ea=(new Date).getTime(),ka=0,wa=za,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=za&&(this.updateThread=window.setTimeout(function(){null==L&&(wa=za,F.getDropTarget(aa,oa,ua,Ja))},this.dropTargetDelay+10))):ka=(new Date).getTime()-ea;if(C&&2500>ka&&null!=za&&!mxEvent.isShiftDown(Ja)&&(mxUtils.getValue(za.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(W,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(za.style,
-mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(za.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(za.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(W,mxConstants.STYLE_SHAPE)||1500<ka||aa.model.isEdge(za.cell))&&ka>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(za)&&(aa.model.isVertex(za.cell)&&null!=r||aa.model.isEdge(za.cell)&&aa.model.isEdge(d[0]))){if(aa.isCellEditable(za.cell)){Q=
-za;var ra=aa.model.isEdge(za.cell)?aa.view.getPoint(za):new mxPoint(za.getCenterX(),za.getCenterY());ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);fa.style.left=Math.floor(ra.x)+"px";fa.style.top=Math.floor(ra.y)+"px";null==ha&&(aa.container.appendChild(fa),ha=fa.parentNode);k(oa,ua,ra,fa)}}else null==Q||!mxUtils.contains(Q,oa,ua)||1500<ka&&!mxEvent.isShiftDown(Ja)?(Q=null,null!=ha&&(fa.parentNode.removeChild(fa),
-ha=null)):null!=Q&&null!=ha&&(ra=aa.model.isEdge(Q.cell)?aa.view.getPoint(Q):new mxPoint(Q.getCenterX(),Q.getCenterY()),ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),k(oa,ua,ra,fa));if(R&&null!=D&&!mxEvent.isAltDown(Ja)&&null==L){va=mxRectangle.fromRectangle(D);if(aa.model.isEdge(D.cell)){var Ha=D.absolutePoints;null!=ba.parentNode&&(ra=Ha[0],va.add(k(oa,ua,new mxRectangle(ra.x-this.roundDrop.width/2,ra.y-this.roundDrop.height/
-2,this.roundDrop.width,this.roundDrop.height),ba)));null!=qa.parentNode&&(Ha=Ha[Ha.length-1],va.add(k(oa,ua,new mxRectangle(Ha.x-this.roundDrop.width/2,Ha.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),qa)))}else ra=mxRectangle.fromRectangle(D),null!=D.shape&&null!=D.shape.boundingBox&&(ra=mxRectangle.fromRectangle(D.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Ha=this.graph.selectionCellsHandler.getHandler(D.cell),null!=Ha&&(ra.x-=
-Ha.horizontalOffset/2,ra.y-=Ha.verticalOffset/2,ra.width+=Ha.horizontalOffset,ra.height+=Ha.verticalOffset,null!=Ha.rotationShape&&null!=Ha.rotationShape.node&&"hidden"!=Ha.rotationShape.node.style.visibility&&"none"!=Ha.rotationShape.node.style.display&&null!=Ha.rotationShape.boundingBox&&ra.add(Ha.rotationShape.boundingBox)),va.add(k(oa,ua,new mxRectangle(D.getCenterX()-this.triangleUp.width/2,ra.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),P)),va.add(k(oa,ua,new mxRectangle(ra.x+
-ra.width,D.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),Z)),va.add(k(oa,ua,new mxRectangle(D.getCenterX()-this.triangleDown.width/2,ra.y+ra.height,this.triangleDown.width,this.triangleDown.height),T)),va.add(k(oa,ua,new mxRectangle(ra.x-this.triangleLeft.width,D.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),U));null!=va&&va.grow(10)}I=mxConstants.DIRECTION_NORTH;L==Z?I=mxConstants.DIRECTION_EAST:L==T||L==qa?
-I=mxConstants.DIRECTION_SOUTH:L==U&&(I=mxConstants.DIRECTION_WEST);null!=Q&&L==fa&&(za=Q);ra=(null==r||aa.isCellConnectable(d[r]))&&(aa.model.isEdge(Ga)&&null!=r||aa.model.isVertex(Ga)&&aa.isCellConnectable(Ga));if(null!=D&&5E3<=ka||D!=za&&(null==va||!mxUtils.contains(va,oa,ua)||500<ka&&null==L&&ra))if(R=!1,D=5E3>ka&&ka>this.dropTargetDelay||aa.model.isEdge(Ga)?za:null,null!=D&&ra){va=[ba,qa,P,Z,T,U];for(ra=0;ra<va.length;ra++)null!=va[ra].parentNode&&va[ra].parentNode.removeChild(va[ra]);aa.model.isEdge(Ga)?
-(Ha=za.absolutePoints,null!=Ha&&(ra=Ha[0],Ha=Ha[Ha.length-1],va=aa.tolerance,new mxRectangle(oa-va,ua-va,2*va,2*va),ba.style.left=Math.floor(ra.x-this.roundDrop.width/2)+"px",ba.style.top=Math.floor(ra.y-this.roundDrop.height/2)+"px",qa.style.left=Math.floor(Ha.x-this.roundDrop.width/2)+"px",qa.style.top=Math.floor(Ha.y-this.roundDrop.height/2)+"px",null==aa.model.getTerminal(Ga,!0)&&aa.container.appendChild(ba),null==aa.model.getTerminal(Ga,!1)&&aa.container.appendChild(qa))):(ra=mxRectangle.fromRectangle(za),
-null!=za.shape&&null!=za.shape.boundingBox&&(ra=mxRectangle.fromRectangle(za.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Ha=this.graph.selectionCellsHandler.getHandler(za.cell),null!=Ha&&(ra.x-=Ha.horizontalOffset/2,ra.y-=Ha.verticalOffset/2,ra.width+=Ha.horizontalOffset,ra.height+=Ha.verticalOffset,null!=Ha.rotationShape&&null!=Ha.rotationShape.node&&"hidden"!=Ha.rotationShape.node.style.visibility&&"none"!=Ha.rotationShape.node.style.display&&null!=
-Ha.rotationShape.boundingBox&&ra.add(Ha.rotationShape.boundingBox)),P.style.left=Math.floor(za.getCenterX()-this.triangleUp.width/2)+"px",P.style.top=Math.floor(ra.y-this.triangleUp.height)+"px",Z.style.left=Math.floor(ra.x+ra.width)+"px",Z.style.top=Math.floor(za.getCenterY()-this.triangleRight.height/2)+"px",T.style.left=P.style.left,T.style.top=Math.floor(ra.y+ra.height)+"px",U.style.left=Math.floor(ra.x-this.triangleLeft.width)+"px",U.style.top=Z.style.top,"eastwest"!=za.style.portConstraint&&
-(aa.container.appendChild(P),aa.container.appendChild(T)),aa.container.appendChild(Z),aa.container.appendChild(U));null!=za&&(O=aa.selectionCellsHandler.getHandler(za.cell),null!=O&&null!=O.setHandlesVisible&&O.setHandlesVisible(!1));R=!0}else for(va=[ba,qa,P,Z,T,U],ra=0;ra<va.length;ra++)null!=va[ra].parentNode&&va[ra].parentNode.removeChild(va[ra]);R||null==O||O.setHandlesVisible(!0);Ga=mxEvent.isAltDown(Ja)&&!mxEvent.isShiftDown(Ja)||null!=Q&&L==fa?null:mxDragSource.prototype.getDropTarget.apply(this,
-arguments);va=aa.getModel();if(null!=Ga&&(null!=L||!aa.isSplitTarget(Ga,d,Ja))){for(;null!=Ga&&!aa.isValidDropTarget(Ga,d,Ja)&&va.isVertex(va.getParent(Ga));)Ga=va.getParent(Ga);null!=Ga&&(aa.view.currentRoot==Ga||!aa.isValidRoot(Ga)&&0==aa.getModel().getChildCount(Ga)||aa.isCellLocked(Ga)||va.isEdge(Ga)||!aa.isValidDropTarget(Ga,d,Ja))&&(Ga=null)}aa.isCellLocked(Ga)&&(Ga=null);return Ga});F.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var aa=[ba,qa,fa,P,Z,T,U],oa=
-0;oa<aa.length;oa++)null!=aa[oa].parentNode&&aa[oa].parentNode.removeChild(aa[oa]);null!=D&&null!=O&&O.reset();L=ha=Q=D=O=null};return F};
+Sidebar.prototype.createDragSource=function(a,b,f,d,g){function e(aa,oa){var sa=mxUtils.createImage(aa.src);sa.style.width=aa.width+"px";sa.style.height=aa.height+"px";null!=oa&&sa.setAttribute("title",oa);mxUtils.setOpacity(sa,aa==this.refreshTarget?30:20);sa.style.position="absolute";sa.style.cursor="crosshair";return sa}function k(aa,oa,sa,Ka){null!=Ka.parentNode&&(mxUtils.contains(sa,aa,oa)?(mxUtils.setOpacity(Ka,100),S=Ka):mxUtils.setOpacity(Ka,Ka==ia?30:20));return sa}for(var n=this.editorUi,
+u=n.editor.graph,m=null,r=null,x=this,B=0;B<d.length&&(null==r&&u.model.isVertex(d[B])?r=B:null==m&&u.model.isEdge(d[B])&&null==u.model.getTerminal(d[B],!0)&&(m=B),null==r||null==m);B++);var C=this.isDropStyleEnabled(d,r),G=mxUtils.makeDraggable(a,u,mxUtils.bind(this,function(aa,oa,sa,Ka,Ha){null!=this.updateThread&&window.clearTimeout(this.updateThread);if(null!=d&&null!=Q&&S==ia){var ua=aa.isCellSelected(Q.cell)?aa.getSelectionCells():[Q.cell];ua=this.updateShapes(aa.model.isEdge(Q.cell)?d[0]:d[r],
+ua);aa.setSelectionCells(ua)}else null!=d&&null!=S&&null!=D&&S!=ia?(ua=aa.model.isEdge(D.cell)||null==m?r:m,aa.setSelectionCells(this.dropAndConnect(D.cell,d,O,ua,oa))):b.apply(this,arguments);null!=this.editorUi.hoverIcons&&this.editorUi.hoverIcons.update(aa.view.getState(aa.getSelectionCell()))}),f,0,0,u.autoscroll,!0,!0);u.addListener(mxEvent.ESCAPE,function(aa,oa){G.isActive()&&G.reset()});var J=G.mouseDown;G.mouseDown=function(aa){mxEvent.isPopupTrigger(aa)||mxEvent.isMultiTouchEvent(aa)||u.isCellLocked(u.getDefaultParent())||
+(u.stopEditing(),J.apply(this,arguments))};var D=null,N=null,Q=null,R=!1,P=e(this.triangleUp,mxResources.get("connect")),Z=e(this.triangleRight,mxResources.get("connect")),U=e(this.triangleDown,mxResources.get("connect")),V=e(this.triangleLeft,mxResources.get("connect")),ia=e(this.refreshTarget,mxResources.get("replace")),ha=null,ba=e(this.roundDrop),qa=e(this.roundDrop),O=mxConstants.DIRECTION_NORTH,S=null,F=G.createPreviewElement;G.createPreviewElement=function(aa){var oa=F.apply(this,arguments);
+mxClient.IS_SVG&&(oa.style.pointerEvents="none");this.previewElementWidth=oa.style.width;this.previewElementHeight=oa.style.height;return oa};var L=G.dragEnter;G.dragEnter=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("none");L.apply(this,arguments)};var T=G.dragExit;G.dragExit=function(aa,oa){null!=n.hoverIcons&&n.hoverIcons.setDisplay("");T.apply(this,arguments)};G.dragOver=function(aa,oa){mxDragSource.prototype.dragOver.apply(this,arguments);null!=this.currentGuide&&null!=S&&this.currentGuide.hide();
+if(null!=this.previewElement){var sa=aa.view;if(null!=Q&&S==ia)this.previewElement.style.display=aa.model.isEdge(Q.cell)?"none":"",this.previewElement.style.left=Q.x+"px",this.previewElement.style.top=Q.y+"px",this.previewElement.style.width=Q.width+"px",this.previewElement.style.height=Q.height+"px";else if(null!=D&&null!=S){null!=G.currentHighlight&&null!=G.currentHighlight.state&&G.currentHighlight.hide();var Ka=aa.model.isEdge(D.cell)||null==m?r:m,Ha=x.getDropAndConnectGeometry(D.cell,d[Ka],O,
+d),ua=aa.model.isEdge(D.cell)?null:aa.getCellGeometry(D.cell),Ca=aa.getCellGeometry(d[Ka]),ra=aa.model.getParent(D.cell),Da=sa.translate.x*sa.scale,Ua=sa.translate.y*sa.scale;null!=ua&&!ua.relative&&aa.model.isVertex(ra)&&ra!=sa.currentRoot&&(Ua=sa.getState(ra),Da=Ua.x,Ua=Ua.y);ua=Ca.x;Ca=Ca.y;aa.model.isEdge(d[Ka])&&(Ca=ua=0);this.previewElement.style.left=(Ha.x-ua)*sa.scale+Da+"px";this.previewElement.style.top=(Ha.y-Ca)*sa.scale+Ua+"px";1==d.length&&(this.previewElement.style.width=Ha.width*sa.scale+
+"px",this.previewElement.style.height=Ha.height*sa.scale+"px");this.previewElement.style.display=""}else null!=G.currentHighlight.state&&aa.model.isEdge(G.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-g.width*sa.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-g.height*sa.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,
+this.previewElement.style.display="")}};var ca=(new Date).getTime(),fa=0,wa=null,W=this.editorUi.editor.graph.getCellStyle(d[0]);G.getDropTarget=mxUtils.bind(this,function(aa,oa,sa,Ka){var Ha=mxEvent.isAltDown(Ka)||null==d?null:aa.getCellAt(oa,sa,null,null,null,function(Ua,db,Ta){return aa.isContainer(Ua.cell)});if(null!=Ha&&!this.graph.isCellConnectable(Ha)&&!this.graph.model.isEdge(Ha)){var ua=this.graph.getModel().getParent(Ha);this.graph.getModel().isVertex(ua)&&this.graph.isCellConnectable(ua)&&
+(Ha=ua)}aa.isCellLocked(Ha)&&(Ha=null);var Ca=aa.view.getState(Ha);ua=S=null;wa!=Ca?(ca=(new Date).getTime(),fa=0,wa=Ca,null!=this.updateThread&&window.clearTimeout(this.updateThread),null!=Ca&&(this.updateThread=window.setTimeout(function(){null==S&&(wa=Ca,G.getDropTarget(aa,oa,sa,Ka))},this.dropTargetDelay+10))):fa=(new Date).getTime()-ca;if(C&&2500>fa&&null!=Ca&&!mxEvent.isShiftDown(Ka)&&(mxUtils.getValue(Ca.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(W,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(Ca.style,
+mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(Ca.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(Ca.style,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(W,mxConstants.STYLE_SHAPE)||1500<fa||aa.model.isEdge(Ca.cell))&&fa>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(Ca)&&(aa.model.isVertex(Ca.cell)&&null!=r||aa.model.isEdge(Ca.cell)&&aa.model.isEdge(d[0]))){if(aa.isCellEditable(Ca.cell)){Q=
+Ca;var ra=aa.model.isEdge(Ca.cell)?aa.view.getPoint(Ca):new mxPoint(Ca.getCenterX(),Ca.getCenterY());ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height);ia.style.left=Math.floor(ra.x)+"px";ia.style.top=Math.floor(ra.y)+"px";null==ha&&(aa.container.appendChild(ia),ha=ia.parentNode);k(oa,sa,ra,ia)}}else null==Q||!mxUtils.contains(Q,oa,sa)||1500<fa&&!mxEvent.isShiftDown(Ka)?(Q=null,null!=ha&&(ia.parentNode.removeChild(ia),
+ha=null)):null!=Q&&null!=ha&&(ra=aa.model.isEdge(Q.cell)?aa.view.getPoint(Q):new mxPoint(Q.getCenterX(),Q.getCenterY()),ra=new mxRectangle(ra.x-this.refreshTarget.width/2,ra.y-this.refreshTarget.height/2,this.refreshTarget.width,this.refreshTarget.height),k(oa,sa,ra,ia));if(R&&null!=D&&!mxEvent.isAltDown(Ka)&&null==S){ua=mxRectangle.fromRectangle(D);if(aa.model.isEdge(D.cell)){var Da=D.absolutePoints;null!=ba.parentNode&&(ra=Da[0],ua.add(k(oa,sa,new mxRectangle(ra.x-this.roundDrop.width/2,ra.y-this.roundDrop.height/
+2,this.roundDrop.width,this.roundDrop.height),ba)));null!=qa.parentNode&&(Da=Da[Da.length-1],ua.add(k(oa,sa,new mxRectangle(Da.x-this.roundDrop.width/2,Da.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),qa)))}else ra=mxRectangle.fromRectangle(D),null!=D.shape&&null!=D.shape.boundingBox&&(ra=mxRectangle.fromRectangle(D.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Da=this.graph.selectionCellsHandler.getHandler(D.cell),null!=Da&&(ra.x-=
+Da.horizontalOffset/2,ra.y-=Da.verticalOffset/2,ra.width+=Da.horizontalOffset,ra.height+=Da.verticalOffset,null!=Da.rotationShape&&null!=Da.rotationShape.node&&"hidden"!=Da.rotationShape.node.style.visibility&&"none"!=Da.rotationShape.node.style.display&&null!=Da.rotationShape.boundingBox&&ra.add(Da.rotationShape.boundingBox)),ua.add(k(oa,sa,new mxRectangle(D.getCenterX()-this.triangleUp.width/2,ra.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),P)),ua.add(k(oa,sa,new mxRectangle(ra.x+
+ra.width,D.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),Z)),ua.add(k(oa,sa,new mxRectangle(D.getCenterX()-this.triangleDown.width/2,ra.y+ra.height,this.triangleDown.width,this.triangleDown.height),U)),ua.add(k(oa,sa,new mxRectangle(ra.x-this.triangleLeft.width,D.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),V));null!=ua&&ua.grow(10)}O=mxConstants.DIRECTION_NORTH;S==Z?O=mxConstants.DIRECTION_EAST:S==U||S==qa?
+O=mxConstants.DIRECTION_SOUTH:S==V&&(O=mxConstants.DIRECTION_WEST);null!=Q&&S==ia&&(Ca=Q);ra=(null==r||aa.isCellConnectable(d[r]))&&(aa.model.isEdge(Ha)&&null!=r||aa.model.isVertex(Ha)&&aa.isCellConnectable(Ha));if(null!=D&&5E3<=fa||D!=Ca&&(null==ua||!mxUtils.contains(ua,oa,sa)||500<fa&&null==S&&ra))if(R=!1,D=5E3>fa&&fa>this.dropTargetDelay||aa.model.isEdge(Ha)?Ca:null,null!=D&&ra){ua=[ba,qa,P,Z,U,V];for(ra=0;ra<ua.length;ra++)null!=ua[ra].parentNode&&ua[ra].parentNode.removeChild(ua[ra]);aa.model.isEdge(Ha)?
+(Da=Ca.absolutePoints,null!=Da&&(ra=Da[0],Da=Da[Da.length-1],ua=aa.tolerance,new mxRectangle(oa-ua,sa-ua,2*ua,2*ua),ba.style.left=Math.floor(ra.x-this.roundDrop.width/2)+"px",ba.style.top=Math.floor(ra.y-this.roundDrop.height/2)+"px",qa.style.left=Math.floor(Da.x-this.roundDrop.width/2)+"px",qa.style.top=Math.floor(Da.y-this.roundDrop.height/2)+"px",null==aa.model.getTerminal(Ha,!0)&&aa.container.appendChild(ba),null==aa.model.getTerminal(Ha,!1)&&aa.container.appendChild(qa))):(ra=mxRectangle.fromRectangle(Ca),
+null!=Ca.shape&&null!=Ca.shape.boundingBox&&(ra=mxRectangle.fromRectangle(Ca.shape.boundingBox)),ra.grow(this.graph.tolerance),ra.grow(HoverIcons.prototype.arrowSpacing),Da=this.graph.selectionCellsHandler.getHandler(Ca.cell),null!=Da&&(ra.x-=Da.horizontalOffset/2,ra.y-=Da.verticalOffset/2,ra.width+=Da.horizontalOffset,ra.height+=Da.verticalOffset,null!=Da.rotationShape&&null!=Da.rotationShape.node&&"hidden"!=Da.rotationShape.node.style.visibility&&"none"!=Da.rotationShape.node.style.display&&null!=
+Da.rotationShape.boundingBox&&ra.add(Da.rotationShape.boundingBox)),P.style.left=Math.floor(Ca.getCenterX()-this.triangleUp.width/2)+"px",P.style.top=Math.floor(ra.y-this.triangleUp.height)+"px",Z.style.left=Math.floor(ra.x+ra.width)+"px",Z.style.top=Math.floor(Ca.getCenterY()-this.triangleRight.height/2)+"px",U.style.left=P.style.left,U.style.top=Math.floor(ra.y+ra.height)+"px",V.style.left=Math.floor(ra.x-this.triangleLeft.width)+"px",V.style.top=Z.style.top,"eastwest"!=Ca.style.portConstraint&&
+(aa.container.appendChild(P),aa.container.appendChild(U)),aa.container.appendChild(Z),aa.container.appendChild(V));null!=Ca&&(N=aa.selectionCellsHandler.getHandler(Ca.cell),null!=N&&null!=N.setHandlesVisible&&N.setHandlesVisible(!1));R=!0}else for(ua=[ba,qa,P,Z,U,V],ra=0;ra<ua.length;ra++)null!=ua[ra].parentNode&&ua[ra].parentNode.removeChild(ua[ra]);R||null==N||N.setHandlesVisible(!0);Ha=mxEvent.isAltDown(Ka)&&!mxEvent.isShiftDown(Ka)||null!=Q&&S==ia?null:mxDragSource.prototype.getDropTarget.apply(this,
+arguments);ua=aa.getModel();if(null!=Ha&&(null!=S||!aa.isSplitTarget(Ha,d,Ka))){for(;null!=Ha&&!aa.isValidDropTarget(Ha,d,Ka)&&ua.isVertex(ua.getParent(Ha));)Ha=ua.getParent(Ha);null!=Ha&&(aa.view.currentRoot==Ha||!aa.isValidRoot(Ha)&&0==aa.getModel().getChildCount(Ha)||aa.isCellLocked(Ha)||ua.isEdge(Ha)||!aa.isValidDropTarget(Ha,d,Ka))&&(Ha=null)}aa.isCellLocked(Ha)&&(Ha=null);return Ha});G.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,arguments);for(var aa=[ba,qa,ia,P,Z,U,V],oa=
+0;oa<aa.length;oa++)null!=aa[oa].parentNode&&aa[oa].parentNode.removeChild(aa[oa]);null!=D&&null!=N&&N.reset();S=ha=Q=D=N=null};return G};
Sidebar.prototype.itemClicked=function(a,b,f,d){d=this.editorUi.editor.graph;d.container.focus();if(mxEvent.isAltDown(f)&&1==d.getSelectionCount()&&d.model.isVertex(d.getSelectionCell())){b=null;for(var g=0;g<a.length&&null==b;g++)d.model.isVertex(a[g])&&(b=g);null!=b&&(d.setSelectionCells(this.dropAndConnect(d.getSelectionCell(),a,mxEvent.isMetaDown(f)||mxEvent.isControlDown(f)?mxEvent.isShiftDown(f)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(f)?mxConstants.DIRECTION_EAST:
mxConstants.DIRECTION_SOUTH,b,f)),d.scrollCellToVisible(d.getSelectionCell()))}else mxEvent.isShiftDown(f)&&!d.isSelectionEmpty()?(f=d.getEditableCells(d.getSelectionCells()),this.updateShapes(a[0],f),d.scrollCellToVisible(f)):(a=mxEvent.isAltDown(f)?d.getFreeInsertPoint():d.getCenterInsertPoint(d.getBoundingBoxFromGeometry(a,!0)),b.drop(d,f,null,a.x,a.y,!0))};
Sidebar.prototype.addClickHandler=function(a,b,f){var d=b.mouseDown,g=b.mouseMove,e=b.mouseUp,k=this.editorUi.editor.graph.tolerance,n=null,u=this;b.mouseDown=function(m){d.apply(this,arguments);n=new mxPoint(mxEvent.getClientX(m),mxEvent.getClientY(m));null!=this.dragElement&&(this.dragElement.style.display="none",mxUtils.setOpacity(a,50))};b.mouseMove=function(m){null!=this.dragElement&&"none"==this.dragElement.style.display&&null!=n&&(Math.abs(n.x-mxEvent.getClientX(m))>k||Math.abs(n.y-mxEvent.getClientY(m))>
@@ -2819,10 +2819,10 @@ Sidebar.prototype.addPalette=function(a,b,f,d){b=this.createTitle(b);this.contai
Sidebar.prototype.addFoldingHandler=function(a,b,f){var d=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==b.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";mxEvent.addListener(a,"click",mxUtils.bind(this,function(g){if("none"==b.style.display){if(d)b.style.display="block";else if(d=!0,null!=f){a.style.cursor="wait";var e=a.innerHTML;a.innerHTML=mxResources.get("loading")+
"...";window.setTimeout(function(){b.style.display="block";a.style.cursor="";a.innerHTML=e;var k=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject;f(b,a);mxClient.NO_FO=k},mxClient.IS_FF?20:0)}else b.style.display="block";a.style.backgroundImage="url('"+this.expandedImage+"')"}else a.style.backgroundImage="url('"+this.collapsedImage+"')",b.style.display="none";mxEvent.consume(g)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(g){g.preventDefault()}))};
Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){this.palettes[a]=null;for(a=0;a<b.length;a++)this.container.removeChild(b[a]);return!0}return!1};
-Sidebar.prototype.addImagePalette=function(a,b,f,d,g,e,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var A=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=A?A:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+d,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=e?e[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,b,!1,n)};
+Sidebar.prototype.addImagePalette=function(a,b,f,d,g,e,k){for(var n=[],u=0;u<g.length;u++)mxUtils.bind(this,function(m,r,x){if(null==x){x=m.lastIndexOf("/");var B=m.lastIndexOf(".");x=m.substring(0<=x?x+1:0,0<=B?B:m.length).replace(/[-_]/g," ")}n.push(this.createVertexTemplateEntry("image;html=1;image="+f+m+d,this.defaultImageWidth,this.defaultImageHeight,"",r,null!=r,null,this.filterTags(x)))})(g[u],null!=e?e[u]:null,null!=k?k[g[u]]:null);this.addPaletteFunctions(a,b,!1,n)};
Sidebar.prototype.getTagsForStencil=function(a,b,f){a=a.split(".");for(var d=1;d<a.length;d++)a[d]=a[d].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=f&&a.push(f);return a.slice(1,a.length)};
-Sidebar.prototype.addStencilPalette=function(a,b,f,d,g,e,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,A,C,F,K){if(null==g||0>mxUtils.indexOf(g,A)){C=this.getTagsForStencil(x,A);var D=null!=n?n[A]:null;null!=D&&C.push(D);r.push(this.createVertexTemplateEntry("shape="+x+A.toLowerCase()+d,Math.round(F*k),Math.round(K*k),"",A.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
-!0,!0);this.addPaletteFunctions(a,b,!1,r)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(x){null==d&&(d="");null!=e&&e.call(this,x);if(null!=u)for(var A=0;A<u.length;A++)u[A](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,F,K,D,O){(null==g||0>mxUtils.indexOf(g,F))&&x.appendChild(this.createVertexTemplate("shape="+C+F.toLowerCase()+d,Math.round(D*k),Math.round(O*k),"",F.replace(/_/g," "),!0))}),!0)}))};
+Sidebar.prototype.addStencilPalette=function(a,b,f,d,g,e,k,n,u,m){k=null!=k?k:1;if(this.addStencilsToIndex){var r=[];if(null!=u)for(m=0;m<u.length;m++)r.push(u[m]);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(x,B,C,G,J){if(null==g||0>mxUtils.indexOf(g,B)){C=this.getTagsForStencil(x,B);var D=null!=n?n[B]:null;null!=D&&C.push(D);r.push(this.createVertexTemplateEntry("shape="+x+B.toLowerCase()+d,Math.round(G*k),Math.round(J*k),"",B.replace(/_/g," "),null,null,this.filterTags(C.join(" "))))}}),
+!0,!0);this.addPaletteFunctions(a,b,!1,r)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(x){null==d&&(d="");null!=e&&e.call(this,x);if(null!=u)for(var B=0;B<u.length;B++)u[B](x);mxStencilRegistry.loadStencilSet(f,mxUtils.bind(this,function(C,G,J,D,N){(null==g||0>mxUtils.indexOf(g,G))&&x.appendChild(this.createVertexTemplate("shape="+C+G.toLowerCase()+d,Math.round(D*k),Math.round(N*k),"",G.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)};(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(f){for(var d=0;d<a.length;d++)f=f.replace(new RegExp("&"+a[d][0]+";","g"),"&#"+a[d][1]+";");return b(f)}})();
Date.prototype.toISOString||function(){function a(b){b=String(b);1===b.length&&(b="0"+b);return b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
@@ -2833,35 +2833,35 @@ mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGr
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null};
mxImageShape.prototype.getImageDataUri=function(){var a=this.image;if("data:image/svg+xml;base64,"==a.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=a)this.clippedSvg=Graph.clipSvgDataUri(a,!0),this.clippedImage=a;a=this.clippedSvg}return a};
-Graph=function(a,b,f,d,g,e){mxGraph.call(this,a,b,f,d);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=e?e:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(I){I=this.getCurrentCellStyle(I);
-return null!=I?"1"==I.html||"wrap"==I[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,n=null,u=null,m=null,r=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,L){if("mouseDown"==L.getProperty("eventName")&&this.isEnabled()){I=L.getProperty("event");var H=I.getState();L=this.view.scale;if(!mxEvent.isAltDown(I.getEvent())&&null!=H)if(this.model.isEdge(H.cell))if(k=new mxPoint(I.getGraphX(),I.getGraphY()),r=this.isCellSelected(H.cell),u=H,n=I,null!=H.text&&null!=
-H.text.boundingBox&&mxUtils.contains(H.text.boundingBox,I.getGraphX(),I.getGraphY()))m=mxEvent.LABEL_HANDLE;else{var S=this.selectionCellsHandler.getHandler(H.cell);null!=S&&null!=S.bends&&0<S.bends.length&&(m=S.getHandleForEvent(I))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(I.getEvent())&&(S=this.selectionCellsHandler.getHandler(H.cell),null==S||null==S.getHandleForEvent(I))){var V=new mxRectangle(I.getGraphX()-1,I.getGraphY()-1),ea=mxEvent.isTouchEvent(I.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2;S=ea+2;V.grow(ea);if(this.isTableCell(H.cell)&&!this.isCellSelected(H.cell)&&!(mxUtils.contains(H,I.getGraphX()-S,I.getGraphY()-S)&&mxUtils.contains(H,I.getGraphX()-S,I.getGraphY()+S)&&mxUtils.contains(H,I.getGraphX()+S,I.getGraphY()+S)&&mxUtils.contains(H,I.getGraphX()+S,I.getGraphY()-S))){var ka=this.model.getParent(H.cell);S=this.model.getParent(ka);if(!this.isCellSelected(S)){ea*=L;var wa=2*ea;if(this.model.getChildAt(S,0)!=ka&&mxUtils.intersects(V,
-new mxRectangle(H.x,H.y-ea,H.width,wa))||this.model.getChildAt(ka,0)!=H.cell&&mxUtils.intersects(V,new mxRectangle(H.x-ea,H.y,wa,H.height))||mxUtils.intersects(V,new mxRectangle(H.x,H.y+H.height-ea,H.width,wa))||mxUtils.intersects(V,new mxRectangle(H.x+H.width-ea,H.y,wa,H.height)))ka=this.selectionCellsHandler.isHandled(S),this.selectCellForEvent(S,I.getEvent()),S=this.selectionCellsHandler.getHandler(S),null!=S&&(ea=S.getHandleForEvent(I),null!=ea&&(S.start(I.getGraphX(),I.getGraphY(),ea),S.blockDelayedSelection=
-!ka,I.consume()))}}for(;!I.isConsumed()&&null!=H&&(this.isTableCell(H.cell)||this.isTableRow(H.cell)||this.isTable(H.cell));)this.isSwimlane(H.cell)&&(S=this.getActualStartSize(H.cell),(0<S.x||0<S.width)&&mxUtils.intersects(V,new mxRectangle(H.x+(S.x-S.width-1)*L+(0==S.x?H.width:0),H.y,1,H.height))||(0<S.y||0<S.height)&&mxUtils.intersects(V,new mxRectangle(H.x,H.y+(S.y-S.height-1)*L+(0==S.y?H.height:0),H.width,1)))&&(this.selectCellForEvent(H.cell,I.getEvent()),S=this.selectionCellsHandler.getHandler(H.cell),
-null!=S&&(ea=mxEvent.CUSTOM_HANDLE-S.customHandles.length+1,S.start(I.getGraphX(),I.getGraphY(),ea),I.consume())),H=this.view.getState(this.model.getParent(H.cell))}}}));this.addMouseListener({mouseDown:function(I,L){},mouseMove:mxUtils.bind(this,function(I,L){I=this.selectionCellsHandler.handlers.map;for(var H in I)if(null!=I[H].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(L.getEvent())){var S=this.tolerance;if(null!=k&&null!=u&&null!=n){if(H=u,Math.abs(k.x-
-L.getGraphX())>S||Math.abs(k.y-L.getGraphY())>S){var V=this.selectionCellsHandler.getHandler(H.cell);null==V&&this.model.isEdge(H.cell)&&(V=this.createHandler(H));if(null!=V&&null!=V.bends&&0<V.bends.length){I=V.getHandleForEvent(n);var ea=this.view.getEdgeStyle(H);S=ea==mxEdgeStyle.EntityRelation;r||m!=mxEvent.LABEL_HANDLE||(I=m);if(S&&0!=I&&I!=V.bends.length-1&&I!=mxEvent.LABEL_HANDLE)!S||null==H.visibleSourceState&&null==H.visibleTargetState||(this.graphHandler.reset(),L.consume());else if(I==
-mxEvent.LABEL_HANDLE||0==I||null!=H.visibleSourceState||I==V.bends.length-1||null!=H.visibleTargetState)S||I==mxEvent.LABEL_HANDLE||(S=H.absolutePoints,null!=S&&(null==ea&&null==I||ea==mxEdgeStyle.OrthConnector)&&(I=m,null==I&&(I=new mxRectangle(k.x,k.y),I.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(I,S[0].x,S[0].y)?I=0:mxUtils.contains(I,S[S.length-1].x,S[S.length-1].y)?I=V.bends.length-1:null!=ea&&(2==S.length||3==S.length&&(0==Math.round(S[0].x-S[1].x)&&0==Math.round(S[1].x-
-S[2].x)||0==Math.round(S[0].y-S[1].y)&&0==Math.round(S[1].y-S[2].y)))?I=2:(I=mxUtils.findNearestSegment(H,k.x,k.y),I=null==ea?mxEvent.VIRTUAL_HANDLE-I:I+1))),null==I&&(I=mxEvent.VIRTUAL_HANDLE)),V.start(L.getGraphX(),L.getGraphX(),I),L.consume(),this.graphHandler.reset()}null!=V&&(this.selectionCellsHandler.isHandlerActive(V)?this.isCellSelected(H.cell)||(this.selectionCellsHandler.handlers.put(H.cell,V),this.selectCellForEvent(H.cell,L.getEvent())):this.isCellSelected(H.cell)||V.destroy());r=!1;
-k=n=u=m=null}}else if(H=L.getState(),null!=H&&this.isCellEditable(H.cell)){V=null;if(this.model.isEdge(H.cell)){if(I=new mxRectangle(L.getGraphX(),L.getGraphY()),I.grow(mxEdgeHandler.prototype.handleImage.width/2),S=H.absolutePoints,null!=S)if(null!=H.text&&null!=H.text.boundingBox&&mxUtils.contains(H.text.boundingBox,L.getGraphX(),L.getGraphY()))V="move";else if(mxUtils.contains(I,S[0].x,S[0].y)||mxUtils.contains(I,S[S.length-1].x,S[S.length-1].y))V="pointer";else if(null!=H.visibleSourceState||
-null!=H.visibleTargetState)I=this.view.getEdgeStyle(H),V="crosshair",I!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(H)&&(L=mxUtils.findNearestSegment(H,L.getGraphX(),L.getGraphY()),L<S.length-1&&0<=L&&(V=0==Math.round(S[L].x-S[L+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(L.getEvent())){S=mxShape.prototype.svgStrokeTolerance/2;I=new mxRectangle(L.getGraphX(),L.getGraphY());I.grow(S);if(this.isTableCell(H.cell)&&(L=this.model.getParent(H.cell),S=this.model.getParent(L),!this.isCellSelected(S)))if(mxUtils.intersects(I,
-new mxRectangle(H.x,H.y-2,H.width,4))&&this.model.getChildAt(S,0)!=L||mxUtils.intersects(I,new mxRectangle(H.x,H.y+H.height-2,H.width,4)))V="row-resize";else if(mxUtils.intersects(I,new mxRectangle(H.x-2,H.y,4,H.height))&&this.model.getChildAt(L,0)!=H.cell||mxUtils.intersects(I,new mxRectangle(H.x+H.width-2,H.y,4,H.height)))V="col-resize";for(L=H;null==V&&null!=L&&(this.isTableCell(L.cell)||this.isTableRow(L.cell)||this.isTable(L.cell));)this.isSwimlane(L.cell)&&(S=this.getActualStartSize(L.cell),
-ea=this.view.scale,(0<S.x||0<S.width)&&mxUtils.intersects(I,new mxRectangle(L.x+(S.x-S.width-1)*ea+(0==S.x?L.width*ea:0),L.y,1,L.height))?V="col-resize":(0<S.y||0<S.height)&&mxUtils.intersects(I,new mxRectangle(L.x,L.y+(S.y-S.height-1)*ea+(0==S.y?L.height:0),L.width,1))&&(V="row-resize")),L=this.view.getState(this.model.getParent(L.cell))}null!=V&&H.setCursor(V)}}}),mouseUp:mxUtils.bind(this,function(I,L){m=k=n=u=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(I){var L=
-mxCellRenderer.prototype.getLabelValue.apply(this,arguments);I.view.graph.isHtmlLabel(I.cell)&&(L=1!=I.style.html?mxUtils.htmlEntities(L,!1):I.view.graph.sanitizeHtml(L));return L};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(I,L){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var x=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var I=x.apply(this,arguments);if(this.graph.pageVisible){var L=[],H=this.graph.pageFormat,S=this.graph.pageScale,V=H.width*S;H=H.height*S;S=this.graph.view.translate;for(var ea=this.graph.view.scale,ka=
-this.graph.getPageLayout(),wa=0;wa<ka.width;wa++)L.push(new mxRectangle(((ka.x+wa)*V+S.x)*ea,(ka.y*H+S.y)*ea,V*ea,H*ea));for(wa=1;wa<ka.height;wa++)L.push(new mxRectangle((ka.x*V+S.x)*ea,((ka.y+wa)*H+S.y)*ea,V*ea,H*ea));I=L.concat(I)}return I};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(I,L){return null==I.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(I){this.previewColor="#000000"==this.graph.background?
-"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var A=this.graphHandler.getCells;this.graphHandler.getCells=function(I){for(var L=A.apply(this,arguments),H=new mxDictionary,S=[],V=0;V<L.length;V++){var ea=this.graph.isTableCell(I)&&this.graph.isTableCell(L[V])&&this.graph.isCellSelected(L[V])?this.graph.model.getParent(L[V]):this.graph.isTableRow(I)&&this.graph.isTableRow(L[V])&&this.graph.isCellSelected(L[V])?L[V]:this.graph.getCompositeParent(L[V]);
-null==ea||H.get(ea)||(H.put(ea,!0),S.push(ea))}return S};var C=this.graphHandler.start;this.graphHandler.start=function(I,L,H,S){var V=!1;this.graph.isTableCell(I)&&(this.graph.isCellSelected(I)?V=!0:I=this.graph.model.getParent(I));V||this.graph.isTableRow(I)&&this.graph.isCellSelected(I)||(I=this.graph.getCompositeParent(I));C.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(I,L){L=this.graph.getCompositeParent(L);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
-arguments)};var F=new mxRubberband(this);this.getRubberband=function(){return F};var K=(new Date).getTime(),D=0,O=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var I=this.currentState;O.apply(this,arguments);I!=this.currentState?(K=(new Date).getTime(),D=0):D=(new Date).getTime()-K};var Q=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(I){return mxEvent.isShiftDown(I.getEvent())&&mxEvent.isAltDown(I.getEvent())?!1:null!=
-this.currentState&&I.getState()==this.currentState&&2E3<D||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&Q.apply(this,arguments)};var R=this.isToggleEvent;this.isToggleEvent=function(I){return R.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(I)};var P=F.isForceRubberbandEvent;F.isForceRubberbandEvent=function(I){return P.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(I.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&
-mxClient.IS_FF&&mxClient.IS_WIN&&null==I.getState()&&mxEvent.isTouchEvent(I.getEvent())};var Z=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(Z=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=Z)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(I){return mxEvent.isMouseEvent(I.getEvent())};
-var T=this.click;this.click=function(I){var L=null==I.state&&null!=I.sourceState&&this.isCellLocked(I.sourceState.cell);if(this.isEnabled()&&!L||I.isConsumed())return T.apply(this,arguments);var H=L?I.sourceState.cell:I.getCell();null!=H&&(H=this.getClickableLinkForCell(H),null!=H&&(this.isCustomLink(H)?this.customLinkClicked(H):this.openLink(H)));this.isEnabled()&&L&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(I){return I.sourceState};var U=this.tooltipHandler.show;this.tooltipHandler.show=
-function(){U.apply(this,arguments);if(null!=this.div)for(var I=this.div.getElementsByTagName("a"),L=0;L<I.length;L++)null!=I[L].getAttribute("href")&&null==I[L].getAttribute("target")&&I[L].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(I){return I.sourceState};this.getCursorForMouseEvent=function(I){var L=null==I.state&&null!=I.sourceState&&this.isCellLocked(I.sourceState.cell);return this.getCursorForCell(L?I.sourceState.cell:I.getCell())};var fa=this.getCursorForCell;
-this.getCursorForCell=function(I){if(!this.isEnabled()||this.isCellLocked(I)){if(null!=this.getClickableLinkForCell(I))return"pointer";if(this.isCellLocked(I))return"default"}return fa.apply(this,arguments)};this.selectRegion=function(I,L){var H=mxEvent.isAltDown(L)?I:null;I=this.getCells(I.x,I.y,I.width,I.height,null,null,H,function(S){return"1"==mxUtils.getValue(S.style,"locked","0")},!0);if(this.isToggleEvent(L))for(H=0;H<I.length;H++)this.selectCellForEvent(I[H],L);else this.selectCellsForEvent(I,
-L);return I};var ha=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(I,L,H){return this.graph.isCellSelected(I)?!1:ha.apply(this,arguments)};this.isCellLocked=function(I){for(;null!=I;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(I),"locked","0"))return!0;I=this.model.getParent(I)}return!1};var ba=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(I,L){"mouseDown"==L.getProperty("eventName")&&(I=L.getProperty("event").getState(),
-ba=null==I||this.isSelectionEmpty()||this.isCellSelected(I.cell)?null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(I,L){if(!mxEvent.isMultiTouchEvent(L)){I=L.getProperty("event");var H=L.getProperty("cell");null==H?(I=mxUtils.convertPoint(this.container,mxEvent.getClientX(I),mxEvent.getClientY(I)),F.start(I.x,I.y)):null!=ba?this.addSelectionCells(ba):1<this.getSelectionCount()&&this.isCellSelected(H)&&this.removeSelectionCell(H);ba=null;L.consume()}}));
-this.connectionHandler.selectCells=function(I,L){this.graph.setSelectionCell(L||I)};this.connectionHandler.constraintHandler.isStateIgnored=function(I,L){var H=I.view.graph;return L&&(H.isCellSelected(I.cell)||H.isTableRow(I.cell)&&H.selectionCellsHandler.isHandled(H.model.getParent(I.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var I=this.connectionHandler.constraintHandler;null!=I.currentFocus&&I.isStateIgnored(I.currentFocus,!0)&&(I.currentFocus=null,I.constraints=
-null,I.destroyIcons());I.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var qa=this.updateMouseEvent;this.updateMouseEvent=function(I){I=qa.apply(this,arguments);null!=I.state&&this.isCellLocked(I.getCell())&&(I.state=null);return I}}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=function(a,b,f,d,g,e){mxGraph.call(this,a,b,f,d);this.themes=g||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=e?e:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(O){O=this.getCurrentCellStyle(O);
+return null!=O?"1"==O.html||"wrap"==O[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var k=null,n=null,u=null,m=null,r=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(O,S){if("mouseDown"==S.getProperty("eventName")&&this.isEnabled()){O=S.getProperty("event");var F=O.getState();S=this.view.scale;if(!mxEvent.isAltDown(O.getEvent())&&null!=F)if(this.model.isEdge(F.cell))if(k=new mxPoint(O.getGraphX(),O.getGraphY()),r=this.isCellSelected(F.cell),u=F,n=O,null!=F.text&&null!=
+F.text.boundingBox&&mxUtils.contains(F.text.boundingBox,O.getGraphX(),O.getGraphY()))m=mxEvent.LABEL_HANDLE;else{var L=this.selectionCellsHandler.getHandler(F.cell);null!=L&&null!=L.bends&&0<L.bends.length&&(m=L.getHandleForEvent(O))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(O.getEvent())&&(L=this.selectionCellsHandler.getHandler(F.cell),null==L||null==L.getHandleForEvent(O))){var T=new mxRectangle(O.getGraphX()-1,O.getGraphY()-1),ca=mxEvent.isTouchEvent(O.getEvent())?mxShape.prototype.svgStrokeTolerance-
+1:(mxShape.prototype.svgStrokeTolerance+2)/2;L=ca+2;T.grow(ca);if(this.isTableCell(F.cell)&&!this.isCellSelected(F.cell)&&!(mxUtils.contains(F,O.getGraphX()-L,O.getGraphY()-L)&&mxUtils.contains(F,O.getGraphX()-L,O.getGraphY()+L)&&mxUtils.contains(F,O.getGraphX()+L,O.getGraphY()+L)&&mxUtils.contains(F,O.getGraphX()+L,O.getGraphY()-L))){var fa=this.model.getParent(F.cell);L=this.model.getParent(fa);if(!this.isCellSelected(L)){ca*=S;var wa=2*ca;if(this.model.getChildAt(L,0)!=fa&&mxUtils.intersects(T,
+new mxRectangle(F.x,F.y-ca,F.width,wa))||this.model.getChildAt(fa,0)!=F.cell&&mxUtils.intersects(T,new mxRectangle(F.x-ca,F.y,wa,F.height))||mxUtils.intersects(T,new mxRectangle(F.x,F.y+F.height-ca,F.width,wa))||mxUtils.intersects(T,new mxRectangle(F.x+F.width-ca,F.y,wa,F.height)))fa=this.selectionCellsHandler.isHandled(L),this.selectCellForEvent(L,O.getEvent()),L=this.selectionCellsHandler.getHandler(L),null!=L&&(ca=L.getHandleForEvent(O),null!=ca&&(L.start(O.getGraphX(),O.getGraphY(),ca),L.blockDelayedSelection=
+!fa,O.consume()))}}for(;!O.isConsumed()&&null!=F&&(this.isTableCell(F.cell)||this.isTableRow(F.cell)||this.isTable(F.cell));)this.isSwimlane(F.cell)&&(L=this.getActualStartSize(F.cell),(0<L.x||0<L.width)&&mxUtils.intersects(T,new mxRectangle(F.x+(L.x-L.width-1)*S+(0==L.x?F.width:0),F.y,1,F.height))||(0<L.y||0<L.height)&&mxUtils.intersects(T,new mxRectangle(F.x,F.y+(L.y-L.height-1)*S+(0==L.y?F.height:0),F.width,1)))&&(this.selectCellForEvent(F.cell,O.getEvent()),L=this.selectionCellsHandler.getHandler(F.cell),
+null!=L&&(ca=mxEvent.CUSTOM_HANDLE-L.customHandles.length+1,L.start(O.getGraphX(),O.getGraphY(),ca),O.consume())),F=this.view.getState(this.model.getParent(F.cell))}}}));this.addMouseListener({mouseDown:function(O,S){},mouseMove:mxUtils.bind(this,function(O,S){O=this.selectionCellsHandler.handlers.map;for(var F in O)if(null!=O[F].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(S.getEvent())){var L=this.tolerance;if(null!=k&&null!=u&&null!=n){if(F=u,Math.abs(k.x-
+S.getGraphX())>L||Math.abs(k.y-S.getGraphY())>L){var T=this.selectionCellsHandler.getHandler(F.cell);null==T&&this.model.isEdge(F.cell)&&(T=this.createHandler(F));if(null!=T&&null!=T.bends&&0<T.bends.length){O=T.getHandleForEvent(n);var ca=this.view.getEdgeStyle(F);L=ca==mxEdgeStyle.EntityRelation;r||m!=mxEvent.LABEL_HANDLE||(O=m);if(L&&0!=O&&O!=T.bends.length-1&&O!=mxEvent.LABEL_HANDLE)!L||null==F.visibleSourceState&&null==F.visibleTargetState||(this.graphHandler.reset(),S.consume());else if(O==
+mxEvent.LABEL_HANDLE||0==O||null!=F.visibleSourceState||O==T.bends.length-1||null!=F.visibleTargetState)L||O==mxEvent.LABEL_HANDLE||(L=F.absolutePoints,null!=L&&(null==ca&&null==O||ca==mxEdgeStyle.OrthConnector)&&(O=m,null==O&&(O=new mxRectangle(k.x,k.y),O.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(O,L[0].x,L[0].y)?O=0:mxUtils.contains(O,L[L.length-1].x,L[L.length-1].y)?O=T.bends.length-1:null!=ca&&(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)))?O=2:(O=mxUtils.findNearestSegment(F,k.x,k.y),O=null==ca?mxEvent.VIRTUAL_HANDLE-O:O+1))),null==O&&(O=mxEvent.VIRTUAL_HANDLE)),T.start(S.getGraphX(),S.getGraphX(),O),S.consume(),this.graphHandler.reset()}null!=T&&(this.selectionCellsHandler.isHandlerActive(T)?this.isCellSelected(F.cell)||(this.selectionCellsHandler.handlers.put(F.cell,T),this.selectCellForEvent(F.cell,S.getEvent())):this.isCellSelected(F.cell)||T.destroy());r=!1;
+k=n=u=m=null}}else if(F=S.getState(),null!=F&&this.isCellEditable(F.cell)){T=null;if(this.model.isEdge(F.cell)){if(O=new mxRectangle(S.getGraphX(),S.getGraphY()),O.grow(mxEdgeHandler.prototype.handleImage.width/2),L=F.absolutePoints,null!=L)if(null!=F.text&&null!=F.text.boundingBox&&mxUtils.contains(F.text.boundingBox,S.getGraphX(),S.getGraphY()))T="move";else if(mxUtils.contains(O,L[0].x,L[0].y)||mxUtils.contains(O,L[L.length-1].x,L[L.length-1].y))T="pointer";else if(null!=F.visibleSourceState||
+null!=F.visibleTargetState)O=this.view.getEdgeStyle(F),T="crosshair",O!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(F)&&(S=mxUtils.findNearestSegment(F,S.getGraphX(),S.getGraphY()),S<L.length-1&&0<=S&&(T=0==Math.round(L[S].x-L[S+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(S.getEvent())){L=mxShape.prototype.svgStrokeTolerance/2;O=new mxRectangle(S.getGraphX(),S.getGraphY());O.grow(L);if(this.isTableCell(F.cell)&&(S=this.model.getParent(F.cell),L=this.model.getParent(S),!this.isCellSelected(L)))if(mxUtils.intersects(O,
+new mxRectangle(F.x,F.y-2,F.width,4))&&this.model.getChildAt(L,0)!=S||mxUtils.intersects(O,new mxRectangle(F.x,F.y+F.height-2,F.width,4)))T="row-resize";else if(mxUtils.intersects(O,new mxRectangle(F.x-2,F.y,4,F.height))&&this.model.getChildAt(S,0)!=F.cell||mxUtils.intersects(O,new mxRectangle(F.x+F.width-2,F.y,4,F.height)))T="col-resize";for(S=F;null==T&&null!=S&&(this.isTableCell(S.cell)||this.isTableRow(S.cell)||this.isTable(S.cell));)this.isSwimlane(S.cell)&&(L=this.getActualStartSize(S.cell),
+ca=this.view.scale,(0<L.x||0<L.width)&&mxUtils.intersects(O,new mxRectangle(S.x+(L.x-L.width-1)*ca+(0==L.x?S.width*ca:0),S.y,1,S.height))?T="col-resize":(0<L.y||0<L.height)&&mxUtils.intersects(O,new mxRectangle(S.x,S.y+(L.y-L.height-1)*ca+(0==L.y?S.height:0),S.width,1))&&(T="row-resize")),S=this.view.getState(this.model.getParent(S.cell))}null!=T&&F.setCursor(T)}}}),mouseUp:mxUtils.bind(this,function(O,S){m=k=n=u=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(O){var S=
+mxCellRenderer.prototype.getLabelValue.apply(this,arguments);O.view.graph.isHtmlLabel(O.cell)&&(S=1!=O.style.html?mxUtils.htmlEntities(S,!1):O.view.graph.sanitizeHtml(S));return S};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(O,S){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var x=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var O=x.apply(this,arguments);if(this.graph.pageVisible){var S=[],F=this.graph.pageFormat,L=this.graph.pageScale,T=F.width*L;F=F.height*L;L=this.graph.view.translate;for(var ca=this.graph.view.scale,fa=
+this.graph.getPageLayout(),wa=0;wa<fa.width;wa++)S.push(new mxRectangle(((fa.x+wa)*T+L.x)*ca,(fa.y*F+L.y)*ca,T*ca,F*ca));for(wa=1;wa<fa.height;wa++)S.push(new mxRectangle((fa.x*T+L.x)*ca,((fa.y+wa)*F+L.y)*ca,T*ca,F*ca));O=S.concat(O)}return O};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(O,S){return null==O.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(O){this.previewColor="#000000"==this.graph.background?
+"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var B=this.graphHandler.getCells;this.graphHandler.getCells=function(O){for(var S=B.apply(this,arguments),F=new mxDictionary,L=[],T=0;T<S.length;T++){var ca=this.graph.isTableCell(O)&&this.graph.isTableCell(S[T])&&this.graph.isCellSelected(S[T])?this.graph.model.getParent(S[T]):this.graph.isTableRow(O)&&this.graph.isTableRow(S[T])&&this.graph.isCellSelected(S[T])?S[T]:this.graph.getCompositeParent(S[T]);
+null==ca||F.get(ca)||(F.put(ca,!0),L.push(ca))}return L};var C=this.graphHandler.start;this.graphHandler.start=function(O,S,F,L){var T=!1;this.graph.isTableCell(O)&&(this.graph.isCellSelected(O)?T=!0:O=this.graph.model.getParent(O));T||this.graph.isTableRow(O)&&this.graph.isCellSelected(O)||(O=this.graph.getCompositeParent(O));C.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(O,S){S=this.graph.getCompositeParent(S);return mxConnectionHandler.prototype.createTargetVertex.apply(this,
+arguments)};var G=new mxRubberband(this);this.getRubberband=function(){return G};var J=(new Date).getTime(),D=0,N=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var O=this.currentState;N.apply(this,arguments);O!=this.currentState?(J=(new Date).getTime(),D=0):D=(new Date).getTime()-J};var Q=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(O){return mxEvent.isShiftDown(O.getEvent())&&mxEvent.isAltDown(O.getEvent())?!1:null!=
+this.currentState&&O.getState()==this.currentState&&2E3<D||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&Q.apply(this,arguments)};var R=this.isToggleEvent;this.isToggleEvent=function(O){return R.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(O)};var P=G.isForceRubberbandEvent;G.isForceRubberbandEvent=function(O){return P.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(O.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&
+mxClient.IS_FF&&mxClient.IS_WIN&&null==O.getState()&&mxEvent.isTouchEvent(O.getEvent())};var Z=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(Z=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=Z)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(O){return mxEvent.isMouseEvent(O.getEvent())};
+var U=this.click;this.click=function(O){var S=null==O.state&&null!=O.sourceState&&this.isCellLocked(O.sourceState.cell);if(this.isEnabled()&&!S||O.isConsumed())return U.apply(this,arguments);var F=S?O.sourceState.cell:O.getCell();null!=F&&(F=this.getClickableLinkForCell(F),null!=F&&(this.isCustomLink(F)?this.customLinkClicked(F):this.openLink(F)));this.isEnabled()&&S&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(O){return O.sourceState};var V=this.tooltipHandler.show;this.tooltipHandler.show=
+function(){V.apply(this,arguments);if(null!=this.div)for(var O=this.div.getElementsByTagName("a"),S=0;S<O.length;S++)null!=O[S].getAttribute("href")&&null==O[S].getAttribute("target")&&O[S].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(O){return O.sourceState};this.getCursorForMouseEvent=function(O){var S=null==O.state&&null!=O.sourceState&&this.isCellLocked(O.sourceState.cell);return this.getCursorForCell(S?O.sourceState.cell:O.getCell())};var ia=this.getCursorForCell;
+this.getCursorForCell=function(O){if(!this.isEnabled()||this.isCellLocked(O)){if(null!=this.getClickableLinkForCell(O))return"pointer";if(this.isCellLocked(O))return"default"}return ia.apply(this,arguments)};this.selectRegion=function(O,S){var F=mxEvent.isAltDown(S)?O:null;O=this.getCells(O.x,O.y,O.width,O.height,null,null,F,function(L){return"1"==mxUtils.getValue(L.style,"locked","0")},!0);if(this.isToggleEvent(S))for(F=0;F<O.length;F++)this.selectCellForEvent(O[F],S);else this.selectCellsForEvent(O,
+S);return O};var ha=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(O,S,F){return this.graph.isCellSelected(O)?!1:ha.apply(this,arguments)};this.isCellLocked=function(O){for(;null!=O;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(O),"locked","0"))return!0;O=this.model.getParent(O)}return!1};var ba=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(O,S){"mouseDown"==S.getProperty("eventName")&&(O=S.getProperty("event").getState(),
+ba=null==O||this.isSelectionEmpty()||this.isCellSelected(O.cell)?null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(O,S){if(!mxEvent.isMultiTouchEvent(S)){O=S.getProperty("event");var F=S.getProperty("cell");null==F?(O=mxUtils.convertPoint(this.container,mxEvent.getClientX(O),mxEvent.getClientY(O)),G.start(O.x,O.y)):null!=ba?this.addSelectionCells(ba):1<this.getSelectionCount()&&this.isCellSelected(F)&&this.removeSelectionCell(F);ba=null;S.consume()}}));
+this.connectionHandler.selectCells=function(O,S){this.graph.setSelectionCell(S||O)};this.connectionHandler.constraintHandler.isStateIgnored=function(O,S){var F=O.view.graph;return S&&(F.isCellSelected(O.cell)||F.isTableRow(O.cell)&&F.selectionCellsHandler.isHandled(F.model.getParent(O.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var O=this.connectionHandler.constraintHandler;null!=O.currentFocus&&O.isStateIgnored(O.currentFocus,!0)&&(O.currentFocus=null,O.constraints=
+null,O.destroyIcons());O.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var qa=this.updateMouseEvent;this.updateMouseEvent=function(O){O=qa.apply(this,arguments);null!=O.state&&this.isCellLocked(O.getCell())&&(O.state=null);return O}}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">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
@@ -2896,8 +2896,8 @@ mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE,null);return"label"==k||"image"
n,0==u)}return n};Graph.prototype.mergeStyle=function(k,n,u){if(null!=k){var m={},r;for(r in k){var x=k[r];null!=x&&(m[r]=!0,null==n[r]&&u?n[r]=x:n[r]!=x&&delete n[r])}for(r in n)m[r]||delete n[r]}};Graph.prototype.getStartEditingCell=function(k,n){n=this.getCellStyle(k);n=parseInt(mxUtils.getValue(n,mxConstants.STYLE_STARTSIZE,0));this.isTable(k)&&(!this.isSwimlane(k)||0==n)&&""==this.getLabel(k)&&0<this.model.getChildCount(k)&&(k=this.model.getChildAt(k,0),n=this.getCellStyle(k),n=parseInt(mxUtils.getValue(n,
mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(k)&&(!this.isSwimlane(k)||0==n)&&""==this.getLabel(k)&&0<this.model.getChildCount(k))for(n=0;n<this.model.getChildCount(k);n++){var u=this.model.getChildAt(k,n);if(this.isCellEditable(u)){k=u;break}}return k};Graph.prototype.copyStyle=function(k){return this.getCellStyle(k,!1)};Graph.prototype.pasteStyle=function(k,n,u){u=null!=u?u:Graph.pasteStyles;Graph.removeKeys(k,function(m){return 0>mxUtils.indexOf(u,m)});this.updateCellStyles(k,n)};Graph.prototype.updateCellStyles=
function(k,n){this.model.beginUpdate();try{for(var u=0;u<n.length;u++)if(this.model.isVertex(n[u])||this.model.isEdge(n[u])){var m=this.getCellStyle(n[u],!1),r;for(r in k){var x=k[r];m[r]!=x&&this.setCellStyles(r,x,[n[u]])}}}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(k,n,u,m,r,x){this.useCssTransforms&&(k=k/this.currentScale-this.currentTranslate.x,n=n/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(k,n,u,m,r,x){m=null!=m?m:!0;r=null!=r?r:!0;null==u&&(u=this.getCurrentRoot(),null==u&&(u=this.getModel().getRoot()));if(null!=u)for(var A=this.model.getChildCount(u)-1;0<=
-A;A--){var C=this.model.getChildAt(u,A),F=this.getScaledCellAt(k,n,C,m,r,x);if(null!=F)return F;if(this.isCellVisible(C)&&(r&&this.model.isEdge(C)||m&&this.model.isVertex(C))&&(F=this.view.getState(C),null!=F&&(null==x||!x(F,k,n))&&this.intersects(F,k,n)))return C}return null};Graph.prototype.isRecursiveVertexResize=function(k){return!this.isSwimlane(k.cell)&&0<this.model.getChildCount(k.cell)&&!this.isCellCollapsed(k.cell)&&"1"==mxUtils.getValue(k.style,"recursiveResize","1")&&null==mxUtils.getValue(k.style,
+mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(k,n,u,m,r,x){this.useCssTransforms&&(k=k/this.currentScale-this.currentTranslate.x,n=n/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(k,n,u,m,r,x){m=null!=m?m:!0;r=null!=r?r:!0;null==u&&(u=this.getCurrentRoot(),null==u&&(u=this.getModel().getRoot()));if(null!=u)for(var B=this.model.getChildCount(u)-1;0<=
+B;B--){var C=this.model.getChildAt(u,B),G=this.getScaledCellAt(k,n,C,m,r,x);if(null!=G)return G;if(this.isCellVisible(C)&&(r&&this.model.isEdge(C)||m&&this.model.isVertex(C))&&(G=this.view.getState(C),null!=G&&(null==x||!x(G,k,n))&&this.intersects(G,k,n)))return C}return null};Graph.prototype.isRecursiveVertexResize=function(k){return!this.isSwimlane(k.cell)&&0<this.model.getChildCount(k.cell)&&!this.isCellCollapsed(k.cell)&&"1"==mxUtils.getValue(k.style,"recursiveResize","1")&&null==mxUtils.getValue(k.style,
"childLayout",null)};Graph.prototype.getAbsoluteParent=function(k){for(var n=this.getCellGeometry(k);null!=n&&n.relative;)k=this.getModel().getParent(k),n=this.getCellGeometry(k);return k};Graph.prototype.isPart=function(k){return"1"==mxUtils.getValue(this.getCurrentCellStyle(k),"part","0")||this.isTableCell(k)||this.isTableRow(k)};Graph.prototype.getCompositeParents=function(k){for(var n=new mxDictionary,u=[],m=0;m<k.length;m++){var r=this.getCompositeParent(k[m]);this.isTableCell(r)&&(r=this.graph.model.getParent(r));
this.isTableRow(r)&&(r=this.graph.model.getParent(r));null==r||n.get(r)||(n.put(r,!0),u.push(r))}return u};Graph.prototype.getCompositeParent=function(k){for(;this.isPart(k);){var n=this.model.getParent(k);if(!this.model.isVertex(n))break;k=n}return k};Graph.prototype.filterSelectionCells=function(k){var n=this.getSelectionCells();if(null!=k){for(var u=[],m=0;m<n.length;m++)k(n[m])||u.push(n[m]);n=u}return n};var a=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(k){if(this.useCssTransforms){var n=
this.currentScale,u=this.currentTranslate;k=new mxRectangle((k.x+2*u.x)*n-u.x,(k.y+2*u.y)*n-u.y,k.width*n,k.height*n)}a.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(k){k=this.strokeWidth;this.graph.useCssTransforms&&(k/=this.graph.currentScale);return k};mxGraphView.prototype.getGraphBounds=function(){var k=this.graphBounds;if(this.graph.useCssTransforms){var n=this.graph.currentTranslate,u=this.graph.currentScale;k=new mxRectangle((k.x+n.x)*u,(k.y+n.y)*u,k.width*u,k.height*
@@ -2932,10 +2932,10 @@ Graph.prototype.getLabel=function(a){var b=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(a){this.gridSize=a;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(a){this.defaultParent=a;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(a){do{var b=this.getLinkForCell(a);if(null!=b)return b;a=this.model.getParent(a)}while(null!=a);return null};
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,f){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,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,k=function(O,Q){O=String(O);for(Q=Q||2;O.length<Q;)O="0"+O;return O};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),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),A=a[n+"Hours"](),C=a[n+"Minutes"](),F=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var K=f?0:a.getTimezoneOffset(),D={d:u,dd:k(u),ddd:d.i18n.dayNames[m],dddd:d.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:d.i18n.monthNames[r],mmmm:d.i18n.monthNames[r+
-12],yy:String(x).slice(2),yyyy:x,h:A%12||12,hh:k(A%12||12),H:A,HH:k(A),M:C,MM:k(C),s:F,ss:k(F),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>A?"a":"p",tt:12>A?"am":"pm",T:12>A?"A":"P",TT:12>A?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(e,""),o:(0<K?"-":"+")+k(100*Math.floor(Math.abs(K)/60)+Math.abs(K)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(O){return O in D?D[O]:O.slice(1,
-O.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 f=1;f<a.length;f++)if(!this.model.isAncestor(b,a[f])){b=null;break}}return b};
+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,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,e=/[^-+\dA-Z]/g,k=function(N,Q){N=String(N);for(Q=Q||2;N.length<Q;)N="0"+N;return N};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),f=!0);var n=f?"getUTC":"get",u=a[n+"Date"](),m=a[n+"Day"](),r=a[n+"Month"](),x=a[n+"FullYear"](),B=a[n+"Hours"](),C=a[n+"Minutes"](),G=a[n+"Seconds"]();n=a[n+"Milliseconds"]();var J=f?0:a.getTimezoneOffset(),D={d:u,dd:k(u),ddd:d.i18n.dayNames[m],dddd:d.i18n.dayNames[m+7],m:r+1,mm:k(r+1),mmm:d.i18n.monthNames[r],mmmm:d.i18n.monthNames[r+
+12],yy:String(x).slice(2),yyyy:x,h:B%12||12,hh:k(B%12||12),H:B,HH:k(B),M:C,MM:k(C),s:G,ss:k(G),l:k(n,3),L:k(99<n?Math.round(n/10):n),t:12>B?"a":"p",tt:12>B?"am":"pm",T:12>B?"A":"P",TT:12>B?"AM":"PM",Z:f?"UTC":(String(a).match(g)||[""]).pop().replace(e,""),o:(0<J?"-":"+")+k(100*Math.floor(Math.abs(J)/60)+Math.abs(J)%60,4),S:["th","st","nd","rd"][3<u%10?0:(10!=u%100-u%10)*u%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(N){return N in D?D[N]:N.slice(1,
+N.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 f=1;f<a.length;f++)if(!this.model.isAncestor(b,a[f])){b=null;break}}return b};
Graph.prototype.createLayersDialog=function(a,b){var f=document.createElement("div");f.style.position="absolute";for(var d=this.getModel(),g=d.getChildCount(d.root),e=0;e<g;e++)mxUtils.bind(this,function(k){function n(){d.isVisible(k)?(r.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(m,75)):(r.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(m,25))}var u=this.convertValueToString(k)||mxResources.get("background")||"Background",m=document.createElement("div");m.style.overflow=
"hidden";m.style.textOverflow="ellipsis";m.style.padding="2px";m.style.whiteSpace="nowrap";m.style.cursor="pointer";m.setAttribute("title",mxResources.get(d.isVisible(k)?"hideIt":"show",[u]));var r=document.createElement("img");r.setAttribute("draggable","false");r.setAttribute("align","absmiddle");r.setAttribute("border","0");r.style.position="relative";r.style.width="16px";r.style.padding="0px 6px 0 4px";b&&(r.style.filter="invert(100%)",r.style.top="-2px");m.appendChild(r);mxUtils.write(m,u);f.appendChild(m);
mxEvent.addListener(m,"click",function(){d.setVisible(k,!d.isVisible(k));n();null!=a&&a(k)});n()})(d.getChildAt(d.root,e));return f};
@@ -2948,12 +2948,12 @@ Graph.prototype.snapCellsToGrid=function(a,b){this.getModel().beginUpdate();try{
g)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.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,f,d,g,e,k,n){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 u=this.isCloneConnectSource(a),m=u?a:this.getCompositeParent(a),r=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(m.geometry.x,m.geometry.y);b==mxConstants.DIRECTION_NORTH?(r.x+=m.geometry.width/2,r.y-=f):b==
-mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=b==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var A=this.view.translate;m=A.x*f;A=A.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,A=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);e=e?null:(new mxRectangle(m+r.x*f,A+r.y*f)).grow(40*f);e=null!=e?
-this.getCells(0,0,0,0,null,null,e,null,!0):null;x=this.view.getState(a);var C=null,F=null;if(null!=e){e=e.reverse();for(var K=0;K<e.length;K++)if(!this.isCellLocked(e[K])&&!this.model.isEdge(e[K])&&e[K]!=a)if(!this.model.isAncestor(a,e[K])&&this.isContainer(e[K])&&(null==C||e[K]==this.model.getParent(a)))C=e[K];else if(null==F&&this.isCellConnectable(e[K])&&!this.model.isAncestor(e[K],a)&&!this.isSwimlane(e[K])){var D=this.view.getState(e[K]);null==x||null==D||mxUtils.intersects(x,D)||(F=e[K])}}var O=
-!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||g;O&&("1"!=urlParams.sketch||g)&&(b==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var Q=[],R=F;F=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==F&&u){this.model.beginUpdate();try{if(null==R&&O){var Z=this.getAbsoluteParent(null!=P?P:a);Z=u?a:this.getCompositeParent(Z);R=null!=P?P:this.duplicateCells([Z],
-!1)[0];null!=P&&this.addCells([R],this.model.getParent(a),null,null,null,!0);var T=this.getCellGeometry(R);null!=T&&(null!=P&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?r.y-=T.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=T.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-T.width/2:r.x+T.width/2),T.x=r.x-T.width/2,T.y=r.y-T.height/2);null!=C?(this.addCells([R],C,null,null,null,!0),F=null):O&&!u&&this.addCells([R],this.getDefaultParent(),null,null,null,!0)}var U=mxEvent.isControlDown(d)&&
-mxEvent.isShiftDown(d)&&O||null==F&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,R,this.createCurrentEdgeStyle());if(null!=U&&this.connectionHandler.insertBeforeSource){var fa=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=U.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==U.parent&&(fa=P.parent.getIndex(P),this.model.add(P.parent,U,fa))}null==F&&null!=R&&null!=a.parent&&u&&b==mxConstants.DIRECTION_WEST&&(fa=a.parent.getIndex(a),this.model.add(a.parent,
-R,fa));null!=U&&Q.push(U);null==F&&null!=R&&Q.push(R);null==R&&null!=U&&U.geometry.setTerminalPoint(r,!1);null!=U&&this.fireEvent(new mxEventObject("cellsInserted","cells",[U]))}finally{this.model.endUpdate()}}if(null!=n)n(Q);else return Q});if(null==k||null!=R||!O||null==F&&u)return g(R);k(m+r.x*f,A+r.y*f,g)};
+mxConstants.DIRECTION_SOUTH?(r.x+=m.geometry.width/2,r.y+=m.geometry.height+f):(r.x=b==mxConstants.DIRECTION_WEST?r.x-f:r.x+(m.geometry.width+f),r.y+=m.geometry.height/2);var x=this.view.getState(this.model.getParent(a));f=this.view.scale;var B=this.view.translate;m=B.x*f;B=B.y*f;null!=x&&this.model.isVertex(x.cell)&&(m=x.x,B=x.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(r.x+=a.parent.geometry.x,r.y+=a.parent.geometry.y);e=e?null:(new mxRectangle(m+r.x*f,B+r.y*f)).grow(40*f);e=null!=e?
+this.getCells(0,0,0,0,null,null,e,null,!0):null;x=this.view.getState(a);var C=null,G=null;if(null!=e){e=e.reverse();for(var J=0;J<e.length;J++)if(!this.isCellLocked(e[J])&&!this.model.isEdge(e[J])&&e[J]!=a)if(!this.model.isAncestor(a,e[J])&&this.isContainer(e[J])&&(null==C||e[J]==this.model.getParent(a)))C=e[J];else if(null==G&&this.isCellConnectable(e[J])&&!this.model.isAncestor(e[J],a)&&!this.isSwimlane(e[J])){var D=this.view.getState(e[J]);null==x||null==D||mxUtils.intersects(x,D)||(G=e[J])}}var N=
+!mxEvent.isShiftDown(d)||mxEvent.isControlDown(d)||g;N&&("1"!=urlParams.sketch||g)&&(b==mxConstants.DIRECTION_NORTH?r.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=a.geometry.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-a.geometry.width/2:r.x+a.geometry.width/2);var Q=[],R=G;G=C;g=mxUtils.bind(this,function(P){if(null==k||null!=P||null==G&&u){this.model.beginUpdate();try{if(null==R&&N){var Z=this.getAbsoluteParent(null!=P?P:a);Z=u?a:this.getCompositeParent(Z);R=null!=P?P:this.duplicateCells([Z],
+!1)[0];null!=P&&this.addCells([R],this.model.getParent(a),null,null,null,!0);var U=this.getCellGeometry(R);null!=U&&(null!=P&&"1"==urlParams.sketch&&(b==mxConstants.DIRECTION_NORTH?r.y-=U.height/2:b==mxConstants.DIRECTION_SOUTH?r.y+=U.height/2:r.x=b==mxConstants.DIRECTION_WEST?r.x-U.width/2:r.x+U.width/2),U.x=r.x-U.width/2,U.y=r.y-U.height/2);null!=C?(this.addCells([R],C,null,null,null,!0),G=null):N&&!u&&this.addCells([R],this.getDefaultParent(),null,null,null,!0)}var V=mxEvent.isControlDown(d)&&
+mxEvent.isShiftDown(d)&&N||null==G&&u?null:this.insertEdge(this.model.getParent(a),null,"",a,R,this.createCurrentEdgeStyle());if(null!=V&&this.connectionHandler.insertBeforeSource){var ia=null;for(P=a;null!=P.parent&&null!=P.geometry&&P.geometry.relative&&P.parent!=V.parent;)P=this.model.getParent(P);null!=P&&null!=P.parent&&P.parent==V.parent&&(ia=P.parent.getIndex(P),this.model.add(P.parent,V,ia))}null==G&&null!=R&&null!=a.parent&&u&&b==mxConstants.DIRECTION_WEST&&(ia=a.parent.getIndex(a),this.model.add(a.parent,
+R,ia));null!=V&&Q.push(V);null==G&&null!=R&&Q.push(R);null==R&&null!=V&&V.geometry.setTerminalPoint(r,!1);null!=V&&this.fireEvent(new mxEventObject("cellsInserted","cells",[V]))}finally{this.model.endUpdate()}}if(null!=n)n(Q);else return Q});if(null==k||null!=R||!N||null==G&&u)return g(R);k(m+r.x*f,B+r.y*f,g)};
Graph.prototype.getIndexableText=function(a){a=null!=a?a:this.model.getDescendants(this.model.root);for(var b=document.createElement("div"),f=[],d,g=0;g<a.length;g++)if(d=a[g],this.model.isVertex(d)||this.model.isEdge(d))this.isHtmlLabel(d)?(b.innerHTML=this.sanitizeHtml(this.getLabel(d)),d=mxUtils.extractTextWithWhitespace([b])):d=this.getLabel(d),d=mxUtils.trim(d.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<d.length&&f.push(d);return f.join(" ")};
Graph.prototype.convertValueToString=function(a){var b=this.model.getValue(a);if(null!=b&&"object"==typeof b){var f=null;if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){b=a.getAttribute("placeholder");for(var d=a;null==f&&null!=d;)null!=d.value&&"object"==typeof d.value&&(f=d.hasAttribute(b)?null!=d.getAttribute(b)?d.getAttribute(b):"":null),d=this.model.getParent(d)}else f=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(f=b.getAttribute("label_"+Graph.diagramLanguage)),
null==f&&(f=b.getAttribute("label")||"");return f||""}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};
@@ -3017,36 +3017,36 @@ Graph.prototype.setTableValues=function(a,b,f){for(var d=this.model.getChildCell
Graph.prototype.createCrossFunctionalSwimlane=function(a,b,f,d,g,e,k,n,u){f=null!=f?f:120;d=null!=d?d:120;k=null!=k?k:"shape=tableRow;horizontal=0;swimlaneHead=0;swimlaneBody=0;top=0;left=0;bottom=0;right=0;dropTarget=0;fontStyle=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;startSize=40;collapsible=0;recursiveResize=0;expand=0;";n=null!=n?n:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=40;collapsible=0;recursiveResize=0;expand=0;";
u=null!=u?u:"swimlane;swimlaneHead=0;swimlaneBody=0;fontStyle=0;connectable=0;fillColor=none;startSize=0;collapsible=0;recursiveResize=0;expand=0;";g=this.createVertex(null,null,null!=g?g:"",0,0,b*f,a*d,null!=e?e:"shape=table;childLayout=tableLayout;"+(null==g?"startSize=0;fillColor=none;":"startSize=40;")+"collapsible=0;recursiveResize=0;expand=0;");e=mxUtils.getValue(this.getCellStyle(g),mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);g.geometry.width+=e;g.geometry.height+=e;k=this.createVertex(null,
null,"",0,e,b*f+e,d,k);g.insert(this.createParent(k,this.createVertex(null,null,"",e,0,f,d,n),b,f,0));return 1<a?(k.geometry.y=d+e,this.createParent(g,this.createParent(k,this.createVertex(null,null,"",e,0,f,d,u),b,f,0),a-1,0,d)):g};
-Graph.prototype.visitTableCells=function(a,b){var f=null,d=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<d.length;g++){for(var e=this.getActualStartSize(d[g],!0),k=this.model.getChildCells(d[g],!0),n=this.getCellStyle(d[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),A={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;A.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+e.x),x.height+(null!=f&&null!=
-f[0]?f[0].point.y:a.y+e.y));A.actual=A;null!=f&&null!=f[r]&&1<f[r].rowspan?(A.rowspan=f[r].rowspan-1,A.colspan=f[r].colspan,A.actual=f[r].actual):null!=u&&1<u.colspan?(A.rowspan=u.rowspan,A.colspan=u.colspan-1,A.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(A.rowspan=parseInt(u.rowspan||1),A.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;b(A,k.length,
-d.length,a.x+(u?e.x:0),a.y+(u?e.y:0));m.push(A);u=A}f=m}};Graph.prototype.getTableLines=function(a,b,f){var d=[],g=[];(b||f)&&this.visitTableCells(a,mxUtils.bind(this,function(e,k,n,u,m){b&&e.row<n-1&&(null==d[e.row]&&(d[e.row]=[new mxPoint(u,e.point.y)]),1<e.rowspan&&d[e.row].push(null),d[e.row].push(e.point));f&&e.col<k-1&&(null==g[e.col]&&(g[e.col]=[new mxPoint(e.point.x,m)]),1<e.colspan&&g[e.col].push(null),g[e.col].push(e.point))}));return d.concat(g)};
+Graph.prototype.visitTableCells=function(a,b){var f=null,d=this.model.getChildCells(a,!0);a=this.getActualStartSize(a,!0);for(var g=0;g<d.length;g++){for(var e=this.getActualStartSize(d[g],!0),k=this.model.getChildCells(d[g],!0),n=this.getCellStyle(d[g],!0),u=null,m=[],r=0;r<k.length;r++){var x=this.getCellGeometry(k[r]),B={cell:k[r],rospan:1,colspan:1,row:g,col:r,geo:x};x=null!=x.alternateBounds?x.alternateBounds:x;B.point=new mxPoint(x.width+(null!=u?u.point.x:a.x+e.x),x.height+(null!=f&&null!=
+f[0]?f[0].point.y:a.y+e.y));B.actual=B;null!=f&&null!=f[r]&&1<f[r].rowspan?(B.rowspan=f[r].rowspan-1,B.colspan=f[r].colspan,B.actual=f[r].actual):null!=u&&1<u.colspan?(B.rowspan=u.rowspan,B.colspan=u.colspan-1,B.actual=u.actual):(u=this.getCurrentCellStyle(k[r],!0),null!=u&&(B.rowspan=parseInt(u.rowspan||1),B.colspan=parseInt(u.colspan||1)));u=1==mxUtils.getValue(n,mxConstants.STYLE_SWIMLANE_HEAD,1)&&mxUtils.getValue(n,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE;b(B,k.length,
+d.length,a.x+(u?e.x:0),a.y+(u?e.y:0));m.push(B);u=B}f=m}};Graph.prototype.getTableLines=function(a,b,f){var d=[],g=[];(b||f)&&this.visitTableCells(a,mxUtils.bind(this,function(e,k,n,u,m){b&&e.row<n-1&&(null==d[e.row]&&(d[e.row]=[new mxPoint(u,e.point.y)]),1<e.rowspan&&d[e.row].push(null),d[e.row].push(e.point));f&&e.col<k-1&&(null==g[e.col]&&(g[e.col]=[new mxPoint(e.point.x,m)]),1<e.colspan&&g[e.col].push(null),g[e.col].push(e.point))}));return d.concat(g)};
Graph.prototype.isTableCell=function(a){return this.model.isVertex(a)&&this.isTableRow(this.model.getParent(a))};Graph.prototype.isTableRow=function(a){return this.model.isVertex(a)&&this.isTable(this.model.getParent(a))};Graph.prototype.isTable=function(a){a=this.getCellStyle(a);return null!=a&&"tableLayout"==a.childLayout};Graph.prototype.isStack=function(a){a=this.getCellStyle(a);return null!=a&&"stackLayout"==a.childLayout};
Graph.prototype.isStackChild=function(a){return this.model.isVertex(a)&&this.isStack(this.model.getParent(a))};
Graph.prototype.setTableRowHeight=function(a,b,f){f=null!=f?f:!0;var d=this.getModel();d.beginUpdate();try{var g=this.getCellGeometry(a);if(null!=g){g=g.clone();g.height+=b;d.setGeometry(a,g);var e=d.getParent(a),k=d.getChildCells(e,!0);if(!f){var n=mxUtils.indexOf(k,a);if(n<k.length-1){var u=k[n+1],m=this.getCellGeometry(u);null!=m&&(m=m.clone(),m.y+=b,m.height-=b,d.setGeometry(u,m))}}var r=this.getCellGeometry(e);null!=r&&(f||(f=a==k[k.length-1]),f&&(r=r.clone(),r.height+=b,d.setGeometry(e,r)))}}finally{d.endUpdate()}};
Graph.prototype.setTableColumnWidth=function(a,b,f){f=null!=f?f:!1;var d=this.getModel(),g=d.getParent(a),e=d.getParent(g),k=d.getChildCells(g,!0);a=mxUtils.indexOf(k,a);var n=a==k.length-1;d.beginUpdate();try{for(var u=d.getChildCells(e,!0),m=0;m<u.length;m++){g=u[m];k=d.getChildCells(g,!0);var r=k[a],x=this.getCellGeometry(r);null!=x&&(x=x.clone(),x.width+=b,null!=x.alternateBounds&&(x.alternateBounds.width+=b),d.setGeometry(r,x));a<k.length-1&&(r=k[a+1],x=this.getCellGeometry(r),null!=x&&(x=x.clone(),
-x.x+=b,f||(x.width-=b,null!=x.alternateBounds&&(x.alternateBounds.width-=b)),d.setGeometry(r,x)))}if(n||f){var A=this.getCellGeometry(e);null!=A&&(A=A.clone(),A.width+=b,d.setGeometry(e,A))}null!=this.layoutManager&&this.layoutManager.executeLayout(e)}finally{d.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
+x.x+=b,f||(x.width-=b,null!=x.alternateBounds&&(x.alternateBounds.width-=b)),d.setGeometry(r,x)))}if(n||f){var B=this.getCellGeometry(e);null!=B&&(B=B.clone(),B.width+=b,d.setGeometry(e,B))}null!=this.layoutManager&&this.layoutManager.executeLayout(e)}finally{d.endUpdate()}};function TableLayout(a){mxGraphLayout.call(this,a)}TableLayout.prototype=new mxStackLayout;TableLayout.prototype.constructor=TableLayout;TableLayout.prototype.isHorizontal=function(){return!1};
TableLayout.prototype.isVertexIgnored=function(a){return!this.graph.getModel().isVertex(a)||!this.graph.isCellVisible(a)};TableLayout.prototype.getSize=function(a,b){for(var f=0,d=0;d<a.length;d++)if(!this.isVertexIgnored(a[d])){var g=this.graph.getCellGeometry(a[d]);null!=g&&(f+=b?g.width:g.height)}return f};
TableLayout.prototype.getRowLayout=function(a,b){var f=this.graph.model.getChildCells(a,!0),d=this.graph.getActualStartSize(a,!0);a=this.getSize(f,!0);b=b-d.x-d.width;var g=[];d=d.x;for(var e=0;e<f.length;e++){var k=this.graph.getCellGeometry(f[e]);null!=k&&(d+=(null!=k.alternateBounds?k.alternateBounds.width:k.width)*b/a,g.push(Math.round(d)))}return g};
TableLayout.prototype.layoutRow=function(a,b,f,d){var g=this.graph.getModel(),e=g.getChildCells(a,!0);a=this.graph.getActualStartSize(a,!0);var k=a.x,n=0;null!=b&&(b=b.slice(),b.splice(0,0,a.x));for(var u=0;u<e.length;u++){var m=this.graph.getCellGeometry(e[u]);null!=m&&(m=m.clone(),m.y=a.y,m.height=f-a.y-a.height,null!=b?(m.x=b[u],m.width=b[u+1]-m.x,u==e.length-1&&u<b.length-2&&(m.width=d-m.x-a.x-a.width)):(m.x=k,k+=m.width,u==e.length-1?m.width=d-a.x-a.width-n:n+=m.width),m.alternateBounds=new mxRectangle(0,
0,m.width,m.height),g.setGeometry(e[u],m))}return n};
-TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(d,"resizeLastRow","0"),e="1"==mxUtils.getValue(d,"resizeLast","0");d="1"==mxUtils.getValue(d,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-b.y-b.height,m=f.width-b.x-b.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var A=this.getSize(r,!1);if(0<u&&0<m&&0<
-r.length&&0<A){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-A+C.height,k.setGeometry(r[r.length-1],C))}var F=e?null:this.getRowLayout(r[0],m),K=[],D=b.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=b.x,C.width=m,C.y=Math.round(D),D=g||d?D+C.height:D+C.height/A*u,C.height=Math.round(D)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],F,C.height,m,K));d&&u<A&&(f=f.clone(),f.height=D+b.height,k.setGeometry(a,
-f));e&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+b.width+b.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(O){k.setVisible(O.cell,O.actual.cell==O.cell);if(O.actual.cell!=O.cell){if(O.actual.row==O.row){var Q=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo;O.actual.geo.width+=Q.width}O.actual.col==O.col&&(Q=null!=O.geo.alternateBounds?O.geo.alternateBounds:O.geo,O.actual.geo.height+=Q.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
+TableLayout.prototype.execute=function(a){if(null!=a){var b=this.graph.getActualStartSize(a,!0),f=this.graph.getCellGeometry(a),d=this.graph.getCellStyle(a),g="1"==mxUtils.getValue(d,"resizeLastRow","0"),e="1"==mxUtils.getValue(d,"resizeLast","0");d="1"==mxUtils.getValue(d,"fixedRows","0");var k=this.graph.getModel(),n=0;k.beginUpdate();try{for(var u=f.height-b.y-b.height,m=f.width-b.x-b.width,r=k.getChildCells(a,!0),x=0;x<r.length;x++)k.setVisible(r[x],!0);var B=this.getSize(r,!1);if(0<u&&0<m&&0<
+r.length&&0<B){if(g){var C=this.graph.getCellGeometry(r[r.length-1]);null!=C&&(C=C.clone(),C.height=u-B+C.height,k.setGeometry(r[r.length-1],C))}var G=e?null:this.getRowLayout(r[0],m),J=[],D=b.y;for(x=0;x<r.length;x++)C=this.graph.getCellGeometry(r[x]),null!=C&&(C=C.clone(),C.x=b.x,C.width=m,C.y=Math.round(D),D=g||d?D+C.height:D+C.height/B*u,C.height=Math.round(D)-C.y,k.setGeometry(r[x],C)),n=Math.max(n,this.layoutRow(r[x],G,C.height,m,J));d&&u<B&&(f=f.clone(),f.height=D+b.height,k.setGeometry(a,
+f));e&&m<n+Graph.minTableColumnWidth&&(f=f.clone(),f.width=n+b.width+b.x+Graph.minTableColumnWidth,k.setGeometry(a,f));this.graph.visitTableCells(a,mxUtils.bind(this,function(N){k.setVisible(N.cell,N.actual.cell==N.cell);if(N.actual.cell!=N.cell){if(N.actual.row==N.row){var Q=null!=N.geo.alternateBounds?N.geo.alternateBounds:N.geo;N.actual.geo.width+=Q.width}N.actual.col==N.col&&(Q=null!=N.geo.alternateBounds?N.geo.alternateBounds:N.geo,N.actual.geo.height+=Q.height)}}))}else for(x=0;x<r.length;x++)k.setVisible(r[x],
!1)}finally{k.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(r,x){x=null!=x?x:!0;var A=this.getState(r);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&!A.invalid&&this.updateLineJumps(A)&&this.graph.cellRenderer.redraw(A,!1,this.isRendering());A=b.apply(this,
-arguments);null!=A&&x&&this.graph.model.isEdge(A.cell)&&null!=A.style&&1!=A.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(A);return A};var f=mxShape.prototype.paint;mxShape.prototype.paint=function(){f.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 r=this.node.getElementsByTagName("path");if(1<r.length){"1"!=mxUtils.getValue(this.state.style,
+(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(r,x){x=null!=x?x:!0;var B=this.getState(r);null!=B&&x&&this.graph.model.isEdge(B.cell)&&null!=B.style&&1!=B.style[mxConstants.STYLE_CURVED]&&!B.invalid&&this.updateLineJumps(B)&&this.graph.cellRenderer.redraw(B,!1,this.isRendering());B=b.apply(this,
+arguments);null!=B&&x&&this.graph.model.isEdge(B.cell)&&null!=B.style&&1!=B.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(B);return B};var f=mxShape.prototype.paint;mxShape.prototype.paint=function(){f.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 r=this.node.getElementsByTagName("path");if(1<r.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&r[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var x=this.state.view.graph.getFlowAnimationStyle();null!=x&&r[1].setAttribute("class",x.getAttribute("id"))}}};var d=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(r,x){return d.apply(this,arguments)||null!=r.routedPoints&&null!=x.routedPoints&&!mxUtils.equalPoints(x.routedPoints,r.routedPoints)};var g=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
-function(r){g.apply(this,arguments);this.graph.model.isEdge(r.cell)&&1!=r.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(r)};mxGraphView.prototype.updateLineJumps=function(r){var x=r.absolutePoints;if(Graph.lineJumpsEnabled){var A=null!=r.routedPoints,C=null;if(null!=x&&null!=this.validEdges&&"none"!==mxUtils.getValue(r.style,"jumpStyle","none")){var F=function(ba,qa,I){var L=new mxPoint(qa,I);L.type=ba;C.push(L);L=null!=r.routedPoints?r.routedPoints[C.length-1]:null;return null==L||L.type!=
-ba||L.x!=qa||L.y!=I},K=.5*this.scale;A=!1;C=[];for(var D=0;D<x.length-1;D++){for(var O=x[D+1],Q=x[D],R=[],P=x[D+2];D<x.length-2&&mxUtils.ptSegDistSq(Q.x,Q.y,P.x,P.y,O.x,O.y)<1*this.scale*this.scale;)O=P,D++,P=x[D+2];A=F(0,Q.x,Q.y)||A;for(var Z=0;Z<this.validEdges.length;Z++){var T=this.validEdges[Z],U=T.absolutePoints;if(null!=U&&mxUtils.intersects(r,T)&&"1"!=T.style.noJump)for(T=0;T<U.length-1;T++){var fa=U[T+1],ha=U[T];for(P=U[T+2];T<U.length-2&&mxUtils.ptSegDistSq(ha.x,ha.y,P.x,P.y,fa.x,fa.y)<
-1*this.scale*this.scale;)fa=P,T++,P=U[T+2];P=mxUtils.intersection(Q.x,Q.y,O.x,O.y,ha.x,ha.y,fa.x,fa.y);if(null!=P&&(Math.abs(P.x-Q.x)>K||Math.abs(P.y-Q.y)>K)&&(Math.abs(P.x-O.x)>K||Math.abs(P.y-O.y)>K)&&(Math.abs(P.x-ha.x)>K||Math.abs(P.y-ha.y)>K)&&(Math.abs(P.x-fa.x)>K||Math.abs(P.y-fa.y)>K)){fa=P.x-Q.x;ha=P.y-Q.y;P={distSq:fa*fa+ha*ha,x:P.x,y:P.y};for(fa=0;fa<R.length;fa++)if(R[fa].distSq>P.distSq){R.splice(fa,0,P);P=null;break}null==P||0!=R.length&&R[R.length-1].x===P.x&&R[R.length-1].y===P.y||
-R.push(P)}}}for(T=0;T<R.length;T++)A=F(1,R[T].x,R[T].y)||A}P=x[x.length-1];A=F(0,P.x,P.y)||A}r.routedPoints=C;return A}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(r,x,A){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,K=mxUtils.getValue(this.style,"jumpStyle","none"),D=!0,O=null,Q=null,R=[],P=null;r.begin();for(var Z=0;Z<this.state.routedPoints.length;Z++){var T=this.state.routedPoints[Z],U=new mxPoint(T.x/this.scale,T.y/this.scale);0==Z?U=x[0]:Z==this.state.routedPoints.length-1&&(U=x[x.length-1]);var fa=!1;if(null!=O&&1==T.type){var ha=this.state.routedPoints[Z+1];T=ha.x/this.scale-U.x;ha=ha.y/this.scale-U.y;T=
-T*T+ha*ha;null==P&&(P=new mxPoint(U.x-O.x,U.y-O.y),Q=Math.sqrt(P.x*P.x+P.y*P.y),0<Q?(P.x=P.x*F/Q,P.y=P.y*F/Q):P=null);T>F*F&&0<Q&&(T=O.x-U.x,ha=O.y-U.y,T=T*T+ha*ha,T>F*F&&(fa=new mxPoint(U.x-P.x,U.y-P.y),T=new mxPoint(U.x+P.x,U.y+P.y),R.push(fa),this.addPoints(r,R,A,C,!1,null,D),R=0>Math.round(P.x)||0==Math.round(P.x)&&0>=Math.round(P.y)?1:-1,D=!1,"sharp"==K?(r.lineTo(fa.x-P.y*R,fa.y+P.x*R),r.lineTo(T.x-P.y*R,T.y+P.x*R),r.lineTo(T.x,T.y)):"line"==K?(r.moveTo(fa.x+P.y*R,fa.y-P.x*R),r.lineTo(fa.x-P.y*
-R,fa.y+P.x*R),r.moveTo(T.x-P.y*R,T.y+P.x*R),r.lineTo(T.x+P.y*R,T.y-P.x*R),r.moveTo(T.x,T.y)):"arc"==K?(R*=1.3,r.curveTo(fa.x-P.y*R,fa.y+P.x*R,T.x-P.y*R,T.y+P.x*R,T.x,T.y)):(r.moveTo(T.x,T.y),D=!0),R=[T],fa=!0))}else P=null;fa||(R.push(U),O=U)}this.addPoints(r,R,A,C,!1,null,D);r.stroke()}};var k=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(r,x,A,C){return null!=x&&"centerPerimeter"==x.style[mxConstants.STYLE_PERIMETER]?new mxPoint(x.getCenterX(),
-x.getCenterY()):k.apply(this,arguments)};var n=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(r,x,A,C){if(null==x||null==r||"1"!=x.style.snapToPoint&&"1"!=r.style.snapToPoint)n.apply(this,arguments);else{x=this.getTerminalPort(r,x,C);var F=this.getNextPoint(r,A,C),K=this.graph.isOrthogonal(r),D=mxUtils.toRadians(Number(x.style[mxConstants.STYLE_ROTATION]||"0")),O=new mxPoint(x.getCenterX(),x.getCenterY());if(0!=D){var Q=Math.cos(-D),R=
-Math.sin(-D);F=mxUtils.getRotatedPoint(F,Q,R,O)}Q=parseFloat(r.style[mxConstants.STYLE_PERIMETER_SPACING]||0);Q+=parseFloat(r.style[C?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);F=this.getPerimeterPoint(x,F,0==D&&K,Q);0!=D&&(Q=Math.cos(D),R=Math.sin(D),F=mxUtils.getRotatedPoint(F,Q,R,O));r.setAbsoluteTerminalPoint(this.snapToAnchorPoint(r,x,A,C,F),C)}};mxGraphView.prototype.snapToAnchorPoint=function(r,x,A,C,F){if(null!=x&&null!=r){r=this.graph.getAllConnectionConstraints(x);
-C=A=null;if(null!=r)for(var K=0;K<r.length;K++){var D=this.graph.getConnectionPoint(x,r[K]);if(null!=D){var O=(D.x-F.x)*(D.x-F.x)+(D.y-F.y)*(D.y-F.y);if(null==C||O<C)A=D,C=O}}null!=A&&(F=A)}return F};var u=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(r,x,A){var C=u.apply(this,arguments);"1"==r.getAttribute("placeholders")&&null!=A.state&&(C=A.state.view.graph.replacePlaceholders(A.state.cell,C));return C};var m=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=
-function(r){if(null!=r.style&&"undefined"!==typeof pako){var x=mxUtils.getValue(r.style,mxConstants.STYLE_SHAPE,null);if(null!=x&&"string"===typeof x&&"stencil("==x.substring(0,8))try{var A=x.substring(8,x.length-1),C=mxUtils.parseXml(Graph.decompress(A));return new mxShape(new mxStencil(C.documentElement))}catch(F){null!=window.console&&console.log("Error in shape: "+F)}}return m.apply(this,arguments)}})();mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;
+function(r){g.apply(this,arguments);this.graph.model.isEdge(r.cell)&&1!=r.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(r)};mxGraphView.prototype.updateLineJumps=function(r){var x=r.absolutePoints;if(Graph.lineJumpsEnabled){var B=null!=r.routedPoints,C=null;if(null!=x&&null!=this.validEdges&&"none"!==mxUtils.getValue(r.style,"jumpStyle","none")){var G=function(ba,qa,O){var S=new mxPoint(qa,O);S.type=ba;C.push(S);S=null!=r.routedPoints?r.routedPoints[C.length-1]:null;return null==S||S.type!=
+ba||S.x!=qa||S.y!=O},J=.5*this.scale;B=!1;C=[];for(var D=0;D<x.length-1;D++){for(var N=x[D+1],Q=x[D],R=[],P=x[D+2];D<x.length-2&&mxUtils.ptSegDistSq(Q.x,Q.y,P.x,P.y,N.x,N.y)<1*this.scale*this.scale;)N=P,D++,P=x[D+2];B=G(0,Q.x,Q.y)||B;for(var Z=0;Z<this.validEdges.length;Z++){var U=this.validEdges[Z],V=U.absolutePoints;if(null!=V&&mxUtils.intersects(r,U)&&"1"!=U.style.noJump)for(U=0;U<V.length-1;U++){var ia=V[U+1],ha=V[U];for(P=V[U+2];U<V.length-2&&mxUtils.ptSegDistSq(ha.x,ha.y,P.x,P.y,ia.x,ia.y)<
+1*this.scale*this.scale;)ia=P,U++,P=V[U+2];P=mxUtils.intersection(Q.x,Q.y,N.x,N.y,ha.x,ha.y,ia.x,ia.y);if(null!=P&&(Math.abs(P.x-Q.x)>J||Math.abs(P.y-Q.y)>J)&&(Math.abs(P.x-N.x)>J||Math.abs(P.y-N.y)>J)&&(Math.abs(P.x-ha.x)>J||Math.abs(P.y-ha.y)>J)&&(Math.abs(P.x-ia.x)>J||Math.abs(P.y-ia.y)>J)){ia=P.x-Q.x;ha=P.y-Q.y;P={distSq:ia*ia+ha*ha,x:P.x,y:P.y};for(ia=0;ia<R.length;ia++)if(R[ia].distSq>P.distSq){R.splice(ia,0,P);P=null;break}null==P||0!=R.length&&R[R.length-1].x===P.x&&R[R.length-1].y===P.y||
+R.push(P)}}}for(U=0;U<R.length;U++)B=G(1,R[U].x,R[U].y)||B}P=x[x.length-1];B=G(0,P.x,P.y)||B}r.routedPoints=C;return B}return!1};var e=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(r,x,B){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,G=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,J=mxUtils.getValue(this.style,"jumpStyle","none"),D=!0,N=null,Q=null,R=[],P=null;r.begin();for(var Z=0;Z<this.state.routedPoints.length;Z++){var U=this.state.routedPoints[Z],V=new mxPoint(U.x/this.scale,U.y/this.scale);0==Z?V=x[0]:Z==this.state.routedPoints.length-1&&(V=x[x.length-1]);var ia=!1;if(null!=N&&1==U.type){var ha=this.state.routedPoints[Z+1];U=ha.x/this.scale-V.x;ha=ha.y/this.scale-V.y;U=
+U*U+ha*ha;null==P&&(P=new mxPoint(V.x-N.x,V.y-N.y),Q=Math.sqrt(P.x*P.x+P.y*P.y),0<Q?(P.x=P.x*G/Q,P.y=P.y*G/Q):P=null);U>G*G&&0<Q&&(U=N.x-V.x,ha=N.y-V.y,U=U*U+ha*ha,U>G*G&&(ia=new mxPoint(V.x-P.x,V.y-P.y),U=new mxPoint(V.x+P.x,V.y+P.y),R.push(ia),this.addPoints(r,R,B,C,!1,null,D),R=0>Math.round(P.x)||0==Math.round(P.x)&&0>=Math.round(P.y)?1:-1,D=!1,"sharp"==J?(r.lineTo(ia.x-P.y*R,ia.y+P.x*R),r.lineTo(U.x-P.y*R,U.y+P.x*R),r.lineTo(U.x,U.y)):"line"==J?(r.moveTo(ia.x+P.y*R,ia.y-P.x*R),r.lineTo(ia.x-P.y*
+R,ia.y+P.x*R),r.moveTo(U.x-P.y*R,U.y+P.x*R),r.lineTo(U.x+P.y*R,U.y-P.x*R),r.moveTo(U.x,U.y)):"arc"==J?(R*=1.3,r.curveTo(ia.x-P.y*R,ia.y+P.x*R,U.x-P.y*R,U.y+P.x*R,U.x,U.y)):(r.moveTo(U.x,U.y),D=!0),R=[U],ia=!0))}else P=null;ia||(R.push(V),N=V)}this.addPoints(r,R,B,C,!1,null,D);r.stroke()}};var k=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(r,x,B,C){return null!=x&&"centerPerimeter"==x.style[mxConstants.STYLE_PERIMETER]?new mxPoint(x.getCenterX(),
+x.getCenterY()):k.apply(this,arguments)};var n=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(r,x,B,C){if(null==x||null==r||"1"!=x.style.snapToPoint&&"1"!=r.style.snapToPoint)n.apply(this,arguments);else{x=this.getTerminalPort(r,x,C);var G=this.getNextPoint(r,B,C),J=this.graph.isOrthogonal(r),D=mxUtils.toRadians(Number(x.style[mxConstants.STYLE_ROTATION]||"0")),N=new mxPoint(x.getCenterX(),x.getCenterY());if(0!=D){var Q=Math.cos(-D),R=
+Math.sin(-D);G=mxUtils.getRotatedPoint(G,Q,R,N)}Q=parseFloat(r.style[mxConstants.STYLE_PERIMETER_SPACING]||0);Q+=parseFloat(r.style[C?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);G=this.getPerimeterPoint(x,G,0==D&&J,Q);0!=D&&(Q=Math.cos(D),R=Math.sin(D),G=mxUtils.getRotatedPoint(G,Q,R,N));r.setAbsoluteTerminalPoint(this.snapToAnchorPoint(r,x,B,C,G),C)}};mxGraphView.prototype.snapToAnchorPoint=function(r,x,B,C,G){if(null!=x&&null!=r){r=this.graph.getAllConnectionConstraints(x);
+C=B=null;if(null!=r)for(var J=0;J<r.length;J++){var D=this.graph.getConnectionPoint(x,r[J]);if(null!=D){var N=(D.x-G.x)*(D.x-G.x)+(D.y-G.y)*(D.y-G.y);if(null==C||N<C)B=D,C=N}}null!=B&&(G=B)}return G};var u=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(r,x,B){var C=u.apply(this,arguments);"1"==r.getAttribute("placeholders")&&null!=B.state&&(C=B.state.view.graph.replacePlaceholders(B.state.cell,C));return C};var m=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=
+function(r){if(null!=r.style&&"undefined"!==typeof pako){var x=mxUtils.getValue(r.style,mxConstants.STYLE_SHAPE,null);if(null!=x&&"string"===typeof x&&"stencil("==x.substring(0,8))try{var B=x.substring(8,x.length-1),C=mxUtils.parseXml(Graph.decompress(B));return new mxShape(new mxStencil(C.documentElement))}catch(G){null!=window.console&&console.log("Error in shape: "+G)}}return m.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 f=mxStencilRegistry.getBasenameForStencil(a);if(null!=f){b=mxStencilRegistry.libraries[f];if(null!=b){if(null==mxStencilRegistry.packages[f]){for(var d=0;d<b.length;d++){var g=b[d];if(!mxStencilRegistry.filesLoaded[g])if(mxStencilRegistry.filesLoaded[g]=!0,".xml"==g.toLowerCase().substring(g.length-4,g.length))mxStencilRegistry.loadStencilSet(g,
null);else if(".js"==g.toLowerCase().substring(g.length-3,g.length))try{if(mxStencilRegistry.allowEval){var e=mxUtils.load(g);null!=e&&200<=e.getStatus()&&299>=e.getStatus()&&eval.call(window,e.getText())}}catch(k){null!=window.console&&console.log("error in getStencil:",a,f,b,g,k)}}mxStencilRegistry.packages[f]=1}}else f=f.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+f+".xml",null);b=mxStencilRegistry.stencils[a]}}return b};
@@ -3060,140 +3060,140 @@ mxConstants.HANDLE_STROKECOLOR="#0088cf";mxConstants.VERTEX_SELECTION_COLOR="#00
!0;mxGraphHandler.prototype.guidesEnabled=!0;mxGraphHandler.prototype.removeEmptyParents=!0;mxRubberband.prototype.fadeOut=!0;mxGuide.prototype.isEnabledForEvent=function(t){return!mxEvent.isAltDown(t)};var f=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(t){return f.apply(this,arguments)||this.graph.isTableRow(t)||this.graph.isTableCell(t)};var d=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(t){return d.apply(this,arguments)||
this.graph.isEdgeIgnored(t)};var g=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(t){return this.graph.isCloneEvent(t)!=g.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var t=new mxEllipse(null,this.highlightColor,this.highlightColor,0);t.opacity=mxConstants.HIGHLIGHT_OPACITY;return t};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
function(t){t=this.graph.createCurrentEdgeStyle();t=this.graph.createEdge(null,null,null,null,null,t);t=new mxCellState(this.graph.view,t,this.graph.getCellStyle(t));for(var z in this.graph.currentEdgeStyle)t.style[z]=this.graph.currentEdgeStyle[z];t.style=this.graph.postProcessCellStyle(t.cell,t.style);return t};var e=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var t=e.apply(this,arguments);t.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return t};mxConnectionHandler.prototype.updatePreview=function(t){};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=k.apply(this,arguments),z=t.getCell;t.getCell=mxUtils.bind(this,function(B){var E=z.apply(this,arguments);this.error=null;return E});return t};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
-function(){for(var t="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",z="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),B=0;B<z.length;B++)null!=this.currentEdgeStyle[z[B]]&&(t+=z[B]+"="+this.currentEdgeStyle[z[B]]+";");null!=this.currentEdgeStyle.orthogonalLoop?t+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
+return t};mxConnectionHandler.prototype.updatePreview=function(t){};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=k.apply(this,arguments),z=t.getCell;t.getCell=mxUtils.bind(this,function(A){var E=z.apply(this,arguments);this.error=null;return E});return t};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+function(){for(var t="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",z="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),A=0;A<z.length;A++)null!=this.currentEdgeStyle[z[A]]&&(t+=z[A]+"="+this.currentEdgeStyle[z[A]]+";");null!=this.currentEdgeStyle.orthogonalLoop?t+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(t+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?t+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(t+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(t+="elbow="+this.currentEdgeStyle.elbow+";");return t=null!=this.currentEdgeStyle.html?t+("html="+this.currentEdgeStyle.html+";"):t+"html=1;"};
-Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var t=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=t&&(new mxCodec(t.ownerDocument)).decode(t,this.getStylesheet())};Graph.prototype.createCellLookup=function(t,z){z=null!=z?z:{};for(var B=0;B<t.length;B++){var E=t[B];z[mxObjectIdentity.get(E)]=E.getId();for(var G=this.model.getChildCount(E),
-M=0;M<G;M++)this.createCellLookup([this.model.getChildAt(E,M)],z)}return z};Graph.prototype.createCellMapping=function(t,z,B){B=null!=B?B:{};for(var E in t){var G=z[E];null==B[G]&&(B[G]=t[E].getId()||"")}return B};Graph.prototype.importGraphModel=function(t,z,B,E){z=null!=z?z:0;B=null!=B?B:0;var G=new mxCodec(t.ownerDocument),M=new mxGraphModel;G.decode(t,M);t=[];G={};var X={},ia=M.getChildren(this.cloneCell(M.root,this.isCloneInvalidEdges(),G));if(null!=ia){var da=this.createCellLookup([M.root]);
-ia=ia.slice();this.model.beginUpdate();try{if(1!=ia.length||this.isCellLocked(this.getDefaultParent()))for(M=0;M<ia.length;M++)ja=this.model.getChildren(this.moveCells([ia[M]],z,B,!1,this.model.getRoot())[0]),null!=ja&&(t=t.concat(ja));else{var ja=M.getChildren(ia[0]);null!=ja&&(t=this.moveCells(ja,z,B,!1,this.getDefaultParent()),X[M.getChildAt(M.root,0).getId()]=this.getDefaultParent().getId())}if(null!=t&&(this.createCellMapping(G,da,X),this.updateCustomLinks(X,t),E)){this.isGridEnabled()&&(z=this.snap(z),
-B=this.snap(B));var sa=this.getBoundingBoxFromGeometry(t,!0);null!=sa&&this.moveCells(t,z-sa.x,B-sa.y)}}finally{this.model.endUpdate()}}return t};Graph.prototype.encodeCells=function(t){for(var z={},B=this.cloneCells(t,null,z),E=new mxDictionary,G=0;G<t.length;G++)E.put(t[G],!0);var M=new mxCodec,X=new mxGraphModel,ia=X.getChildAt(X.getRoot(),0);for(G=0;G<B.length;G++){X.add(ia,B[G]);var da=this.view.getState(t[G]);if(null!=da){var ja=this.getCellGeometry(B[G]);null!=ja&&ja.relative&&!this.model.isEdge(t[G])&&
-null==E.get(this.model.getParent(t[G]))&&(ja.offset=null,ja.relative=!1,ja.x=da.x/da.view.scale-da.view.translate.x,ja.y=da.y/da.view.scale-da.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(z,this.createCellLookup(t)),B);return M.encode(X)};Graph.prototype.isSwimlane=function(t,z){var B=null;null==t||this.model.isEdge(t)||this.model.getParent(t)==this.model.getRoot()||(B=this.getCurrentCellStyle(t,z)[mxConstants.STYLE_SHAPE]);return B==mxConstants.SHAPE_SWIMLANE||"table"==B||"tableRow"==
-B};var n=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(t){var z=this.model.getParent(t);if(null!=z){var B=this.getCurrentCellStyle(z);if(null!=B.expand)return"0"!=B.expand}return n.apply(this,arguments)&&(null==z||!this.isTable(z))};var u=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(t,z,B,E,G,M,X,ia){null==ia&&(ia=this.model.getParent(t),this.isTable(ia)||this.isTableRow(ia))&&(ia=this.getCellAt(M,X,null,!0,!1));B=null;this.model.beginUpdate();try{B=u.apply(this,
-[t,z,B,E,G,M,X,ia]);this.model.setValue(B,"");var da=this.getChildCells(B,!0);for(z=0;z<da.length;z++){var ja=this.getCellGeometry(da[z]);null!=ja&&ja.relative&&0<ja.x&&this.model.remove(da[z])}var sa=this.getChildCells(t,!0);for(z=0;z<sa.length;z++)ja=this.getCellGeometry(sa[z]),null!=ja&&ja.relative&&0>=ja.x&&this.model.remove(sa[z]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[B]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[B]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
-null,[t]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[t]);var Ba=this.model.getTerminal(B,!1);if(null!=Ba){var Da=this.getCurrentCellStyle(Ba);null!=Da&&"1"==Da.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[t]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[t]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[B]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[B]))}}finally{this.model.endUpdate()}return B};var m=Graph.prototype.selectCell;Graph.prototype.selectCell=
-function(t,z,B){if(z||B)m.apply(this,arguments);else{var E=this.getSelectionCell(),G=null,M=[],X=mxUtils.bind(this,function(ia){if(null!=this.view.getState(ia)&&(this.model.isVertex(ia)||this.model.isEdge(ia)))if(M.push(ia),ia==E)G=M.length-1;else if(t&&null==E&&0<M.length||null!=G&&t&&M.length>G||!t&&0<G)return;for(var da=0;da<this.model.getChildCount(ia);da++)X(this.model.getChildAt(ia,da))});X(this.model.root);0<M.length&&(G=null!=G?mxUtils.mod(G+(t?1:-1),M.length):0,this.setSelectionCell(M[G]))}};
-Graph.prototype.swapShapes=function(t,z,B,E,G,M,X){z=!1;if(!E&&null!=G&&1==t.length&&(E=this.view.getState(G),B=this.view.getState(t[0]),null!=E&&null!=B&&(null!=M&&mxEvent.isShiftDown(M)||"umlLifeline"==E.style.shape&&"umlLifeline"==B.style.shape)&&(E=this.getCellGeometry(G),M=this.getCellGeometry(t[0]),null!=E&&null!=M))){z=E.clone();E=M.clone();E.x=z.x;E.y=z.y;z.x=M.x;z.y=M.y;this.model.beginUpdate();try{this.model.setGeometry(G,z),this.model.setGeometry(t[0],E)}finally{this.model.endUpdate()}z=
-!0}return z};var r=Graph.prototype.moveCells;Graph.prototype.moveCells=function(t,z,B,E,G,M,X){if(this.swapShapes(t,z,B,E,G,M,X))return t;X=null!=X?X:{};if(this.isTable(G)){for(var ia=[],da=0;da<t.length;da++)this.isTable(t[da])?ia=ia.concat(this.model.getChildCells(t[da],!0).reverse()):ia.push(t[da]);t=ia}this.model.beginUpdate();try{ia=[];for(da=0;da<t.length;da++)if(null!=G&&this.isTableRow(t[da])){var ja=this.model.getParent(t[da]),sa=this.getCellGeometry(t[da]);this.isTable(ja)&&ia.push(ja);
-if(null!=ja&&null!=sa&&this.isTable(ja)&&this.isTable(G)&&(E||ja!=G)){if(!E){var Ba=this.getCellGeometry(ja);null!=Ba&&(Ba=Ba.clone(),Ba.height-=sa.height,this.model.setGeometry(ja,Ba))}Ba=this.getCellGeometry(G);null!=Ba&&(Ba=Ba.clone(),Ba.height+=sa.height,this.model.setGeometry(G,Ba));var Da=this.model.getChildCells(G,!0);if(0<Da.length){t[da]=E?this.cloneCell(t[da]):t[da];var Ma=this.model.getChildCells(t[da],!0),La=this.model.getChildCells(Da[0],!0),Ia=La.length-Ma.length;if(0<Ia)for(var Ea=
-0;Ea<Ia;Ea++){var Fa=this.cloneCell(Ma[Ma.length-1]);null!=Fa&&(Fa.value="",this.model.add(t[da],Fa))}else if(0>Ia)for(Ea=0;Ea>Ia;Ea--)this.model.remove(Ma[Ma.length+Ea-1]);Ma=this.model.getChildCells(t[da],!0);for(Ea=0;Ea<La.length;Ea++){var Oa=this.getCellGeometry(La[Ea]),Pa=this.getCellGeometry(Ma[Ea]);null!=Oa&&null!=Pa&&(Pa=Pa.clone(),Pa.width=Oa.width,this.model.setGeometry(Ma[Ea],Pa))}}}}var Na=r.apply(this,arguments);for(da=0;da<ia.length;da++)!E&&this.model.contains(ia[da])&&0==this.model.getChildCount(ia[da])&&
-this.model.remove(ia[da]);E&&this.updateCustomLinks(this.createCellMapping(X,this.createCellLookup(t)),Na)}finally{this.model.endUpdate()}return Na};var x=Graph.prototype.removeCells;Graph.prototype.removeCells=function(t,z){var B=[];this.model.beginUpdate();try{for(var E=0;E<t.length;E++)if(this.isTableCell(t[E])){var G=this.model.getParent(t[E]),M=this.model.getParent(G);1==this.model.getChildCount(G)&&1==this.model.getChildCount(M)?0>mxUtils.indexOf(t,M)&&0>mxUtils.indexOf(B,M)&&B.push(M):this.labelChanged(t[E],
-"")}else{if(this.isTableRow(t[E])&&(M=this.model.getParent(t[E]),0>mxUtils.indexOf(t,M)&&0>mxUtils.indexOf(B,M))){for(var X=this.model.getChildCells(M,!0),ia=0,da=0;da<X.length;da++)0<=mxUtils.indexOf(t,X[da])&&ia++;ia==X.length&&B.push(M)}B.push(t[E])}B=x.apply(this,[B,z])}finally{this.model.endUpdate()}return B};Graph.prototype.updateCustomLinks=function(t,z,B){B=null!=B?B:new Graph;for(var E=0;E<z.length;E++)null!=z[E]&&B.updateCustomLinksForCell(t,z[E],B)};Graph.prototype.updateCustomLinksForCell=
-function(t,z){this.doUpdateCustomLinksForCell(t,z);for(var B=this.model.getChildCount(z),E=0;E<B;E++)this.updateCustomLinksForCell(t,this.model.getChildAt(z,E))};Graph.prototype.doUpdateCustomLinksForCell=function(t,z){};Graph.prototype.getAllConnectionConstraints=function(t,z){if(null!=t){z=mxUtils.getValue(t.style,"points",null);if(null!=z){t=[];try{var B=JSON.parse(z);for(z=0;z<B.length;z++){var E=B[z];t.push(new mxConnectionConstraint(new mxPoint(E[0],E[1]),2<E.length?"0"!=E[2]:!0,null,3<E.length?
-E[3]:0,4<E.length?E[4]:0))}}catch(M){}return t}if(null!=t.shape&&null!=t.shape.bounds){E=t.shape.direction;z=t.shape.bounds;var G=t.shape.scale;B=z.width/G;z=z.height/G;if(E==mxConstants.DIRECTION_NORTH||E==mxConstants.DIRECTION_SOUTH)E=B,B=z,z=E;z=t.shape.getConstraints(t.style,B,z);if(null!=z)return z;if(null!=t.shape.stencil&&null!=t.shape.stencil.constraints)return t.shape.stencil.constraints;if(null!=t.shape.constraints)return t.shape.constraints}}return null};Graph.prototype.flipEdge=function(t){if(null!=
-t){var z=this.getCurrentCellStyle(t);z=mxUtils.getValue(z,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,z,[t])}};Graph.prototype.isValidRoot=function(t){for(var z=this.model.getChildCount(t),B=0,E=0;E<z;E++){var G=this.model.getChildAt(t,E);this.model.isVertex(G)&&(G=this.getCellGeometry(G),null==G||G.relative||B++)}return 0<B||this.isContainer(t)};Graph.prototype.isValidDropTarget=
-function(t,z,B){for(var E=this.getCurrentCellStyle(t),G=!0,M=!0,X=0;X<z.length&&M;X++)G=G&&this.isTable(z[X]),M=M&&this.isTableRow(z[X]);return(1==z.length&&null!=B&&mxEvent.isShiftDown(B)&&!mxEvent.isControlDown(B)&&!mxEvent.isAltDown(B)||("1"!=mxUtils.getValue(E,"part","0")||this.isContainer(t))&&"0"!=mxUtils.getValue(E,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(t))&&!this.isTableRow(t)&&(!this.isTable(t)||M||G))&&!this.isCellLocked(t)};Graph.prototype.createGroupCell=
-function(){var t=mxGraph.prototype.createGroupCell.apply(this,arguments);t.setStyle("group");return t};Graph.prototype.isExtendParentsOnAdd=function(t){var z=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(z&&null!=t&&null!=this.layoutManager){var B=this.model.getParent(t);null!=B&&(B=this.layoutManager.getLayout(B),null!=B&&B.constructor==mxStackLayout&&(z=!1))}return z};Graph.prototype.getPreferredSizeForCell=function(t){var z=mxGraph.prototype.getPreferredSizeForCell.apply(this,
-arguments);null!=z&&(z.width+=10,z.height+=4,this.gridEnabled&&(z.width=this.snap(z.width),z.height=this.snap(z.height)));return z};Graph.prototype.turnShapes=function(t,z){var B=this.getModel(),E=[];B.beginUpdate();try{for(var G=0;G<t.length;G++){var M=t[G];if(B.isEdge(M)){var X=B.getTerminal(M,!0),ia=B.getTerminal(M,!1);B.setTerminal(M,ia,!0);B.setTerminal(M,X,!1);var da=B.getGeometry(M);if(null!=da){da=da.clone();null!=da.points&&da.points.reverse();var ja=da.getTerminalPoint(!0),sa=da.getTerminalPoint(!1);
-da.setTerminalPoint(ja,!1);da.setTerminalPoint(sa,!0);B.setGeometry(M,da);var Ba=this.view.getState(M),Da=this.view.getState(X),Ma=this.view.getState(ia);if(null!=Ba){var La=null!=Da?this.getConnectionConstraint(Ba,Da,!0):null,Ia=null!=Ma?this.getConnectionConstraint(Ba,Ma,!1):null;this.setConnectionConstraint(M,X,!0,Ia);this.setConnectionConstraint(M,ia,!1,La);var Ea=mxUtils.getValue(Ba.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
-mxUtils.getValue(Ba.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[M]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,Ea,[M])}E.push(M)}}else if(B.isVertex(M)&&(da=this.getCellGeometry(M),null!=da)){if(!(this.isTable(M)||this.isTableRow(M)||this.isTableCell(M)||this.isSwimlane(M))){da=da.clone();da.x+=da.width/2-da.height/2;da.y+=da.height/2-da.width/2;var Fa=da.width;da.width=da.height;da.height=Fa;B.setGeometry(M,da)}var Oa=this.view.getState(M);if(null!=Oa){var Pa=[mxConstants.DIRECTION_EAST,
-mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Na=mxUtils.getValue(Oa.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Pa[mxUtils.mod(mxUtils.indexOf(Pa,Na)+(z?-1:1),Pa.length)],[M])}E.push(M)}}}finally{B.endUpdate()}return E};Graph.prototype.stencilHasPlaceholders=function(t){if(null!=t&&null!=t.fgNode)for(t=t.fgNode.firstChild;null!=t;){if("text"==t.nodeName&&"1"==t.getAttribute("placeholders"))return!0;
-t=t.nextSibling}return!1};var A=Graph.prototype.processChange;Graph.prototype.processChange=function(t){if(t instanceof mxGeometryChange&&(this.isTableCell(t.cell)||this.isTableRow(t.cell))&&(null==t.previous&&null!=t.geometry||null!=t.previous&&!t.previous.equals(t.geometry))){var z=t.cell;this.isTableCell(z)&&(z=this.model.getParent(z));this.isTableRow(z)&&(z=this.model.getParent(z));var B=this.view.getState(z);null!=B&&null!=B.shape&&(this.view.invalidate(z),B.shape.bounds=null)}A.apply(this,arguments);
-t instanceof mxValueChange&&null!=t.cell&&null!=t.cell.value&&"object"==typeof t.cell.value&&this.invalidateDescendantsWithPlaceholders(t.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(t){t=this.model.getDescendants(t);if(0<t.length)for(var z=0;z<t.length;z++){var B=this.view.getState(t[z]);null!=B&&null!=B.shape&&null!=B.shape.stencil&&this.stencilHasPlaceholders(B.shape.stencil)?this.removeStateForCell(t[z]):this.isReplacePlaceholders(t[z])&&this.view.invalidate(t[z],!1,!1)}};
-Graph.prototype.replaceElement=function(t,z){z=t.ownerDocument.createElement(null!=z?z:"span");for(var B=Array.prototype.slice.call(t.attributes);attr=B.pop();)z.setAttribute(attr.nodeName,attr.nodeValue);z.innerHTML=t.innerHTML;t.parentNode.replaceChild(z,t)};Graph.prototype.processElements=function(t,z){if(null!=t){t=t.getElementsByTagName("*");for(var B=0;B<t.length;B++)z(t[B])}};Graph.prototype.updateLabelElements=function(t,z,B){t=null!=t?t:this.getSelectionCells();for(var E=document.createElement("div"),
-G=0;G<t.length;G++)if(this.isHtmlLabel(t[G])){var M=this.convertValueToString(t[G]);if(null!=M&&0<M.length){E.innerHTML=M;for(var X=E.getElementsByTagName(null!=B?B:"*"),ia=0;ia<X.length;ia++)z(X[ia]);E.innerHTML!=M&&this.cellLabelChanged(t[G],E.innerHTML)}}};Graph.prototype.cellLabelChanged=function(t,z,B){z=Graph.zapGremlins(z);this.model.beginUpdate();try{if(null!=t.value&&"object"==typeof t.value){if(this.isReplacePlaceholders(t)&&null!=t.getAttribute("placeholder"))for(var E=t.getAttribute("placeholder"),
-G=t;null!=G;){if(G==this.model.getRoot()||null!=G.value&&"object"==typeof G.value&&G.hasAttribute(E)){this.setAttributeForCell(G,E,z);break}G=this.model.getParent(G)}var M=t.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&M.hasAttribute("label_"+Graph.diagramLanguage)?M.setAttribute("label_"+Graph.diagramLanguage,z):M.setAttribute("label",z);z=M}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(t){if(null!=
-t){for(var z=new mxDictionary,B=0;B<t.length;B++)z.put(t[B],!0);var E=[];for(B=0;B<t.length;B++){var G=this.model.getParent(t[B]);null==G||z.get(G)||(z.put(G,!0),E.push(G))}for(B=0;B<E.length;B++)if(G=this.view.getState(E[B]),null!=G&&(this.model.isEdge(G.cell)||this.model.isVertex(G.cell))&&this.isCellDeletable(G.cell)&&this.isTransparentState(G)){for(var M=!0,X=0;X<this.model.getChildCount(G.cell)&&M;X++)z.get(this.model.getChildAt(G.cell,X))||(M=!1);M&&t.push(G.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
-arguments)};Graph.prototype.removeCellsAfterUngroup=function(t){for(var z=[],B=0;B<t.length;B++)this.isCellDeletable(t[B])&&this.isTransparentState(this.view.getState(t[B]))&&z.push(t[B]);t=z;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(t,z){this.setAttributeForCell(t,"link",z)};Graph.prototype.setTooltipForCell=function(t,z){var B="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(t.value)&&t.value.hasAttribute("tooltip_"+
-Graph.diagramLanguage)&&(B="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(t,B,z)};Graph.prototype.getAttributeForCell=function(t,z,B){t=null!=t.value&&"object"===typeof t.value?t.value.getAttribute(z):null;return null!=t?t:B};Graph.prototype.setAttributeForCell=function(t,z,B){if(null!=t.value&&"object"==typeof t.value)var E=t.value.cloneNode(!0);else E=mxUtils.createXmlDocument().createElement("UserObject"),E.setAttribute("label",t.value||"");null!=B?E.setAttribute(z,B):E.removeAttribute(z);
-this.model.setValue(t,E)};var C=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(t,z,B,E){this.getModel();if(mxEvent.isAltDown(z))return null;for(var G=0;G<t.length;G++){var M=this.model.getParent(t[G]);if(this.model.isEdge(M)&&0>mxUtils.indexOf(t,M))return null}M=C.apply(this,arguments);var X=!0;for(G=0;G<t.length&&X;G++)X=X&&this.isTableRow(t[G]);X&&(this.isTableCell(M)&&(M=this.model.getParent(M)),this.isTableRow(M)&&(M=this.model.getParent(M)),this.isTable(M)||(M=null));return M};
-Graph.prototype.click=function(t){mxGraph.prototype.click.call(this,t);this.firstClickState=t.getState();this.firstClickSource=t.getSource()};Graph.prototype.dblClick=function(t,z){this.isEnabled()&&(z=this.insertTextForEvent(t,z),mxGraph.prototype.dblClick.call(this,t,z))};Graph.prototype.insertTextForEvent=function(t,z){var B=mxUtils.convertPoint(this.container,mxEvent.getClientX(t),mxEvent.getClientY(t));if(null!=t&&!this.model.isVertex(z)){var E=this.model.isEdge(z)?this.view.getState(z):null,
-G=mxEvent.getSource(t);this.firstClickState!=E||this.firstClickSource!=G||null!=E&&null!=E.text&&null!=E.text.node&&null!=E.text.boundingBox&&(mxUtils.contains(E.text.boundingBox,B.x,B.y)||mxUtils.isAncestorNode(E.text.node,mxEvent.getSource(t)))||(null!=E||this.isCellLocked(this.getDefaultParent()))&&(null==E||this.isCellLocked(E.cell))||!(null!=E||mxClient.IS_SVG&&G==this.view.getCanvas().ownerSVGElement)||(null==E&&(E=this.view.getState(this.getCellAt(B.x,B.y))),z=this.addText(B.x,B.y,E))}return z};
-Graph.prototype.getInsertPoint=function(){var t=this.getGridSize(),z=this.container.scrollLeft/this.view.scale-this.view.translate.x,B=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var E=this.getPageLayout(),G=this.getPageSize();z=Math.max(z,E.x*G.width);B=Math.max(B,E.y*G.height)}return new mxPoint(this.snap(z+t),this.snap(B+t))};Graph.prototype.getFreeInsertPoint=function(){var t=this.view,z=this.getGraphBounds(),B=this.getInsertPoint(),E=this.snap(Math.round(Math.max(B.x,
-z.x/t.scale-t.translate.x+(0==z.width?2*this.gridSize:0))));t=this.snap(Math.round(Math.max(B.y,(z.y+z.height)/t.scale-t.translate.y+2*this.gridSize)));return new mxPoint(E,t)};Graph.prototype.getCenterInsertPoint=function(t){t=null!=t?t:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
-2)/this.view.scale-this.view.translate.y-t.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-t.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(t,z,B){var E=new mxCell;E.value="Text";E.geometry=new mxGeometry(0,0,0,0);E.vertex=!0;if(null!=B&&this.model.isEdge(B.cell)){E.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
-E.geometry.relative=!0;E.connectable=!1;var G=this.view.getRelativePoint(B,t,z);E.geometry.x=Math.round(1E4*G.x)/1E4;E.geometry.y=Math.round(G.y);E.geometry.offset=new mxPoint(0,0);G=this.view.getPoint(B,E.geometry);var M=this.view.scale;E.geometry.offset=new mxPoint(Math.round((t-G.x)/M),Math.round((z-G.y)/M))}else G=this.view.translate,E.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",E.geometry.width=40,E.geometry.height=20,E.geometry.x=Math.round(t/this.view.scale)-
-G.x-(null!=B?B.origin.x:0),E.geometry.y=Math.round(z/this.view.scale)-G.y-(null!=B?B.origin.y:0),E.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([E],null!=B?B.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[E])),this.autoSizeCell(E)}finally{this.getModel().endUpdate()}return E};Graph.prototype.addClickHandler=function(t,z,B){var E=mxUtils.bind(this,function(){var da=this.container.getElementsByTagName("a");if(null!=da)for(var ja=0;ja<da.length;ja++){var sa=
-this.getAbsoluteUrl(da[ja].getAttribute("href"));null!=sa&&(da[ja].setAttribute("rel",this.linkRelation),da[ja].setAttribute("href",sa),null!=z&&mxEvent.addGestureListeners(da[ja],null,null,z))}});this.model.addListener(mxEvent.CHANGE,E);E();var G=this.container.style.cursor,M=this.getTolerance(),X=this,ia={currentState:null,currentLink:null,currentTarget:null,highlight:null!=t&&""!=t&&t!=mxConstants.NONE?new mxCellHighlight(X,t,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(da){var ja=
-da.sourceState;if(null==ja||null==X.getLinkForCell(ja.cell))da=X.getCellAt(da.getGraphX(),da.getGraphY(),null,null,null,function(sa,Ba,Da){return null==X.getLinkForCell(sa.cell)}),ja=null==ja||X.model.isAncestor(da,ja.cell)?X.view.getState(da):null;ja!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=ja,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(da,ja){this.startX=ja.getGraphX();this.startY=ja.getGraphY();this.scrollLeft=X.container.scrollLeft;
-this.scrollTop=X.container.scrollTop;null==this.currentLink&&"auto"==X.container.style.overflow&&(X.container.style.cursor="move");this.updateCurrentState(ja)},mouseMove:function(da,ja){if(X.isMouseDown)null!=this.currentLink&&(da=Math.abs(this.startX-ja.getGraphX()),ja=Math.abs(this.startY-ja.getGraphY()),(da>M||ja>M)&&this.clear());else{for(da=ja.getSource();null!=da&&"a"!=da.nodeName.toLowerCase();)da=da.parentNode;null!=da?this.clear():(null!=X.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&
-X.tooltipHandler.reset(ja,!0,this.currentState),(null==this.currentState||ja.getState()!=this.currentState&&null!=ja.sourceState||!X.intersects(this.currentState,ja.getGraphX(),ja.getGraphY()))&&this.updateCurrentState(ja))}},mouseUp:function(da,ja){var sa=ja.getSource();for(da=ja.getEvent();null!=sa&&"a"!=sa.nodeName.toLowerCase();)sa=sa.parentNode;null==sa&&Math.abs(this.scrollLeft-X.container.scrollLeft)<M&&Math.abs(this.scrollTop-X.container.scrollTop)<M&&(null==ja.sourceState||!ja.isSource(ja.sourceState.control))&&
-((mxEvent.isLeftMouseButton(da)||mxEvent.isMiddleMouseButton(da))&&!mxEvent.isPopupTrigger(da)||mxEvent.isTouchEvent(da))&&(null!=this.currentLink?(sa=X.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&sa||null==z||z(da,this.currentLink),mxEvent.isConsumed(da)||(da=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(da)?"_blank":sa?X.linkTarget:"_top",X.openLink(this.currentLink,da),ja.consume())):null!=B&&!ja.isConsumed()&&Math.abs(this.scrollLeft-X.container.scrollLeft)<
-M&&Math.abs(this.scrollTop-X.container.scrollTop)<M&&Math.abs(this.startX-ja.getGraphX())<M&&Math.abs(this.startY-ja.getGraphY())<M&&B(ja.getEvent()));this.clear()},activate:function(da){this.currentLink=X.getAbsoluteUrl(X.getLinkForCell(da.cell));null!=this.currentLink&&(this.currentTarget=X.getLinkTargetForCell(da.cell),X.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(da))},clear:function(){null!=X.container&&(X.container.style.cursor=G);this.currentLink=this.currentState=
-this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=X.tooltipHandler&&X.tooltipHandler.hide()}};X.click=function(da){};X.addMouseListener(ia);mxEvent.addListener(document,"mouseleave",function(da){ia.clear()})};Graph.prototype.duplicateCells=function(t,z){t=null!=t?t:this.getSelectionCells();z=null!=z?z:!0;for(var B=0;B<t.length;B++)this.isTableCell(t[B])&&(t[B]=this.model.getParent(t[B]));t=this.model.getTopmostCells(t);var E=this.getModel(),G=this.gridSize,M=[];E.beginUpdate();
-try{var X={},ia=this.createCellLookup(t),da=this.cloneCells(t,!1,X,!0);for(B=0;B<t.length;B++){var ja=E.getParent(t[B]);if(null!=ja){var sa=this.moveCells([da[B]],G,G,!1)[0];M.push(sa);if(z)E.add(ja,da[B]);else{var Ba=ja.getIndex(t[B]);E.add(ja,da[B],Ba+1)}if(this.isTable(ja)){var Da=this.getCellGeometry(da[B]),Ma=this.getCellGeometry(ja);null!=Da&&null!=Ma&&(Ma=Ma.clone(),Ma.height+=Da.height,E.setGeometry(ja,Ma))}}else M.push(da[B])}this.updateCustomLinks(this.createCellMapping(X,ia),da,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,
-"cells",da))}finally{E.endUpdate()}return M};Graph.prototype.insertImage=function(t,z,B){if(null!=t&&null!=this.cellEditor.textarea){for(var E=this.cellEditor.textarea.getElementsByTagName("img"),G=[],M=0;M<E.length;M++)G.push(E[M]);document.execCommand("insertimage",!1,t);t=this.cellEditor.textarea.getElementsByTagName("img");if(t.length==G.length+1)for(M=t.length-1;0<=M;M--)if(0==M||t[M]!=G[M-1]){t[M].setAttribute("width",z);t[M].setAttribute("height",B);break}}};Graph.prototype.insertLink=function(t){if(null!=
-this.cellEditor.textarea)if(0==t.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var z=this.cellEditor.textarea.getElementsByTagName("a"),B=[],E=0;E<z.length;E++)B.push(z[E]);document.execCommand("createlink",!1,mxUtils.trim(t));z=this.cellEditor.textarea.getElementsByTagName("a");if(z.length==B.length+1)for(E=z.length-1;0<=E;E--)if(z[E]!=B[E-1]){for(z=z[E].getElementsByTagName("a");0<z.length;){for(B=z[0].parentNode;null!=z[0].firstChild;)B.insertBefore(z[0].firstChild,z[0]);
-B.removeChild(z[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(t))};Graph.prototype.isCellResizable=function(t){var z=mxGraph.prototype.isCellResizable.apply(this,arguments),B=this.getCurrentCellStyle(t);return!this.isTableCell(t)&&!this.isTableRow(t)&&(z||"0"!=mxUtils.getValue(B,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==B[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(t,z){null==z&&(z=this.getSelectionCells());if(null!=z&&1<z.length){for(var B=[],E=null,
-G=null,M=0;M<z.length;M++)if(this.getModel().isVertex(z[M])){var X=this.view.getState(z[M]);if(null!=X){var ia=t?X.getCenterX():X.getCenterY();E=null!=E?Math.max(E,ia):ia;G=null!=G?Math.min(G,ia):ia;B.push(X)}}if(2<B.length){B.sort(function(Ba,Da){return t?Ba.x-Da.x:Ba.y-Da.y});X=this.view.translate;ia=this.view.scale;G=G/ia-(t?X.x:X.y);E=E/ia-(t?X.x:X.y);this.getModel().beginUpdate();try{var da=(E-G)/(B.length-1);E=G;for(M=1;M<B.length-1;M++){var ja=this.view.getState(this.model.getParent(B[M].cell)),
-sa=this.getCellGeometry(B[M].cell);E+=da;null!=sa&&null!=ja&&(sa=sa.clone(),t?sa.x=Math.round(E-sa.width/2)-ja.origin.x:sa.y=Math.round(E-sa.height/2)-ja.origin.y,this.getModel().setGeometry(B[M].cell,sa))}}finally{this.getModel().endUpdate()}}}return z};Graph.prototype.isCloneEvent=function(t){return mxClient.IS_MAC&&mxEvent.isMetaDown(t)||mxEvent.isControlDown(t)};Graph.prototype.createSvgImageExport=function(){var t=new mxImageExport;t.getLinkForCellState=mxUtils.bind(this,function(z,B){return this.getLinkForCell(z.cell)});
-return t};Graph.prototype.parseBackgroundImage=function(t){var z=null;null!=t&&0<t.length&&(t=JSON.parse(t),z=new mxImage(t.src,t.width,t.height));return z};Graph.prototype.getBackgroundImageObject=function(t){return t};Graph.prototype.getSvg=function(t,z,B,E,G,M,X,ia,da,ja,sa,Ba,Da,Ma){var La=null;if(null!=Ma)for(La=new mxDictionary,sa=0;sa<Ma.length;sa++)La.put(Ma[sa],!0);if(Ma=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{z=null!=z?z:1;B=null!=B?
-B:0;G=null!=G?G:!0;M=null!=M?M:!0;X=null!=X?X:!0;ja=null!=ja?ja:!1;var Ia="page"==Da?this.view.getBackgroundPageBounds():M&&null==La||E||"diagram"==Da?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),Ea=this.view.scale;"diagram"==Da&&null!=this.backgroundImage&&(Ia=mxRectangle.fromRectangle(Ia),Ia.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*Ea,(this.view.translate.y+this.backgroundImage.y)*Ea,this.backgroundImage.width*Ea,this.backgroundImage.height*Ea)));
-if(null==Ia)throw Error(mxResources.get("drawingEmpty"));E=z/Ea;Da=G?-.5:0;var Fa=Graph.createSvgNode(Da,Da,Math.max(1,Math.ceil(Ia.width*E)+2*B)+(ja&&0==B?5:0),Math.max(1,Math.ceil(Ia.height*E)+2*B)+(ja&&0==B?5:0),t),Oa=Fa.ownerDocument,Pa=null!=Oa.createElementNS?Oa.createElementNS(mxConstants.NS_SVG,"g"):Oa.createElement("g");Fa.appendChild(Pa);var Na=this.createSvgCanvas(Pa);Na.foOffset=G?-.5:0;Na.textOffset=G?-.5:0;Na.imageOffset=G?-.5:0;Na.translate(Math.floor(B/z-Ia.x/Ea),Math.floor(B/z-Ia.y/
-Ea));var Sa=document.createElement("div"),eb=Na.getAlternateText;Na.getAlternateText=function(ab,mb,Xa,ib,gb,Wa,qb,tb,nb,fb,Ra,rb,xb){if(null!=Wa&&0<this.state.fontSize)try{mxUtils.isNode(Wa)?Wa=Wa.innerText:(Sa.innerHTML=Wa,Wa=mxUtils.extractTextWithWhitespace(Sa.childNodes));for(var kb=Math.ceil(2*ib/this.state.fontSize),hb=[],ob=0,lb=0;(0==kb||ob<kb)&&lb<Wa.length;){var sb=Wa.charCodeAt(lb);if(10==sb||13==sb){if(0<ob)break}else hb.push(Wa.charAt(lb)),255>sb&&ob++;lb++}hb.length<Wa.length&&1<Wa.length-
-hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(c){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var Za=this.backgroundImage;if(null!=Za){t=Ea/z;var pb=this.view.translate;Da=new mxRectangle((Za.x+pb.x)*t,(Za.y+pb.y)*t,Za.width*t,Za.height*t);mxUtils.intersects(Ia,Da)&&Na.image(Za.x+pb.x,Za.y+pb.y,Za.width,Za.height,Za.src,!0)}Na.scale(E);Na.textEnabled=X;ia=null!=ia?ia:this.createSvgImageExport();var ub=ia.drawCellState,vb=ia.getLinkForCellState;ia.getLinkForCellState=
-function(ab,mb){var Xa=vb.apply(this,arguments);return null==Xa||ab.view.graph.isCustomLink(Xa)?null:Xa};ia.getLinkTargetForCellState=function(ab,mb){return ab.view.graph.getLinkTargetForCell(ab.cell)};ia.drawCellState=function(ab,mb){for(var Xa=ab.view.graph,ib=null!=La?La.get(ab.cell):Xa.isCellSelected(ab.cell),gb=Xa.model.getParent(ab.cell);!(M&&null==La||ib)&&null!=gb;)ib=null!=La?La.get(gb):Xa.isCellSelected(gb),gb=Xa.model.getParent(gb);(M&&null==La||ib)&&ub.apply(this,arguments)};ia.drawState(this.getView().getState(this.model.root),
-Na);this.updateSvgLinks(Fa,da,!0);this.addForeignObjectWarning(Na,Fa);return Fa}finally{Ma&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(t,z){if("0"!=urlParams["svg-warning"]&&0<z.getElementsByTagName("foreignObject").length){var B=t.createElement("switch"),E=t.createElement("g");E.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var G=t.createElement("a");G.setAttribute("transform","translate(0,-5)");
-null==G.setAttributeNS||z.ownerDocument!=document&&null==document.documentMode?(G.setAttribute("xlink:href",Graph.foreignObjectWarningLink),G.setAttribute("target","_blank")):(G.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),G.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));t=t.createElement("text");t.setAttribute("text-anchor","middle");t.setAttribute("font-size","10px");t.setAttribute("x","50%");t.setAttribute("y","100%");mxUtils.write(t,Graph.foreignObjectWarningText);
-B.appendChild(E);G.appendChild(t);B.appendChild(G);z.appendChild(B)}};Graph.prototype.updateSvgLinks=function(t,z,B){t=t.getElementsByTagName("a");for(var E=0;E<t.length;E++)if(null==t[E].getAttribute("target")){var G=t[E].getAttribute("href");null==G&&(G=t[E].getAttribute("xlink:href"));null!=G&&(null!=z&&/^https?:\/\//.test(G)?t[E].setAttribute("target",z):B&&this.isCustomLink(G)&&t[E].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(t){t=new mxSvgCanvas2D(t);
+Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var t=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=t&&(new mxCodec(t.ownerDocument)).decode(t,this.getStylesheet())};Graph.prototype.createCellLookup=function(t,z){z=null!=z?z:{};for(var A=0;A<t.length;A++){var E=t[A];z[mxObjectIdentity.get(E)]=E.getId();for(var H=this.model.getChildCount(E),
+K=0;K<H;K++)this.createCellLookup([this.model.getChildAt(E,K)],z)}return z};Graph.prototype.createCellMapping=function(t,z,A){A=null!=A?A:{};for(var E in t){var H=z[E];null==A[H]&&(A[H]=t[E].getId()||"")}return A};Graph.prototype.importGraphModel=function(t,z,A,E){z=null!=z?z:0;A=null!=A?A:0;var H=new mxCodec(t.ownerDocument),K=new mxGraphModel;H.decode(t,K);t=[];H={};var X={},ja=K.getChildren(this.cloneCell(K.root,this.isCloneInvalidEdges(),H));if(null!=ja){var ea=this.createCellLookup([K.root]);
+ja=ja.slice();this.model.beginUpdate();try{if(1!=ja.length||this.isCellLocked(this.getDefaultParent()))for(K=0;K<ja.length;K++)ka=this.model.getChildren(this.moveCells([ja[K]],z,A,!1,this.model.getRoot())[0]),null!=ka&&(t=t.concat(ka));else{var ka=K.getChildren(ja[0]);null!=ka&&(t=this.moveCells(ka,z,A,!1,this.getDefaultParent()),X[K.getChildAt(K.root,0).getId()]=this.getDefaultParent().getId())}if(null!=t&&(this.createCellMapping(H,ea,X),this.updateCustomLinks(X,t),E)){this.isGridEnabled()&&(z=this.snap(z),
+A=this.snap(A));var ta=this.getBoundingBoxFromGeometry(t,!0);null!=ta&&this.moveCells(t,z-ta.x,A-ta.y)}}finally{this.model.endUpdate()}}return t};Graph.prototype.encodeCells=function(t){for(var z={},A=this.cloneCells(t,null,z),E=new mxDictionary,H=0;H<t.length;H++)E.put(t[H],!0);var K=new mxCodec,X=new mxGraphModel,ja=X.getChildAt(X.getRoot(),0);for(H=0;H<A.length;H++){X.add(ja,A[H]);var ea=this.view.getState(t[H]);if(null!=ea){var ka=this.getCellGeometry(A[H]);null!=ka&&ka.relative&&!this.model.isEdge(t[H])&&
+null==E.get(this.model.getParent(t[H]))&&(ka.offset=null,ka.relative=!1,ka.x=ea.x/ea.view.scale-ea.view.translate.x,ka.y=ea.y/ea.view.scale-ea.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(z,this.createCellLookup(t)),A);return K.encode(X)};Graph.prototype.isSwimlane=function(t,z){var A=null;null==t||this.model.isEdge(t)||this.model.getParent(t)==this.model.getRoot()||(A=this.getCurrentCellStyle(t,z)[mxConstants.STYLE_SHAPE]);return A==mxConstants.SHAPE_SWIMLANE||"table"==A||"tableRow"==
+A};var n=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(t){var z=this.model.getParent(t);if(null!=z){var A=this.getCurrentCellStyle(z);if(null!=A.expand)return"0"!=A.expand}return n.apply(this,arguments)&&(null==z||!this.isTable(z))};var u=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(t,z,A,E,H,K,X,ja){null==ja&&(ja=this.model.getParent(t),this.isTable(ja)||this.isTableRow(ja))&&(ja=this.getCellAt(K,X,null,!0,!1));A=null;this.model.beginUpdate();try{A=u.apply(this,
+[t,z,A,E,H,K,X,ja]);this.model.setValue(A,"");var ea=this.getChildCells(A,!0);for(z=0;z<ea.length;z++){var ka=this.getCellGeometry(ea[z]);null!=ka&&ka.relative&&0<ka.x&&this.model.remove(ea[z])}var ta=this.getChildCells(t,!0);for(z=0;z<ta.length;z++)ka=this.getCellGeometry(ta[z]),null!=ka&&ka.relative&&0>=ka.x&&this.model.remove(ta[z]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[A]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[A]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+null,[t]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[t]);var Aa=this.model.getTerminal(A,!1);if(null!=Aa){var Ea=this.getCurrentCellStyle(Aa);null!=Ea&&"1"==Ea.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[t]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[t]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[A]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[A]))}}finally{this.model.endUpdate()}return A};var m=Graph.prototype.selectCell;Graph.prototype.selectCell=
+function(t,z,A){if(z||A)m.apply(this,arguments);else{var E=this.getSelectionCell(),H=null,K=[],X=mxUtils.bind(this,function(ja){if(null!=this.view.getState(ja)&&(this.model.isVertex(ja)||this.model.isEdge(ja)))if(K.push(ja),ja==E)H=K.length-1;else if(t&&null==E&&0<K.length||null!=H&&t&&K.length>H||!t&&0<H)return;for(var ea=0;ea<this.model.getChildCount(ja);ea++)X(this.model.getChildAt(ja,ea))});X(this.model.root);0<K.length&&(H=null!=H?mxUtils.mod(H+(t?1:-1),K.length):0,this.setSelectionCell(K[H]))}};
+Graph.prototype.swapShapes=function(t,z,A,E,H,K,X){z=!1;if(!E&&null!=H&&1==t.length&&(E=this.view.getState(H),A=this.view.getState(t[0]),null!=E&&null!=A&&(null!=K&&mxEvent.isShiftDown(K)||"umlLifeline"==E.style.shape&&"umlLifeline"==A.style.shape)&&(E=this.getCellGeometry(H),K=this.getCellGeometry(t[0]),null!=E&&null!=K))){z=E.clone();E=K.clone();E.x=z.x;E.y=z.y;z.x=K.x;z.y=K.y;this.model.beginUpdate();try{this.model.setGeometry(H,z),this.model.setGeometry(t[0],E)}finally{this.model.endUpdate()}z=
+!0}return z};var r=Graph.prototype.moveCells;Graph.prototype.moveCells=function(t,z,A,E,H,K,X){if(this.swapShapes(t,z,A,E,H,K,X))return t;X=null!=X?X:{};if(this.isTable(H)){for(var ja=[],ea=0;ea<t.length;ea++)this.isTable(t[ea])?ja=ja.concat(this.model.getChildCells(t[ea],!0).reverse()):ja.push(t[ea]);t=ja}this.model.beginUpdate();try{ja=[];for(ea=0;ea<t.length;ea++)if(null!=H&&this.isTableRow(t[ea])){var ka=this.model.getParent(t[ea]),ta=this.getCellGeometry(t[ea]);this.isTable(ka)&&ja.push(ka);
+if(null!=ka&&null!=ta&&this.isTable(ka)&&this.isTable(H)&&(E||ka!=H)){if(!E){var Aa=this.getCellGeometry(ka);null!=Aa&&(Aa=Aa.clone(),Aa.height-=ta.height,this.model.setGeometry(ka,Aa))}Aa=this.getCellGeometry(H);null!=Aa&&(Aa=Aa.clone(),Aa.height+=ta.height,this.model.setGeometry(H,Aa));var Ea=this.model.getChildCells(H,!0);if(0<Ea.length){t[ea]=E?this.cloneCell(t[ea]):t[ea];var Ma=this.model.getChildCells(t[ea],!0),La=this.model.getChildCells(Ea[0],!0),Ia=La.length-Ma.length;if(0<Ia)for(var Fa=
+0;Fa<Ia;Fa++){var Ga=this.cloneCell(Ma[Ma.length-1]);null!=Ga&&(Ga.value="",this.model.add(t[ea],Ga))}else if(0>Ia)for(Fa=0;Fa>Ia;Fa--)this.model.remove(Ma[Ma.length+Fa-1]);Ma=this.model.getChildCells(t[ea],!0);for(Fa=0;Fa<La.length;Fa++){var Oa=this.getCellGeometry(La[Fa]),Pa=this.getCellGeometry(Ma[Fa]);null!=Oa&&null!=Pa&&(Pa=Pa.clone(),Pa.width=Oa.width,this.model.setGeometry(Ma[Fa],Pa))}}}}var Na=r.apply(this,arguments);for(ea=0;ea<ja.length;ea++)!E&&this.model.contains(ja[ea])&&0==this.model.getChildCount(ja[ea])&&
+this.model.remove(ja[ea]);E&&this.updateCustomLinks(this.createCellMapping(X,this.createCellLookup(t)),Na)}finally{this.model.endUpdate()}return Na};var x=Graph.prototype.removeCells;Graph.prototype.removeCells=function(t,z){var A=[];this.model.beginUpdate();try{for(var E=0;E<t.length;E++)if(this.isTableCell(t[E])){var H=this.model.getParent(t[E]),K=this.model.getParent(H);1==this.model.getChildCount(H)&&1==this.model.getChildCount(K)?0>mxUtils.indexOf(t,K)&&0>mxUtils.indexOf(A,K)&&A.push(K):this.labelChanged(t[E],
+"")}else{if(this.isTableRow(t[E])&&(K=this.model.getParent(t[E]),0>mxUtils.indexOf(t,K)&&0>mxUtils.indexOf(A,K))){for(var X=this.model.getChildCells(K,!0),ja=0,ea=0;ea<X.length;ea++)0<=mxUtils.indexOf(t,X[ea])&&ja++;ja==X.length&&A.push(K)}A.push(t[E])}A=x.apply(this,[A,z])}finally{this.model.endUpdate()}return A};Graph.prototype.updateCustomLinks=function(t,z,A){A=null!=A?A:new Graph;for(var E=0;E<z.length;E++)null!=z[E]&&A.updateCustomLinksForCell(t,z[E],A)};Graph.prototype.updateCustomLinksForCell=
+function(t,z){this.doUpdateCustomLinksForCell(t,z);for(var A=this.model.getChildCount(z),E=0;E<A;E++)this.updateCustomLinksForCell(t,this.model.getChildAt(z,E))};Graph.prototype.doUpdateCustomLinksForCell=function(t,z){};Graph.prototype.getAllConnectionConstraints=function(t,z){if(null!=t){z=mxUtils.getValue(t.style,"points",null);if(null!=z){t=[];try{var A=JSON.parse(z);for(z=0;z<A.length;z++){var E=A[z];t.push(new mxConnectionConstraint(new mxPoint(E[0],E[1]),2<E.length?"0"!=E[2]:!0,null,3<E.length?
+E[3]:0,4<E.length?E[4]:0))}}catch(K){}return t}if(null!=t.shape&&null!=t.shape.bounds){E=t.shape.direction;z=t.shape.bounds;var H=t.shape.scale;A=z.width/H;z=z.height/H;if(E==mxConstants.DIRECTION_NORTH||E==mxConstants.DIRECTION_SOUTH)E=A,A=z,z=E;z=t.shape.getConstraints(t.style,A,z);if(null!=z)return z;if(null!=t.shape.stencil&&null!=t.shape.stencil.constraints)return t.shape.stencil.constraints;if(null!=t.shape.constraints)return t.shape.constraints}}return null};Graph.prototype.flipEdge=function(t){if(null!=
+t){var z=this.getCurrentCellStyle(t);z=mxUtils.getValue(z,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,z,[t])}};Graph.prototype.isValidRoot=function(t){for(var z=this.model.getChildCount(t),A=0,E=0;E<z;E++){var H=this.model.getChildAt(t,E);this.model.isVertex(H)&&(H=this.getCellGeometry(H),null==H||H.relative||A++)}return 0<A||this.isContainer(t)};Graph.prototype.isValidDropTarget=
+function(t,z,A){for(var E=this.getCurrentCellStyle(t),H=!0,K=!0,X=0;X<z.length&&K;X++)H=H&&this.isTable(z[X]),K=K&&this.isTableRow(z[X]);return(1==z.length&&null!=A&&mxEvent.isShiftDown(A)&&!mxEvent.isControlDown(A)&&!mxEvent.isAltDown(A)||("1"!=mxUtils.getValue(E,"part","0")||this.isContainer(t))&&"0"!=mxUtils.getValue(E,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(t))&&!this.isTableRow(t)&&(!this.isTable(t)||K||H))&&!this.isCellLocked(t)};Graph.prototype.createGroupCell=
+function(){var t=mxGraph.prototype.createGroupCell.apply(this,arguments);t.setStyle("group");return t};Graph.prototype.isExtendParentsOnAdd=function(t){var z=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(z&&null!=t&&null!=this.layoutManager){var A=this.model.getParent(t);null!=A&&(A=this.layoutManager.getLayout(A),null!=A&&A.constructor==mxStackLayout&&(z=!1))}return z};Graph.prototype.getPreferredSizeForCell=function(t){var z=mxGraph.prototype.getPreferredSizeForCell.apply(this,
+arguments);null!=z&&(z.width+=10,z.height+=4,this.gridEnabled&&(z.width=this.snap(z.width),z.height=this.snap(z.height)));return z};Graph.prototype.turnShapes=function(t,z){var A=this.getModel(),E=[];A.beginUpdate();try{for(var H=0;H<t.length;H++){var K=t[H];if(A.isEdge(K)){var X=A.getTerminal(K,!0),ja=A.getTerminal(K,!1);A.setTerminal(K,ja,!0);A.setTerminal(K,X,!1);var ea=A.getGeometry(K);if(null!=ea){ea=ea.clone();null!=ea.points&&ea.points.reverse();var ka=ea.getTerminalPoint(!0),ta=ea.getTerminalPoint(!1);
+ea.setTerminalPoint(ka,!1);ea.setTerminalPoint(ta,!0);A.setGeometry(K,ea);var Aa=this.view.getState(K),Ea=this.view.getState(X),Ma=this.view.getState(ja);if(null!=Aa){var La=null!=Ea?this.getConnectionConstraint(Aa,Ea,!0):null,Ia=null!=Ma?this.getConnectionConstraint(Aa,Ma,!1):null;this.setConnectionConstraint(K,X,!0,Ia);this.setConnectionConstraint(K,ja,!1,La);var Fa=mxUtils.getValue(Aa.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+mxUtils.getValue(Aa.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[K]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,Fa,[K])}E.push(K)}}else if(A.isVertex(K)&&(ea=this.getCellGeometry(K),null!=ea)){if(!(this.isTable(K)||this.isTableRow(K)||this.isTableCell(K)||this.isSwimlane(K))){ea=ea.clone();ea.x+=ea.width/2-ea.height/2;ea.y+=ea.height/2-ea.width/2;var Ga=ea.width;ea.width=ea.height;ea.height=Ga;A.setGeometry(K,ea)}var Oa=this.view.getState(K);if(null!=Oa){var Pa=[mxConstants.DIRECTION_EAST,
+mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Na=mxUtils.getValue(Oa.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Pa[mxUtils.mod(mxUtils.indexOf(Pa,Na)+(z?-1:1),Pa.length)],[K])}E.push(K)}}}finally{A.endUpdate()}return E};Graph.prototype.stencilHasPlaceholders=function(t){if(null!=t&&null!=t.fgNode)for(t=t.fgNode.firstChild;null!=t;){if("text"==t.nodeName&&"1"==t.getAttribute("placeholders"))return!0;
+t=t.nextSibling}return!1};var B=Graph.prototype.processChange;Graph.prototype.processChange=function(t){if(t instanceof mxGeometryChange&&(this.isTableCell(t.cell)||this.isTableRow(t.cell))&&(null==t.previous&&null!=t.geometry||null!=t.previous&&!t.previous.equals(t.geometry))){var z=t.cell;this.isTableCell(z)&&(z=this.model.getParent(z));this.isTableRow(z)&&(z=this.model.getParent(z));var A=this.view.getState(z);null!=A&&null!=A.shape&&(this.view.invalidate(z),A.shape.bounds=null)}B.apply(this,arguments);
+t instanceof mxValueChange&&null!=t.cell&&null!=t.cell.value&&"object"==typeof t.cell.value&&this.invalidateDescendantsWithPlaceholders(t.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(t){t=this.model.getDescendants(t);if(0<t.length)for(var z=0;z<t.length;z++){var A=this.view.getState(t[z]);null!=A&&null!=A.shape&&null!=A.shape.stencil&&this.stencilHasPlaceholders(A.shape.stencil)?this.removeStateForCell(t[z]):this.isReplacePlaceholders(t[z])&&this.view.invalidate(t[z],!1,!1)}};
+Graph.prototype.replaceElement=function(t,z){z=t.ownerDocument.createElement(null!=z?z:"span");for(var A=Array.prototype.slice.call(t.attributes);attr=A.pop();)z.setAttribute(attr.nodeName,attr.nodeValue);z.innerHTML=t.innerHTML;t.parentNode.replaceChild(z,t)};Graph.prototype.processElements=function(t,z){if(null!=t){t=t.getElementsByTagName("*");for(var A=0;A<t.length;A++)z(t[A])}};Graph.prototype.updateLabelElements=function(t,z,A){t=null!=t?t:this.getSelectionCells();for(var E=document.createElement("div"),
+H=0;H<t.length;H++)if(this.isHtmlLabel(t[H])){var K=this.convertValueToString(t[H]);if(null!=K&&0<K.length){E.innerHTML=K;for(var X=E.getElementsByTagName(null!=A?A:"*"),ja=0;ja<X.length;ja++)z(X[ja]);E.innerHTML!=K&&this.cellLabelChanged(t[H],E.innerHTML)}}};Graph.prototype.cellLabelChanged=function(t,z,A){z=Graph.zapGremlins(z);this.model.beginUpdate();try{if(null!=t.value&&"object"==typeof t.value){if(this.isReplacePlaceholders(t)&&null!=t.getAttribute("placeholder"))for(var E=t.getAttribute("placeholder"),
+H=t;null!=H;){if(H==this.model.getRoot()||null!=H.value&&"object"==typeof H.value&&H.hasAttribute(E)){this.setAttributeForCell(H,E,z);break}H=this.model.getParent(H)}var K=t.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&K.hasAttribute("label_"+Graph.diagramLanguage)?K.setAttribute("label_"+Graph.diagramLanguage,z):K.setAttribute("label",z);z=K}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(t){if(null!=
+t){for(var z=new mxDictionary,A=0;A<t.length;A++)z.put(t[A],!0);var E=[];for(A=0;A<t.length;A++){var H=this.model.getParent(t[A]);null==H||z.get(H)||(z.put(H,!0),E.push(H))}for(A=0;A<E.length;A++)if(H=this.view.getState(E[A]),null!=H&&(this.model.isEdge(H.cell)||this.model.isVertex(H.cell))&&this.isCellDeletable(H.cell)&&this.isTransparentState(H)){for(var K=!0,X=0;X<this.model.getChildCount(H.cell)&&K;X++)z.get(this.model.getChildAt(H.cell,X))||(K=!1);K&&t.push(H.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
+arguments)};Graph.prototype.removeCellsAfterUngroup=function(t){for(var z=[],A=0;A<t.length;A++)this.isCellDeletable(t[A])&&this.isTransparentState(this.view.getState(t[A]))&&z.push(t[A]);t=z;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(t,z){this.setAttributeForCell(t,"link",z)};Graph.prototype.setTooltipForCell=function(t,z){var A="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(t.value)&&t.value.hasAttribute("tooltip_"+
+Graph.diagramLanguage)&&(A="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(t,A,z)};Graph.prototype.getAttributeForCell=function(t,z,A){t=null!=t.value&&"object"===typeof t.value?t.value.getAttribute(z):null;return null!=t?t:A};Graph.prototype.setAttributeForCell=function(t,z,A){if(null!=t.value&&"object"==typeof t.value)var E=t.value.cloneNode(!0);else E=mxUtils.createXmlDocument().createElement("UserObject"),E.setAttribute("label",t.value||"");null!=A?E.setAttribute(z,A):E.removeAttribute(z);
+this.model.setValue(t,E)};var C=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(t,z,A,E){this.getModel();if(mxEvent.isAltDown(z))return null;for(var H=0;H<t.length;H++){var K=this.model.getParent(t[H]);if(this.model.isEdge(K)&&0>mxUtils.indexOf(t,K))return null}K=C.apply(this,arguments);var X=!0;for(H=0;H<t.length&&X;H++)X=X&&this.isTableRow(t[H]);X&&(this.isTableCell(K)&&(K=this.model.getParent(K)),this.isTableRow(K)&&(K=this.model.getParent(K)),this.isTable(K)||(K=null));return K};
+Graph.prototype.click=function(t){mxGraph.prototype.click.call(this,t);this.firstClickState=t.getState();this.firstClickSource=t.getSource()};Graph.prototype.dblClick=function(t,z){this.isEnabled()&&(z=this.insertTextForEvent(t,z),mxGraph.prototype.dblClick.call(this,t,z))};Graph.prototype.insertTextForEvent=function(t,z){var A=mxUtils.convertPoint(this.container,mxEvent.getClientX(t),mxEvent.getClientY(t));if(null!=t&&!this.model.isVertex(z)){var E=this.model.isEdge(z)?this.view.getState(z):null,
+H=mxEvent.getSource(t);this.firstClickState!=E||this.firstClickSource!=H||null!=E&&null!=E.text&&null!=E.text.node&&null!=E.text.boundingBox&&(mxUtils.contains(E.text.boundingBox,A.x,A.y)||mxUtils.isAncestorNode(E.text.node,mxEvent.getSource(t)))||(null!=E||this.isCellLocked(this.getDefaultParent()))&&(null==E||this.isCellLocked(E.cell))||!(null!=E||mxClient.IS_SVG&&H==this.view.getCanvas().ownerSVGElement)||(null==E&&(E=this.view.getState(this.getCellAt(A.x,A.y))),z=this.addText(A.x,A.y,E))}return z};
+Graph.prototype.getInsertPoint=function(){var t=this.getGridSize(),z=this.container.scrollLeft/this.view.scale-this.view.translate.x,A=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var E=this.getPageLayout(),H=this.getPageSize();z=Math.max(z,E.x*H.width);A=Math.max(A,E.y*H.height)}return new mxPoint(this.snap(z+t),this.snap(A+t))};Graph.prototype.getFreeInsertPoint=function(){var t=this.view,z=this.getGraphBounds(),A=this.getInsertPoint(),E=this.snap(Math.round(Math.max(A.x,
+z.x/t.scale-t.translate.x+(0==z.width?2*this.gridSize:0))));t=this.snap(Math.round(Math.max(A.y,(z.y+z.height)/t.scale-t.translate.y+2*this.gridSize)));return new mxPoint(E,t)};Graph.prototype.getCenterInsertPoint=function(t){t=null!=t?t:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
+2)/this.view.scale-this.view.translate.y-t.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-t.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-t.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(t,z,A){var E=new mxCell;E.value="Text";E.geometry=new mxGeometry(0,0,0,0);E.vertex=!0;if(null!=A&&this.model.isEdge(A.cell)){E.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
+E.geometry.relative=!0;E.connectable=!1;var H=this.view.getRelativePoint(A,t,z);E.geometry.x=Math.round(1E4*H.x)/1E4;E.geometry.y=Math.round(H.y);E.geometry.offset=new mxPoint(0,0);H=this.view.getPoint(A,E.geometry);var K=this.view.scale;E.geometry.offset=new mxPoint(Math.round((t-H.x)/K),Math.round((z-H.y)/K))}else H=this.view.translate,E.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",E.geometry.width=40,E.geometry.height=20,E.geometry.x=Math.round(t/this.view.scale)-
+H.x-(null!=A?A.origin.x:0),E.geometry.y=Math.round(z/this.view.scale)-H.y-(null!=A?A.origin.y:0),E.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([E],null!=A?A.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[E])),this.autoSizeCell(E)}finally{this.getModel().endUpdate()}return E};Graph.prototype.addClickHandler=function(t,z,A){var E=mxUtils.bind(this,function(){var ea=this.container.getElementsByTagName("a");if(null!=ea)for(var ka=0;ka<ea.length;ka++){var ta=
+this.getAbsoluteUrl(ea[ka].getAttribute("href"));null!=ta&&(ea[ka].setAttribute("rel",this.linkRelation),ea[ka].setAttribute("href",ta),null!=z&&mxEvent.addGestureListeners(ea[ka],null,null,z))}});this.model.addListener(mxEvent.CHANGE,E);E();var H=this.container.style.cursor,K=this.getTolerance(),X=this,ja={currentState:null,currentLink:null,currentTarget:null,highlight:null!=t&&""!=t&&t!=mxConstants.NONE?new mxCellHighlight(X,t,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(ea){var ka=
+ea.sourceState;if(null==ka||null==X.getLinkForCell(ka.cell))ea=X.getCellAt(ea.getGraphX(),ea.getGraphY(),null,null,null,function(ta,Aa,Ea){return null==X.getLinkForCell(ta.cell)}),ka=null==ka||X.model.isAncestor(ea,ka.cell)?X.view.getState(ea):null;ka!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=ka,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(ea,ka){this.startX=ka.getGraphX();this.startY=ka.getGraphY();this.scrollLeft=X.container.scrollLeft;
+this.scrollTop=X.container.scrollTop;null==this.currentLink&&"auto"==X.container.style.overflow&&(X.container.style.cursor="move");this.updateCurrentState(ka)},mouseMove:function(ea,ka){if(X.isMouseDown)null!=this.currentLink&&(ea=Math.abs(this.startX-ka.getGraphX()),ka=Math.abs(this.startY-ka.getGraphY()),(ea>K||ka>K)&&this.clear());else{for(ea=ka.getSource();null!=ea&&"a"!=ea.nodeName.toLowerCase();)ea=ea.parentNode;null!=ea?this.clear():(null!=X.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&
+X.tooltipHandler.reset(ka,!0,this.currentState),(null==this.currentState||ka.getState()!=this.currentState&&null!=ka.sourceState||!X.intersects(this.currentState,ka.getGraphX(),ka.getGraphY()))&&this.updateCurrentState(ka))}},mouseUp:function(ea,ka){var ta=ka.getSource();for(ea=ka.getEvent();null!=ta&&"a"!=ta.nodeName.toLowerCase();)ta=ta.parentNode;null==ta&&Math.abs(this.scrollLeft-X.container.scrollLeft)<K&&Math.abs(this.scrollTop-X.container.scrollTop)<K&&(null==ka.sourceState||!ka.isSource(ka.sourceState.control))&&
+((mxEvent.isLeftMouseButton(ea)||mxEvent.isMiddleMouseButton(ea))&&!mxEvent.isPopupTrigger(ea)||mxEvent.isTouchEvent(ea))&&(null!=this.currentLink?(ta=X.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&ta||null==z||z(ea,this.currentLink),mxEvent.isConsumed(ea)||(ea=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(ea)?"_blank":ta?X.linkTarget:"_top",X.openLink(this.currentLink,ea),ka.consume())):null!=A&&!ka.isConsumed()&&Math.abs(this.scrollLeft-X.container.scrollLeft)<
+K&&Math.abs(this.scrollTop-X.container.scrollTop)<K&&Math.abs(this.startX-ka.getGraphX())<K&&Math.abs(this.startY-ka.getGraphY())<K&&A(ka.getEvent()));this.clear()},activate:function(ea){this.currentLink=X.getAbsoluteUrl(X.getLinkForCell(ea.cell));null!=this.currentLink&&(this.currentTarget=X.getLinkTargetForCell(ea.cell),X.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(ea))},clear:function(){null!=X.container&&(X.container.style.cursor=H);this.currentLink=this.currentState=
+this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=X.tooltipHandler&&X.tooltipHandler.hide()}};X.click=function(ea){};X.addMouseListener(ja);mxEvent.addListener(document,"mouseleave",function(ea){ja.clear()})};Graph.prototype.duplicateCells=function(t,z){t=null!=t?t:this.getSelectionCells();z=null!=z?z:!0;for(var A=0;A<t.length;A++)this.isTableCell(t[A])&&(t[A]=this.model.getParent(t[A]));t=this.model.getTopmostCells(t);var E=this.getModel(),H=this.gridSize,K=[];E.beginUpdate();
+try{var X={},ja=this.createCellLookup(t),ea=this.cloneCells(t,!1,X,!0);for(A=0;A<t.length;A++){var ka=E.getParent(t[A]);if(null!=ka){var ta=this.moveCells([ea[A]],H,H,!1)[0];K.push(ta);if(z)E.add(ka,ea[A]);else{var Aa=ka.getIndex(t[A]);E.add(ka,ea[A],Aa+1)}if(this.isTable(ka)){var Ea=this.getCellGeometry(ea[A]),Ma=this.getCellGeometry(ka);null!=Ea&&null!=Ma&&(Ma=Ma.clone(),Ma.height+=Ea.height,E.setGeometry(ka,Ma))}}else K.push(ea[A])}this.updateCustomLinks(this.createCellMapping(X,ja),ea,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,
+"cells",ea))}finally{E.endUpdate()}return K};Graph.prototype.insertImage=function(t,z,A){if(null!=t&&null!=this.cellEditor.textarea){for(var E=this.cellEditor.textarea.getElementsByTagName("img"),H=[],K=0;K<E.length;K++)H.push(E[K]);document.execCommand("insertimage",!1,t);t=this.cellEditor.textarea.getElementsByTagName("img");if(t.length==H.length+1)for(K=t.length-1;0<=K;K--)if(0==K||t[K]!=H[K-1]){t[K].setAttribute("width",z);t[K].setAttribute("height",A);break}}};Graph.prototype.insertLink=function(t){if(null!=
+this.cellEditor.textarea)if(0==t.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var z=this.cellEditor.textarea.getElementsByTagName("a"),A=[],E=0;E<z.length;E++)A.push(z[E]);document.execCommand("createlink",!1,mxUtils.trim(t));z=this.cellEditor.textarea.getElementsByTagName("a");if(z.length==A.length+1)for(E=z.length-1;0<=E;E--)if(z[E]!=A[E-1]){for(z=z[E].getElementsByTagName("a");0<z.length;){for(A=z[0].parentNode;null!=z[0].firstChild;)A.insertBefore(z[0].firstChild,z[0]);
+A.removeChild(z[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(t))};Graph.prototype.isCellResizable=function(t){var z=mxGraph.prototype.isCellResizable.apply(this,arguments),A=this.getCurrentCellStyle(t);return!this.isTableCell(t)&&!this.isTableRow(t)&&(z||"0"!=mxUtils.getValue(A,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==A[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(t,z){null==z&&(z=this.getSelectionCells());if(null!=z&&1<z.length){for(var A=[],E=null,
+H=null,K=0;K<z.length;K++)if(this.getModel().isVertex(z[K])){var X=this.view.getState(z[K]);if(null!=X){var ja=t?X.getCenterX():X.getCenterY();E=null!=E?Math.max(E,ja):ja;H=null!=H?Math.min(H,ja):ja;A.push(X)}}if(2<A.length){A.sort(function(Aa,Ea){return t?Aa.x-Ea.x:Aa.y-Ea.y});X=this.view.translate;ja=this.view.scale;H=H/ja-(t?X.x:X.y);E=E/ja-(t?X.x:X.y);this.getModel().beginUpdate();try{var ea=(E-H)/(A.length-1);E=H;for(K=1;K<A.length-1;K++){var ka=this.view.getState(this.model.getParent(A[K].cell)),
+ta=this.getCellGeometry(A[K].cell);E+=ea;null!=ta&&null!=ka&&(ta=ta.clone(),t?ta.x=Math.round(E-ta.width/2)-ka.origin.x:ta.y=Math.round(E-ta.height/2)-ka.origin.y,this.getModel().setGeometry(A[K].cell,ta))}}finally{this.getModel().endUpdate()}}}return z};Graph.prototype.isCloneEvent=function(t){return mxClient.IS_MAC&&mxEvent.isMetaDown(t)||mxEvent.isControlDown(t)};Graph.prototype.createSvgImageExport=function(){var t=new mxImageExport;t.getLinkForCellState=mxUtils.bind(this,function(z,A){return this.getLinkForCell(z.cell)});
+return t};Graph.prototype.parseBackgroundImage=function(t){var z=null;null!=t&&0<t.length&&(t=JSON.parse(t),z=new mxImage(t.src,t.width,t.height));return z};Graph.prototype.getBackgroundImageObject=function(t){return t};Graph.prototype.getSvg=function(t,z,A,E,H,K,X,ja,ea,ka,ta,Aa,Ea,Ma){var La=null;if(null!=Ma)for(La=new mxDictionary,ta=0;ta<Ma.length;ta++)La.put(Ma[ta],!0);if(Ma=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{z=null!=z?z:1;A=null!=A?
+A:0;H=null!=H?H:!0;K=null!=K?K:!0;X=null!=X?X:!0;ka=null!=ka?ka:!1;var Ia="page"==Ea?this.view.getBackgroundPageBounds():K&&null==La||E||"diagram"==Ea?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),Fa=this.view.scale;"diagram"==Ea&&null!=this.backgroundImage&&(Ia=mxRectangle.fromRectangle(Ia),Ia.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*Fa,(this.view.translate.y+this.backgroundImage.y)*Fa,this.backgroundImage.width*Fa,this.backgroundImage.height*Fa)));
+if(null==Ia)throw Error(mxResources.get("drawingEmpty"));E=z/Fa;Ea=H?-.5:0;var Ga=Graph.createSvgNode(Ea,Ea,Math.max(1,Math.ceil(Ia.width*E)+2*A)+(ka&&0==A?5:0),Math.max(1,Math.ceil(Ia.height*E)+2*A)+(ka&&0==A?5:0),t),Oa=Ga.ownerDocument,Pa=null!=Oa.createElementNS?Oa.createElementNS(mxConstants.NS_SVG,"g"):Oa.createElement("g");Ga.appendChild(Pa);var Na=this.createSvgCanvas(Pa);Na.foOffset=H?-.5:0;Na.textOffset=H?-.5:0;Na.imageOffset=H?-.5:0;Na.translate(Math.floor(A/z-Ia.x/Fa),Math.floor(A/z-Ia.y/
+Fa));var Sa=document.createElement("div"),eb=Na.getAlternateText;Na.getAlternateText=function(cb,mb,Za,ib,gb,Wa,qb,tb,nb,fb,Ra,rb,xb){if(null!=Wa&&0<this.state.fontSize)try{mxUtils.isNode(Wa)?Wa=Wa.innerText:(Sa.innerHTML=Wa,Wa=mxUtils.extractTextWithWhitespace(Sa.childNodes));for(var kb=Math.ceil(2*ib/this.state.fontSize),hb=[],ob=0,lb=0;(0==kb||ob<kb)&&lb<Wa.length;){var sb=Wa.charCodeAt(lb);if(10==sb||13==sb){if(0<ob)break}else hb.push(Wa.charAt(lb)),255>sb&&ob++;lb++}hb.length<Wa.length&&1<Wa.length-
+hb.length&&(Wa=mxUtils.trim(hb.join(""))+"...");return Wa}catch(c){return eb.apply(this,arguments)}else return eb.apply(this,arguments)};var ab=this.backgroundImage;if(null!=ab){t=Fa/z;var pb=this.view.translate;Ea=new mxRectangle((ab.x+pb.x)*t,(ab.y+pb.y)*t,ab.width*t,ab.height*t);mxUtils.intersects(Ia,Ea)&&Na.image(ab.x+pb.x,ab.y+pb.y,ab.width,ab.height,ab.src,!0)}Na.scale(E);Na.textEnabled=X;ja=null!=ja?ja:this.createSvgImageExport();var ub=ja.drawCellState,vb=ja.getLinkForCellState;ja.getLinkForCellState=
+function(cb,mb){var Za=vb.apply(this,arguments);return null==Za||cb.view.graph.isCustomLink(Za)?null:Za};ja.getLinkTargetForCellState=function(cb,mb){return cb.view.graph.getLinkTargetForCell(cb.cell)};ja.drawCellState=function(cb,mb){for(var Za=cb.view.graph,ib=null!=La?La.get(cb.cell):Za.isCellSelected(cb.cell),gb=Za.model.getParent(cb.cell);!(K&&null==La||ib)&&null!=gb;)ib=null!=La?La.get(gb):Za.isCellSelected(gb),gb=Za.model.getParent(gb);(K&&null==La||ib)&&ub.apply(this,arguments)};ja.drawState(this.getView().getState(this.model.root),
+Na);this.updateSvgLinks(Ga,ea,!0);this.addForeignObjectWarning(Na,Ga);return Ga}finally{Ma&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(t,z){if("0"!=urlParams["svg-warning"]&&0<z.getElementsByTagName("foreignObject").length){var A=t.createElement("switch"),E=t.createElement("g");E.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var H=t.createElement("a");H.setAttribute("transform","translate(0,-5)");
+null==H.setAttributeNS||z.ownerDocument!=document&&null==document.documentMode?(H.setAttribute("xlink:href",Graph.foreignObjectWarningLink),H.setAttribute("target","_blank")):(H.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),H.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));t=t.createElement("text");t.setAttribute("text-anchor","middle");t.setAttribute("font-size","10px");t.setAttribute("x","50%");t.setAttribute("y","100%");mxUtils.write(t,Graph.foreignObjectWarningText);
+A.appendChild(E);H.appendChild(t);A.appendChild(H);z.appendChild(A)}};Graph.prototype.updateSvgLinks=function(t,z,A){t=t.getElementsByTagName("a");for(var E=0;E<t.length;E++)if(null==t[E].getAttribute("target")){var H=t[E].getAttribute("href");null==H&&(H=t[E].getAttribute("xlink:href"));null!=H&&(null!=z&&/^https?:\/\//.test(H)?t[E].setAttribute("target",z):A&&this.isCustomLink(H)&&t[E].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(t){t=new mxSvgCanvas2D(t);
t.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;t.pointerEvents=!0;return t};Graph.prototype.getSelectedElement=function(){var t=null;if(window.getSelection){var z=window.getSelection();z.getRangeAt&&z.rangeCount&&(t=z.getRangeAt(0).commonAncestorContainer)}else document.selection&&(t=document.selection.createRange().parentElement());return t};Graph.prototype.getSelectedEditingElement=function(){for(var t=this.getSelectedElement();null!=t&&t.nodeType!=mxConstants.NODETYPE_ELEMENT;)t=t.parentNode;
-null!=t&&t==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(t=this.cellEditor.textarea.firstChild);return t};Graph.prototype.getParentByName=function(t,z,B){for(;null!=t&&t.nodeName!=z;){if(t==B)return null;t=t.parentNode}return t};Graph.prototype.getParentByNames=function(t,z,B){for(;null!=t&&!(0<=mxUtils.indexOf(z,t.nodeName));){if(t==B)return null;t=t.parentNode}return t};Graph.prototype.selectNode=
-function(t){var z=null;if(window.getSelection){if(z=window.getSelection(),z.getRangeAt&&z.rangeCount){var B=document.createRange();B.selectNode(t);z.removeAllRanges();z.addRange(B)}}else(z=document.selection)&&"Control"!=z.type&&(t=z.createRange(),t.collapse(!0),B=z.createRange(),B.setEndPoint("StartToStart",t),B.select())};Graph.prototype.flipEdgePoints=function(t,z,B){var E=this.getCellGeometry(t);if(null!=E){E=E.clone();if(null!=E.points)for(var G=0;G<E.points.length;G++)z?E.points[G].x=B+(B-E.points[G].x):
-E.points[G].y=B+(B-E.points[G].y);G=function(M){null!=M&&(z?M.x=B+(B-M.x):M.y=B+(B-M.y))};G(E.getTerminalPoint(!0));G(E.getTerminalPoint(!1));this.model.setGeometry(t,E)}};Graph.prototype.flipChildren=function(t,z,B){this.model.beginUpdate();try{for(var E=this.model.getChildCount(t),G=0;G<E;G++){var M=this.model.getChildAt(t,G);if(this.model.isEdge(M))this.flipEdgePoints(M,z,B);else{var X=this.getCellGeometry(M);null!=X&&(X=X.clone(),z?X.x=B+(B-X.x-X.width):X.y=B+(B-X.y-X.height),this.model.setGeometry(M,
-X))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(t,z){this.model.beginUpdate();try{t=this.model.getTopmostCells(t);for(var B=[],E=0;E<t.length;E++)if(this.model.isEdge(t[E])){var G=this.view.getState(t[E]);null!=G&&this.flipEdgePoints(t[E],z,(z?G.getCenterX():G.getCenterY())/this.view.scale-(z?G.origin.x:G.origin.y)-(z?this.view.translate.x:this.view.translate.y))}else{var M=this.getCellGeometry(t[E]);null!=M&&this.flipChildren(t[E],z,z?M.getCenterX()-M.x:M.getCenterY()-M.y);
-B.push(t[E])}this.toggleCellStyles(z?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,B)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(t,z){var B=null;if(null!=t&&0<t.length){this.model.beginUpdate();try{for(var E=0;E<t.length;E++){var G=this.model.getParent(t[E]);if(this.isTable(G)){var M=this.getCellGeometry(t[E]),X=this.getCellGeometry(G);null!=M&&null!=X&&(X=X.clone(),X.height-=M.height,this.model.setGeometry(G,X))}}var ia=this.selectParentAfterDelete?this.model.getParents(t):
-null;this.removeCells(t,z)}finally{this.model.endUpdate()}if(null!=ia)for(B=[],E=0;E<ia.length;E++)this.model.contains(ia[E])&&(this.model.isVertex(ia[E])||this.model.isEdge(ia[E]))&&B.push(ia[E])}return B};Graph.prototype.insertTableColumn=function(t,z){var B=this.getModel();B.beginUpdate();try{var E=t,G=0;if(this.isTableCell(t)){var M=B.getParent(t);E=B.getParent(M);G=mxUtils.indexOf(B.getChildCells(M,!0),t)}else this.isTableRow(t)?E=B.getParent(t):t=B.getChildCells(E,!0)[0],z||(G=B.getChildCells(t,
-!0).length-1);var X=B.getChildCells(E,!0),ia=Graph.minTableColumnWidth;for(t=0;t<X.length;t++){var da=B.getChildCells(X[t],!0)[G],ja=B.cloneCell(da,!1),sa=this.getCellGeometry(ja);ja.value=null;ja.style=mxUtils.setStyle(mxUtils.setStyle(ja.style,"rowspan",null),"colspan",null);if(null!=sa){null!=sa.alternateBounds&&(sa.width=sa.alternateBounds.width,sa.height=sa.alternateBounds.height,sa.alternateBounds=null);ia=sa.width;var Ba=this.getCellGeometry(X[t]);null!=Ba&&(sa.height=Ba.height)}B.add(X[t],
-ja,G+(z?0:1))}var Da=this.getCellGeometry(E);null!=Da&&(Da=Da.clone(),Da.width+=ia,B.setGeometry(E,Da))}finally{B.endUpdate()}};Graph.prototype.deleteLane=function(t){var z=this.getModel();z.beginUpdate();try{var B=null;B="stackLayout"==this.getCurrentCellStyle(t).childLayout?t:z.getParent(t);var E=z.getChildCells(B,!0);0==E.length?z.remove(B):(B==t&&(t=E[E.length-1]),z.remove(t))}finally{z.endUpdate()}};Graph.prototype.insertLane=function(t,z){var B=this.getModel();B.beginUpdate();try{var E=null;
-if("stackLayout"==this.getCurrentCellStyle(t).childLayout){E=t;var G=B.getChildCells(E,!0);t=G[z?0:G.length-1]}else E=B.getParent(t);var M=E.getIndex(t);t=B.cloneCell(t,!1);t.value=null;B.add(E,t,M+(z?0:1))}finally{B.endUpdate()}};Graph.prototype.insertTableRow=function(t,z){var B=this.getModel();B.beginUpdate();try{var E=t,G=t;if(this.isTableCell(t))G=B.getParent(t),E=B.getParent(G);else if(this.isTableRow(t))E=B.getParent(t);else{var M=B.getChildCells(E,!0);G=M[z?0:M.length-1]}var X=B.getChildCells(G,
-!0),ia=E.getIndex(G);G=B.cloneCell(G,!1);G.value=null;var da=this.getCellGeometry(G);if(null!=da){for(M=0;M<X.length;M++){t=B.cloneCell(X[M],!1);t.value=null;t.style=mxUtils.setStyle(mxUtils.setStyle(t.style,"rowspan",null),"colspan",null);var ja=this.getCellGeometry(t);null!=ja&&(null!=ja.alternateBounds&&(ja.width=ja.alternateBounds.width,ja.height=ja.alternateBounds.height,ja.alternateBounds=null),ja.height=da.height);G.insert(t)}B.add(E,G,ia+(z?0:1));var sa=this.getCellGeometry(E);null!=sa&&(sa=
-sa.clone(),sa.height+=da.height,B.setGeometry(E,sa))}}finally{B.endUpdate()}};Graph.prototype.deleteTableColumn=function(t){var z=this.getModel();z.beginUpdate();try{var B=t,E=t;this.isTableCell(t)&&(E=z.getParent(t));this.isTableRow(E)&&(B=z.getParent(E));var G=z.getChildCells(B,!0);if(0==G.length)z.remove(B);else{this.isTableRow(E)||(E=G[0]);var M=z.getChildCells(E,!0);if(1>=M.length)z.remove(B);else{var X=M.length-1;this.isTableCell(t)&&(X=mxUtils.indexOf(M,t));for(E=t=0;E<G.length;E++){var ia=
-z.getChildCells(G[E],!0)[X];z.remove(ia);var da=this.getCellGeometry(ia);null!=da&&(t=Math.max(t,da.width))}var ja=this.getCellGeometry(B);null!=ja&&(ja=ja.clone(),ja.width-=t,z.setGeometry(B,ja))}}}finally{z.endUpdate()}};Graph.prototype.deleteTableRow=function(t){var z=this.getModel();z.beginUpdate();try{var B=t,E=t;this.isTableCell(t)&&(t=E=z.getParent(t));this.isTableRow(t)&&(B=z.getParent(E));var G=z.getChildCells(B,!0);if(1>=G.length)z.remove(B);else{this.isTableRow(E)||(E=G[G.length-1]);z.remove(E);
-t=0;var M=this.getCellGeometry(E);null!=M&&(t=M.height);var X=this.getCellGeometry(B);null!=X&&(X=X.clone(),X.height-=t,z.setGeometry(B,X))}}finally{z.endUpdate()}};Graph.prototype.insertRow=function(t,z){for(var B=t.tBodies[0],E=B.rows[0].cells,G=t=0;G<E.length;G++){var M=E[G].getAttribute("colspan");t+=null!=M?parseInt(M):1}z=B.insertRow(z);for(G=0;G<t;G++)mxUtils.br(z.insertCell(-1));return z.cells[0]};Graph.prototype.deleteRow=function(t,z){t.tBodies[0].deleteRow(z)};Graph.prototype.insertColumn=
-function(t,z){var B=t.tHead;if(null!=B)for(var E=0;E<B.rows.length;E++){var G=document.createElement("th");B.rows[E].appendChild(G);mxUtils.br(G)}t=t.tBodies[0];for(B=0;B<t.rows.length;B++)E=t.rows[B].insertCell(z),mxUtils.br(E);return t.rows[0].cells[0<=z?z:t.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(t,z){if(0<=z){t=t.tBodies[0].rows;for(var B=0;B<t.length;B++)t[B].cells.length>z&&t[B].deleteCell(z)}};Graph.prototype.pasteHtmlAtCaret=function(t){if(window.getSelection){var z=
-window.getSelection();if(z.getRangeAt&&z.rangeCount){z=z.getRangeAt(0);z.deleteContents();var B=document.createElement("div");B.innerHTML=t;t=document.createDocumentFragment();for(var E;E=B.firstChild;)lastNode=t.appendChild(E);z.insertNode(t)}}else(z=document.selection)&&"Control"!=z.type&&z.createRange().pasteHTML(t)};Graph.prototype.createLinkForHint=function(t,z){function B(G,M){G.length>M&&(G=G.substring(0,Math.round(M/2))+"..."+G.substring(G.length-Math.round(M/4)));return G}t=null!=t?t:"javascript:void(0);";
-if(null==z||0==z.length)z=this.isCustomLink(t)?this.getLinkTitle(t):t;var E=document.createElement("a");E.setAttribute("rel",this.linkRelation);E.setAttribute("href",this.getAbsoluteUrl(t));E.setAttribute("title",B(this.isCustomLink(t)?this.getLinkTitle(t):t,80));null!=this.linkTarget&&E.setAttribute("target",this.linkTarget);mxUtils.write(E,B(z,40));this.isCustomLink(t)&&mxEvent.addListener(E,"click",mxUtils.bind(this,function(G){this.customLinkClicked(t);mxEvent.consume(G)}));return E};Graph.prototype.initTouch=
-function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(M,X){this.popupMenuHandler.hideMenu()});var t=this.updateMouseEvent;this.updateMouseEvent=function(M){M=t.apply(this,arguments);if(mxEvent.isTouchEvent(M.getEvent())&&null==M.getState()){var X=this.getCellAt(M.graphX,M.graphY);null!=X&&this.isSwimlane(X)&&this.hitsSwimlaneContent(X,M.graphX,M.graphY)||(M.state=this.view.getState(X),null!=M.state&&
-null!=M.state.shape&&(this.container.style.cursor=M.state.shape.node.style.cursor))}null==M.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return M};var z=!1,B=!1,E=!1,G=this.fireMouseEvent;this.fireMouseEvent=function(M,X,ia){M==mxEvent.MOUSE_DOWN&&(X=this.updateMouseEvent(X),z=this.isCellSelected(X.getCell()),B=this.isSelectionEmpty(),E=this.popupMenuHandler.isMenuShowing());G.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(M,X){var ia=mxEvent.isMouseEvent(X.getEvent());
-this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==X.getState()||!X.isSource(X.getState().control))&&(this.popupMenuHandler.popupTrigger||!E&&!ia&&(B&&null==X.getCell()&&this.isSelectionEmpty()||z&&this.isCellSelected(X.getCell())));ia=!z||ia?null:mxUtils.bind(this,function(da){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var ja=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(X.getX()+ja.x+1,X.getY()+ja.y+1,da,X.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,
-[M,X,ia])})};mxCellEditor.prototype.isContentEditing=function(){var t=this.graph.view.getState(this.editingCell);return null!=t&&1==t.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var t="";window.getSelection?t=window.getSelection():document.getSelection?t=document.getSelection():document.selection&&(t=document.selection.createRange().text);
-return""!=t};mxCellEditor.prototype.insertTab=function(t){var z=this.textarea.ownerDocument.defaultView.getSelection(),B=z.getRangeAt(0),E="\t";if(null!=t)for(E="";0<t;)E+=" ",t--;t=document.createElement("span");t.style.whiteSpace="pre";t.appendChild(document.createTextNode(E));B.insertNode(t);B.setStartAfter(t);B.setEndAfter(t);z.removeAllRanges();z.addRange(B)};mxCellEditor.prototype.alignText=function(t,z){var B=null!=z&&mxEvent.isShiftDown(z);if(B||null!=window.getSelection&&null!=window.getSelection().containsNode){var E=
-!0;this.graph.processElements(this.textarea,function(G){B||window.getSelection().containsNode(G,!0)?(G.removeAttribute("align"),G.style.textAlign=null):E=!1});E&&this.graph.cellEditor.setAlign(t)}document.execCommand("justify"+t.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var t=window.getSelection();if(t.getRangeAt&&t.rangeCount){for(var z=[],B=0,E=t.rangeCount;B<E;++B)z.push(t.getRangeAt(B));return z}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();
-return null};mxCellEditor.prototype.restoreSelection=function(t){try{if(t)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var z=0,B=t.length;z<B;++z)sel.addRange(t[z])}else document.selection&&t.select&&t.select()}catch(E){}};var F=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(t){null!=t.text&&(t.text.replaceLinefeeds="0"!=mxUtils.getValue(t.style,"nl2Br","1"));F.apply(this,arguments)};var K=mxConstraintHandler.prototype.update;
-mxConstraintHandler.prototype.update=function(t,z){this.isKeepFocusEvent(t)||!mxEvent.isAltDown(t.getEvent())?K.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(t){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var D=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(t,z){t=this.graph.getStartEditingCell(t,z);D.apply(this,arguments);var B=this.graph.view.getState(t);
-this.textarea.className=null!=B&&1==B.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(t);B=this.graph.getModel().getParent(t);var E=this.graph.getCellGeometry(t);if(this.graph.getModel().isEdge(B)&&null!=E&&E.relative||this.graph.getModel().isEdge(t))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var O=mxCellEditor.prototype.installListeners;
-mxCellEditor.prototype.installListeners=function(t){function z(G,M){M.originalNode=G;G=G.firstChild;for(var X=M.firstChild;null!=G&&null!=X;)z(G,X),G=G.nextSibling,X=X.nextSibling;return M}function B(G,M){if(null!=G)if(M.originalNode!=G)E(G);else for(G=G.firstChild,M=M.firstChild;null!=G;){var X=G.nextSibling;null==M?E(G):(B(G,M),M=M.nextSibling);G=X}}function E(G){for(var M=G.firstChild;null!=M;){var X=M.nextSibling;E(M);M=X}1==G.nodeType&&("BR"===G.nodeName||null!=G.firstChild)||3==G.nodeType&&
-0!=mxUtils.trim(mxUtils.getTextContent(G)).length?(3==G.nodeType&&mxUtils.setTextContent(G,mxUtils.getTextContent(G).replace(/\n|\r/g,"")),1==G.nodeType&&(G.removeAttribute("style"),G.removeAttribute("class"),G.removeAttribute("width"),G.removeAttribute("cellpadding"),G.removeAttribute("cellspacing"),G.removeAttribute("border"))):G.parentNode.removeChild(G)}O.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(G){var M=
-z(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]>")?B(this.textarea,M):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var t=this.graph.view.getState(this.editingCell);if(null!=t){var z=null!=t&&"0"!=mxUtils.getValue(t.style,"nl2Br","1"),B=this.saveSelection();if(this.codeViewMode){ia=
-mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ia.length&&"\n"==ia.charAt(ia.length-1)&&(ia=ia.substring(0,ia.length-1));ia=this.graph.sanitizeHtml(z?ia.replace(/\n/g,"<br/>"):ia,!0);this.textarea.className="mxCellEditor geContentEditable";da=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);z=mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var E=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),
-G=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,M=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,X=[];(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&X.push("underline");(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&X.push("line-through");this.textarea.style.lineHeight=
-mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(da*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(da)+"px";this.textarea.style.textDecoration=X.join(" ");this.textarea.style.fontWeight=G?"bold":"normal";this.textarea.style.fontStyle=M?"italic":"";this.textarea.style.fontFamily=z;this.textarea.style.textAlign=E;this.textarea.style.padding="0px";this.textarea.innerHTML!=ia&&(this.textarea.innerHTML=ia,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=
-this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ia=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ia=mxUtils.replaceTrailingNewlines(ia,"<div><br></div>"));ia=this.graph.sanitizeHtml(z?ia.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ia,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";
-var da=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(da*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(da)+"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!=
-ia&&(this.textarea.innerHTML=ia);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=B;this.resize()}};var Q=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(t,z){if(null!=this.textarea)if(t=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=t){var B=t.view.scale;this.bounds=mxRectangle.fromRectangle(t);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=
-160*B;this.bounds.height=60*B;var E=null!=t.text?t.text.margin:null;null==E&&(E=mxUtils.getAlignmentAsPoint(mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(t.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=E.x*this.bounds.width;this.bounds.y+=E.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/B)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/B)+"px";this.textarea.style.overflow=
-"auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/B)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*B);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/B)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*B);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("+B+","+B+")")}else this.textarea.style.height="",this.textarea.style.overflow="",Q.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(t,z){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var B=this.graph.getEditingValue(t.cell,z);"1"==
-mxUtils.getValue(t.style,"nl2Br","1")&&(B=B.replace(/\n/g,"<br/>"));return B=this.graph.sanitizeHtml(B,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(t){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var z=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return z="1"==mxUtils.getValue(t.style,"nl2Br","1")?z.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):z.replace(/\r\n/g,
+null!=t&&t==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(t=this.cellEditor.textarea.firstChild);return t};Graph.prototype.getParentByName=function(t,z,A){for(;null!=t&&t.nodeName!=z;){if(t==A)return null;t=t.parentNode}return t};Graph.prototype.getParentByNames=function(t,z,A){for(;null!=t&&!(0<=mxUtils.indexOf(z,t.nodeName));){if(t==A)return null;t=t.parentNode}return t};Graph.prototype.selectNode=
+function(t){var z=null;if(window.getSelection){if(z=window.getSelection(),z.getRangeAt&&z.rangeCount){var A=document.createRange();A.selectNode(t);z.removeAllRanges();z.addRange(A)}}else(z=document.selection)&&"Control"!=z.type&&(t=z.createRange(),t.collapse(!0),A=z.createRange(),A.setEndPoint("StartToStart",t),A.select())};Graph.prototype.flipEdgePoints=function(t,z,A){var E=this.getCellGeometry(t);if(null!=E){E=E.clone();if(null!=E.points)for(var H=0;H<E.points.length;H++)z?E.points[H].x=A+(A-E.points[H].x):
+E.points[H].y=A+(A-E.points[H].y);H=function(K){null!=K&&(z?K.x=A+(A-K.x):K.y=A+(A-K.y))};H(E.getTerminalPoint(!0));H(E.getTerminalPoint(!1));this.model.setGeometry(t,E)}};Graph.prototype.flipChildren=function(t,z,A){this.model.beginUpdate();try{for(var E=this.model.getChildCount(t),H=0;H<E;H++){var K=this.model.getChildAt(t,H);if(this.model.isEdge(K))this.flipEdgePoints(K,z,A);else{var X=this.getCellGeometry(K);null!=X&&(X=X.clone(),z?X.x=A+(A-X.x-X.width):X.y=A+(A-X.y-X.height),this.model.setGeometry(K,
+X))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(t,z){this.model.beginUpdate();try{t=this.model.getTopmostCells(t);for(var A=[],E=0;E<t.length;E++)if(this.model.isEdge(t[E])){var H=this.view.getState(t[E]);null!=H&&this.flipEdgePoints(t[E],z,(z?H.getCenterX():H.getCenterY())/this.view.scale-(z?H.origin.x:H.origin.y)-(z?this.view.translate.x:this.view.translate.y))}else{var K=this.getCellGeometry(t[E]);null!=K&&this.flipChildren(t[E],z,z?K.getCenterX()-K.x:K.getCenterY()-K.y);
+A.push(t[E])}this.toggleCellStyles(z?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,A)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(t,z){var A=null;if(null!=t&&0<t.length){this.model.beginUpdate();try{for(var E=0;E<t.length;E++){var H=this.model.getParent(t[E]);if(this.isTable(H)){var K=this.getCellGeometry(t[E]),X=this.getCellGeometry(H);null!=K&&null!=X&&(X=X.clone(),X.height-=K.height,this.model.setGeometry(H,X))}}var ja=this.selectParentAfterDelete?this.model.getParents(t):
+null;this.removeCells(t,z)}finally{this.model.endUpdate()}if(null!=ja)for(A=[],E=0;E<ja.length;E++)this.model.contains(ja[E])&&(this.model.isVertex(ja[E])||this.model.isEdge(ja[E]))&&A.push(ja[E])}return A};Graph.prototype.insertTableColumn=function(t,z){var A=this.getModel();A.beginUpdate();try{var E=t,H=0;if(this.isTableCell(t)){var K=A.getParent(t);E=A.getParent(K);H=mxUtils.indexOf(A.getChildCells(K,!0),t)}else this.isTableRow(t)?E=A.getParent(t):t=A.getChildCells(E,!0)[0],z||(H=A.getChildCells(t,
+!0).length-1);var X=A.getChildCells(E,!0),ja=Graph.minTableColumnWidth;for(t=0;t<X.length;t++){var ea=A.getChildCells(X[t],!0)[H],ka=A.cloneCell(ea,!1),ta=this.getCellGeometry(ka);ka.value=null;ka.style=mxUtils.setStyle(mxUtils.setStyle(ka.style,"rowspan",null),"colspan",null);if(null!=ta){null!=ta.alternateBounds&&(ta.width=ta.alternateBounds.width,ta.height=ta.alternateBounds.height,ta.alternateBounds=null);ja=ta.width;var Aa=this.getCellGeometry(X[t]);null!=Aa&&(ta.height=Aa.height)}A.add(X[t],
+ka,H+(z?0:1))}var Ea=this.getCellGeometry(E);null!=Ea&&(Ea=Ea.clone(),Ea.width+=ja,A.setGeometry(E,Ea))}finally{A.endUpdate()}};Graph.prototype.deleteLane=function(t){var z=this.getModel();z.beginUpdate();try{var A=null;A="stackLayout"==this.getCurrentCellStyle(t).childLayout?t:z.getParent(t);var E=z.getChildCells(A,!0);0==E.length?z.remove(A):(A==t&&(t=E[E.length-1]),z.remove(t))}finally{z.endUpdate()}};Graph.prototype.insertLane=function(t,z){var A=this.getModel();A.beginUpdate();try{var E=null;
+if("stackLayout"==this.getCurrentCellStyle(t).childLayout){E=t;var H=A.getChildCells(E,!0);t=H[z?0:H.length-1]}else E=A.getParent(t);var K=E.getIndex(t);t=A.cloneCell(t,!1);t.value=null;A.add(E,t,K+(z?0:1))}finally{A.endUpdate()}};Graph.prototype.insertTableRow=function(t,z){var A=this.getModel();A.beginUpdate();try{var E=t,H=t;if(this.isTableCell(t))H=A.getParent(t),E=A.getParent(H);else if(this.isTableRow(t))E=A.getParent(t);else{var K=A.getChildCells(E,!0);H=K[z?0:K.length-1]}var X=A.getChildCells(H,
+!0),ja=E.getIndex(H);H=A.cloneCell(H,!1);H.value=null;var ea=this.getCellGeometry(H);if(null!=ea){for(K=0;K<X.length;K++){t=A.cloneCell(X[K],!1);t.value=null;t.style=mxUtils.setStyle(mxUtils.setStyle(t.style,"rowspan",null),"colspan",null);var ka=this.getCellGeometry(t);null!=ka&&(null!=ka.alternateBounds&&(ka.width=ka.alternateBounds.width,ka.height=ka.alternateBounds.height,ka.alternateBounds=null),ka.height=ea.height);H.insert(t)}A.add(E,H,ja+(z?0:1));var ta=this.getCellGeometry(E);null!=ta&&(ta=
+ta.clone(),ta.height+=ea.height,A.setGeometry(E,ta))}}finally{A.endUpdate()}};Graph.prototype.deleteTableColumn=function(t){var z=this.getModel();z.beginUpdate();try{var A=t,E=t;this.isTableCell(t)&&(E=z.getParent(t));this.isTableRow(E)&&(A=z.getParent(E));var H=z.getChildCells(A,!0);if(0==H.length)z.remove(A);else{this.isTableRow(E)||(E=H[0]);var K=z.getChildCells(E,!0);if(1>=K.length)z.remove(A);else{var X=K.length-1;this.isTableCell(t)&&(X=mxUtils.indexOf(K,t));for(E=t=0;E<H.length;E++){var ja=
+z.getChildCells(H[E],!0)[X];z.remove(ja);var ea=this.getCellGeometry(ja);null!=ea&&(t=Math.max(t,ea.width))}var ka=this.getCellGeometry(A);null!=ka&&(ka=ka.clone(),ka.width-=t,z.setGeometry(A,ka))}}}finally{z.endUpdate()}};Graph.prototype.deleteTableRow=function(t){var z=this.getModel();z.beginUpdate();try{var A=t,E=t;this.isTableCell(t)&&(t=E=z.getParent(t));this.isTableRow(t)&&(A=z.getParent(E));var H=z.getChildCells(A,!0);if(1>=H.length)z.remove(A);else{this.isTableRow(E)||(E=H[H.length-1]);z.remove(E);
+t=0;var K=this.getCellGeometry(E);null!=K&&(t=K.height);var X=this.getCellGeometry(A);null!=X&&(X=X.clone(),X.height-=t,z.setGeometry(A,X))}}finally{z.endUpdate()}};Graph.prototype.insertRow=function(t,z){for(var A=t.tBodies[0],E=A.rows[0].cells,H=t=0;H<E.length;H++){var K=E[H].getAttribute("colspan");t+=null!=K?parseInt(K):1}z=A.insertRow(z);for(H=0;H<t;H++)mxUtils.br(z.insertCell(-1));return z.cells[0]};Graph.prototype.deleteRow=function(t,z){t.tBodies[0].deleteRow(z)};Graph.prototype.insertColumn=
+function(t,z){var A=t.tHead;if(null!=A)for(var E=0;E<A.rows.length;E++){var H=document.createElement("th");A.rows[E].appendChild(H);mxUtils.br(H)}t=t.tBodies[0];for(A=0;A<t.rows.length;A++)E=t.rows[A].insertCell(z),mxUtils.br(E);return t.rows[0].cells[0<=z?z:t.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(t,z){if(0<=z){t=t.tBodies[0].rows;for(var A=0;A<t.length;A++)t[A].cells.length>z&&t[A].deleteCell(z)}};Graph.prototype.pasteHtmlAtCaret=function(t){if(window.getSelection){var z=
+window.getSelection();if(z.getRangeAt&&z.rangeCount){z=z.getRangeAt(0);z.deleteContents();var A=document.createElement("div");A.innerHTML=t;t=document.createDocumentFragment();for(var E;E=A.firstChild;)lastNode=t.appendChild(E);z.insertNode(t)}}else(z=document.selection)&&"Control"!=z.type&&z.createRange().pasteHTML(t)};Graph.prototype.createLinkForHint=function(t,z){function A(H,K){H.length>K&&(H=H.substring(0,Math.round(K/2))+"..."+H.substring(H.length-Math.round(K/4)));return H}t=null!=t?t:"javascript:void(0);";
+if(null==z||0==z.length)z=this.isCustomLink(t)?this.getLinkTitle(t):t;var E=document.createElement("a");E.setAttribute("rel",this.linkRelation);E.setAttribute("href",this.getAbsoluteUrl(t));E.setAttribute("title",A(this.isCustomLink(t)?this.getLinkTitle(t):t,80));null!=this.linkTarget&&E.setAttribute("target",this.linkTarget);mxUtils.write(E,A(z,40));this.isCustomLink(t)&&mxEvent.addListener(E,"click",mxUtils.bind(this,function(H){this.customLinkClicked(t);mxEvent.consume(H)}));return E};Graph.prototype.initTouch=
+function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(K,X){this.popupMenuHandler.hideMenu()});var t=this.updateMouseEvent;this.updateMouseEvent=function(K){K=t.apply(this,arguments);if(mxEvent.isTouchEvent(K.getEvent())&&null==K.getState()){var X=this.getCellAt(K.graphX,K.graphY);null!=X&&this.isSwimlane(X)&&this.hitsSwimlaneContent(X,K.graphX,K.graphY)||(K.state=this.view.getState(X),null!=K.state&&
+null!=K.state.shape&&(this.container.style.cursor=K.state.shape.node.style.cursor))}null==K.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return K};var z=!1,A=!1,E=!1,H=this.fireMouseEvent;this.fireMouseEvent=function(K,X,ja){K==mxEvent.MOUSE_DOWN&&(X=this.updateMouseEvent(X),z=this.isCellSelected(X.getCell()),A=this.isSelectionEmpty(),E=this.popupMenuHandler.isMenuShowing());H.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(K,X){var ja=mxEvent.isMouseEvent(X.getEvent());
+this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==X.getState()||!X.isSource(X.getState().control))&&(this.popupMenuHandler.popupTrigger||!E&&!ja&&(A&&null==X.getCell()&&this.isSelectionEmpty()||z&&this.isCellSelected(X.getCell())));ja=!z||ja?null:mxUtils.bind(this,function(ea){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var ka=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(X.getX()+ka.x+1,X.getY()+ka.y+1,ea,X.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,
+[K,X,ja])})};mxCellEditor.prototype.isContentEditing=function(){var t=this.graph.view.getState(this.editingCell);return null!=t&&1==t.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var t="";window.getSelection?t=window.getSelection():document.getSelection?t=document.getSelection():document.selection&&(t=document.selection.createRange().text);
+return""!=t};mxCellEditor.prototype.insertTab=function(t){var z=this.textarea.ownerDocument.defaultView.getSelection(),A=z.getRangeAt(0),E="\t";if(null!=t)for(E="";0<t;)E+=" ",t--;t=document.createElement("span");t.style.whiteSpace="pre";t.appendChild(document.createTextNode(E));A.insertNode(t);A.setStartAfter(t);A.setEndAfter(t);z.removeAllRanges();z.addRange(A)};mxCellEditor.prototype.alignText=function(t,z){var A=null!=z&&mxEvent.isShiftDown(z);if(A||null!=window.getSelection&&null!=window.getSelection().containsNode){var E=
+!0;this.graph.processElements(this.textarea,function(H){A||window.getSelection().containsNode(H,!0)?(H.removeAttribute("align"),H.style.textAlign=null):E=!1});E&&this.graph.cellEditor.setAlign(t)}document.execCommand("justify"+t.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var t=window.getSelection();if(t.getRangeAt&&t.rangeCount){for(var z=[],A=0,E=t.rangeCount;A<E;++A)z.push(t.getRangeAt(A));return z}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();
+return null};mxCellEditor.prototype.restoreSelection=function(t){try{if(t)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var z=0,A=t.length;z<A;++z)sel.addRange(t[z])}else document.selection&&t.select&&t.select()}catch(E){}};var G=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(t){null!=t.text&&(t.text.replaceLinefeeds="0"!=mxUtils.getValue(t.style,"nl2Br","1"));G.apply(this,arguments)};var J=mxConstraintHandler.prototype.update;
+mxConstraintHandler.prototype.update=function(t,z){this.isKeepFocusEvent(t)||!mxEvent.isAltDown(t.getEvent())?J.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(t){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var D=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(t,z){t=this.graph.getStartEditingCell(t,z);D.apply(this,arguments);var A=this.graph.view.getState(t);
+this.textarea.className=null!=A&&1==A.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(t);A=this.graph.getModel().getParent(t);var E=this.graph.getCellGeometry(t);if(this.graph.getModel().isEdge(A)&&null!=E&&E.relative||this.graph.getModel().isEdge(t))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var N=mxCellEditor.prototype.installListeners;
+mxCellEditor.prototype.installListeners=function(t){function z(H,K){K.originalNode=H;H=H.firstChild;for(var X=K.firstChild;null!=H&&null!=X;)z(H,X),H=H.nextSibling,X=X.nextSibling;return K}function A(H,K){if(null!=H)if(K.originalNode!=H)E(H);else for(H=H.firstChild,K=K.firstChild;null!=H;){var X=H.nextSibling;null==K?E(H):(A(H,K),K=K.nextSibling);H=X}}function E(H){for(var K=H.firstChild;null!=K;){var X=K.nextSibling;E(K);K=X}1==H.nodeType&&("BR"===H.nodeName||null!=H.firstChild)||3==H.nodeType&&
+0!=mxUtils.trim(mxUtils.getTextContent(H)).length?(3==H.nodeType&&mxUtils.setTextContent(H,mxUtils.getTextContent(H).replace(/\n|\r/g,"")),1==H.nodeType&&(H.removeAttribute("style"),H.removeAttribute("class"),H.removeAttribute("width"),H.removeAttribute("cellpadding"),H.removeAttribute("cellspacing"),H.removeAttribute("border"))):H.parentNode.removeChild(H)}N.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(H){var K=
+z(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]>")?A(this.textarea,K):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var t=this.graph.view.getState(this.editingCell);if(null!=t){var z=null!=t&&"0"!=mxUtils.getValue(t.style,"nl2Br","1"),A=this.saveSelection();if(this.codeViewMode){ja=
+mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ja.length&&"\n"==ja.charAt(ja.length-1)&&(ja=ja.substring(0,ja.length-1));ja=this.graph.sanitizeHtml(z?ja.replace(/\n/g,"<br/>"):ja,!0);this.textarea.className="mxCellEditor geContentEditable";ea=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);z=mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var E=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),
+H=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,K=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,X=[];(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&X.push("underline");(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&X.push("line-through");this.textarea.style.lineHeight=
+mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(ea*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(ea)+"px";this.textarea.style.textDecoration=X.join(" ");this.textarea.style.fontWeight=H?"bold":"normal";this.textarea.style.fontStyle=K?"italic":"";this.textarea.style.fontFamily=z;this.textarea.style.textAlign=E;this.textarea.style.padding="0px";this.textarea.innerHTML!=ja&&(this.textarea.innerHTML=ja,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=
+this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ja=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ja=mxUtils.replaceTrailingNewlines(ja,"<div><br></div>"));ja=this.graph.sanitizeHtml(z?ja.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ja,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";
+var ea=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(ea*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(ea)+"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!=
+ja&&(this.textarea.innerHTML=ja);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=A;this.resize()}};var Q=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(t,z){if(null!=this.textarea)if(t=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=t){var A=t.view.scale;this.bounds=mxRectangle.fromRectangle(t);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=
+160*A;this.bounds.height=60*A;var E=null!=t.text?t.text.margin:null;null==E&&(E=mxUtils.getAlignmentAsPoint(mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(t.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=E.x*this.bounds.width;this.bounds.y+=E.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/A)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/A)+"px";this.textarea.style.overflow=
+"auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/A)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*A);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/A)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*A);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("+A+","+A+")")}else this.textarea.style.height="",this.textarea.style.overflow="",Q.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(t,z){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var A=this.graph.getEditingValue(t.cell,z);"1"==
+mxUtils.getValue(t.style,"nl2Br","1")&&(A=A.replace(/\n/g,"<br/>"));return A=this.graph.sanitizeHtml(A,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(t){if("0"==mxUtils.getValue(t.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var z=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return z="1"==mxUtils.getValue(t.style,"nl2Br","1")?z.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):z.replace(/\r\n/g,
"").replace(/\n/g,"")};var R=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(t){this.codeViewMode&&this.toggleViewMode();R.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(t){}};var P=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(t,z){this.graph.getModel().beginUpdate();try{P.apply(this,arguments),""==z&&this.graph.isCellDeletable(t.cell)&&0==this.graph.model.getChildCount(t.cell)&&
this.graph.isTransparentState(t)&&this.graph.removeCells([t.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(t){var z=mxUtils.getValue(t.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=z&&z!=mxConstants.NONE||!(null!=t.cell.geometry&&0<t.cell.geometry.width)||0==mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(t.style,mxConstants.STYLE_HORIZONTAL,1)||(z=mxUtils.getValue(t.style,mxConstants.STYLE_FILLCOLOR,
null));z==mxConstants.NONE&&(z=null);return z};mxCellEditor.prototype.getBorderColor=function(t){var z=mxUtils.getValue(t.style,mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=z&&z!=mxConstants.NONE||!(null!=t.cell.geometry&&0<t.cell.geometry.width)||0==mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(t.style,mxConstants.STYLE_HORIZONTAL,1)||(z=mxUtils.getValue(t.style,mxConstants.STYLE_STROKECOLOR,null));z==mxConstants.NONE&&(z=null);return z};mxCellEditor.prototype.getMinimumSize=
function(t){var z=this.graph.getView().scale;return new mxRectangle(0,0,null==t.text?30:t.text.size*z+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(t,z){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(z.getEvent)};mxGraphView.prototype.formatUnitText=function(t){return t?b(t,this.unit):t};mxGraphHandler.prototype.updateHint=function(t){if(null!=this.pBounds&&(null!=this.shape||
-this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,B=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/B-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/B-z.y);B=this.graph.view.unit;this.hint.innerHTML=b(t,B)+", "+b(z,B);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 Z=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(t,z){Z.apply(this,arguments);var B=this.graph.getCellStyle(t);if(null==B.childLayout){var E=this.graph.model.getParent(t),G=null!=E?this.graph.getCellGeometry(E):null;if(null!=G&&(B=this.graph.getCellStyle(E),"stackLayout"==B.childLayout)){var M=parseFloat(mxUtils.getValue(B,
-"stackBorder",mxStackLayout.prototype.border));B="1"==mxUtils.getValue(B,"horizontalStack","1");var X=this.graph.getActualStartSize(E);G=G.clone();B?G.height=z.height+X.y+X.height+2*M:G.width=z.width+X.x+X.width+2*M;this.graph.model.setGeometry(E,G)}}};var T=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function t(ia){B.get(ia)||(B.put(ia,!0),G.push(ia))}for(var z=T.apply(this,arguments),B=new mxDictionary,E=this.graph.model,
-G=[],M=0;M<z.length;M++){var X=z[M];this.graph.isTableCell(X)?t(E.getParent(E.getParent(X))):this.graph.isTableRow(X)&&t(E.getParent(X));t(X)}return G};var U=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(t){var z=U.apply(this,arguments);z.stroke="#C0C0C0";z.strokewidth=1;return z};var fa=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(t){var z=fa.apply(this,arguments);
+this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var z=this.graph.view.translate,A=this.graph.view.scale;t=this.roundLength((this.bounds.x+this.currentDx)/A-z.x);z=this.roundLength((this.bounds.y+this.currentDy)/A-z.y);A=this.graph.view.unit;this.hint.innerHTML=b(t,A)+", "+b(z,A);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 Z=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(t,z){Z.apply(this,arguments);var A=this.graph.getCellStyle(t);if(null==A.childLayout){var E=this.graph.model.getParent(t),H=null!=E?this.graph.getCellGeometry(E):null;if(null!=H&&(A=this.graph.getCellStyle(E),"stackLayout"==A.childLayout)){var K=parseFloat(mxUtils.getValue(A,
+"stackBorder",mxStackLayout.prototype.border));A="1"==mxUtils.getValue(A,"horizontalStack","1");var X=this.graph.getActualStartSize(E);H=H.clone();A?H.height=z.height+X.y+X.height+2*K:H.width=z.width+X.x+X.width+2*K;this.graph.model.setGeometry(E,H)}}};var U=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function t(ja){A.get(ja)||(A.put(ja,!0),H.push(ja))}for(var z=U.apply(this,arguments),A=new mxDictionary,E=this.graph.model,
+H=[],K=0;K<z.length;K++){var X=z[K];this.graph.isTableCell(X)?t(E.getParent(E.getParent(X))):this.graph.isTableRow(X)&&t(E.getParent(X));t(X)}return H};var V=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(t){var z=V.apply(this,arguments);z.stroke="#C0C0C0";z.strokewidth=1;return z};var ia=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(t){var z=ia.apply(this,arguments);
z.stroke="#C0C0C0";z.strokewidth=1;return z};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var t=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+t.x/2,this.bounds.y+this.rotationHandleVSpacing-t.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(t,z){return this.graph.isRecursiveVertexResize(t)&&!mxEvent.isAltDown(z.getEvent())};mxVertexHandler.prototype.isCenteredEvent=
function(t,z){return mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent())};var ha=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return ha.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 ba=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return ba.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var qa=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(t){return t.tableHandle||qa.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
-function(){var t=0;this.graph.isTableRow(this.state.cell)?t=1:this.graph.isTableCell(this.state.cell)&&(t=2);return t};var I=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return I.apply(this,arguments).grow(-this.getSelectionBorderInset())};var L=null,H=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==L&&(L=mxCellRenderer.defaultShapes.tableLine);var t=H.apply(this,arguments);
-if(this.graph.isTable(this.state.cell)){var z=function(La,Ia,Ea){for(var Fa=[],Oa=0;Oa<La.length;Oa++){var Pa=La[Oa];Fa.push(null==Pa?null:new mxPoint((da+Pa.x+Ia)*M,(ja+Pa.y+Ea)*M))}return Fa},B=this,E=this.graph,G=E.model,M=E.view.scale,X=this.state,ia=this.selectionBorder,da=this.state.origin.x+E.view.translate.x,ja=this.state.origin.y+E.view.translate.y;null==t&&(t=[]);var sa=E.view.getCellStates(G.getChildCells(this.state.cell,!0));if(0<sa.length){var Ba=G.getChildCells(sa[0].cell,!0),Da=E.getTableLines(this.state.cell,
-!1,!0),Ma=E.getTableLines(this.state.cell,!0,!1);for(G=0;G<sa.length;G++)mxUtils.bind(this,function(La){var Ia=sa[La],Ea=La<sa.length-1?sa[La+1]:null;Ea=null!=Ea?E.getCellGeometry(Ea.cell):null;var Fa=null!=Ea&&null!=Ea.alternateBounds?Ea.alternateBounds:Ea;Ea=null!=Ma[La]?new L(Ma[La],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);Ea.isDashed=ia.isDashed;Ea.svgStrokeTolerance++;Ia=new mxHandle(Ia,"row-resize",null,Ea);Ia.tableHandle=!0;var Oa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,
-Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Oa?mxConstants.NONE:ia.stroke;if(this.shape.constructor==L)this.shape.line=z(Ma[La],0,Oa),this.shape.updateBoundsFromLine();else{var Na=E.getActualStartSize(X.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Oa*M;this.shape.bounds.x=X.x+(La==sa.length-1?0:Na.x*M);this.shape.bounds.width=X.width-(La==sa.length-1?0:Na.width+Na.x+M)}this.shape.redraw()}};var Pa=!1;
-Ia.setPosition=function(Na,Sa,eb){Oa=Math.max(Graph.minTableRowHeight-Na.height,Sa.y-Na.y-Na.height);Pa=mxEvent.isShiftDown(eb.getEvent());null!=Fa&&Pa&&(Oa=Math.min(Oa,Fa.height-Graph.minTableRowHeight))};Ia.execute=function(Na){if(0!=Oa)E.setTableRowHeight(this.state.cell,Oa,!Pa);else if(!B.blockDelayedSelection){var Sa=E.getCellAt(Na.getGraphX(),Na.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(Sa,Na)}Oa=0};Ia.reset=function(){Oa=0};t.push(Ia)})(G);for(G=0;G<Ba.length;G++)mxUtils.bind(this,
-function(La){var Ia=E.view.getState(Ba[La]),Ea=E.getCellGeometry(Ba[La]),Fa=null!=Ea.alternateBounds?Ea.alternateBounds:Ea;null==Ia&&(Ia=new mxCellState(E.view,Ba[La],E.getCellStyle(Ba[La])),Ia.x=X.x+Ea.x*M,Ia.y=X.y+Ea.y*M,Ia.width=Fa.width*M,Ia.height=Fa.height*M,Ia.updateCachedBounds());Ea=La<Ba.length-1?Ba[La+1]:null;Ea=null!=Ea?E.getCellGeometry(Ea):null;var Oa=null!=Ea&&null!=Ea.alternateBounds?Ea.alternateBounds:Ea;Ea=null!=Da[La]?new L(Da[La],mxConstants.NONE,1):new mxLine(new mxRectangle,
-mxConstants.NONE,1,!0);Ea.isDashed=ia.isDashed;Ea.svgStrokeTolerance++;Ia=new mxHandle(Ia,"col-resize",null,Ea);Ia.tableHandle=!0;var Pa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Pa?mxConstants.NONE:ia.stroke;if(this.shape.constructor==L)this.shape.line=z(Da[La],Pa,0),this.shape.updateBoundsFromLine();else{var Sa=E.getActualStartSize(X.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=
-this.state.x+(Fa.width+Pa)*M;this.shape.bounds.y=X.y+(La==Ba.length-1?0:Sa.y*M);this.shape.bounds.height=X.height-(La==Ba.length-1?0:(Sa.height+Sa.y)*M)}this.shape.redraw()}};var Na=!1;Ia.setPosition=function(Sa,eb,Za){Pa=Math.max(Graph.minTableColumnWidth-Fa.width,eb.x-Sa.x-Fa.width);Na=mxEvent.isShiftDown(Za.getEvent());null==Oa||Na||(Pa=Math.min(Pa,Oa.width-Graph.minTableColumnWidth))};Ia.execute=function(Sa){if(0!=Pa)E.setTableColumnWidth(this.state.cell,Pa,Na);else if(!B.blockDelayedSelection){var eb=
-E.getCellAt(Sa.getGraphX(),Sa.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(eb,Sa)}Pa=0};Ia.positionChanged=function(){};Ia.reset=function(){Pa=0};t.push(Ia)})(G)}}return null!=t?t.reverse():null};var S=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(t){S.apply(this,arguments);if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.visibility=t?"":"hidden";if(null!=this.cornerHandles)for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].node.style.visibility=
-t?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var t=this.graph.model;if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}this.moveHandles=[];for(z=0;z<t.getChildCount(this.state.cell);z++)mxUtils.bind(this,function(B){if(null!=B&&t.isVertex(B.cell)){var E=mxUtils.createImage(Editor.rowMoveImage);E.style.position="absolute";E.style.cursor="pointer";E.style.width="7px";E.style.height=
-"4px";E.style.padding="4px 2px 4px 2px";E.rowState=B;mxEvent.addGestureListeners(E,mxUtils.bind(this,function(G){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(G)&&this.graph.isCellSelected(B.cell)||this.graph.selectCellForEvent(B.cell,G);mxEvent.isPopupTrigger(G)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(G),mxEvent.getClientY(G),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=
-mxEvent.isMouseEvent(G),this.graph.isMouseDown=!0);mxEvent.consume(G)}),null,mxUtils.bind(this,function(G){mxEvent.isPopupTrigger(G)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(G),mxEvent.getClientY(G),B.cell,G),mxEvent.consume(G))}));this.moveHandles.push(E);this.graph.container.appendChild(E)}})(this.graph.view.getState(t.getChildAt(this.state.cell,z)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var t=0;t<this.customHandles.length;t++)this.customHandles[t].destroy();
-this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var V=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var t=new mxPoint(0,0),z=this.tolerance,B=this.state.style.shape;null==mxCellRenderer.defaultShapes[B]&&mxStencilRegistry.getStencil(B);B=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!B&&null!=this.customHandles)for(var E=0;E<this.customHandles.length;E++)if(null!=
-this.customHandles[E].shape&&null!=this.customHandles[E].shape.bounds){var G=this.customHandles[E].shape.bounds,M=G.getCenterX(),X=G.getCenterY();if(Math.abs(this.state.x-M)<G.width/2||Math.abs(this.state.y-X)<G.height/2||Math.abs(this.state.x+this.state.width-M)<G.width/2||Math.abs(this.state.y+this.state.height-X)<G.height/2){B=!0;break}}B&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(z/=2,this.graph.isTable(this.state.cell)&&(z+=7),t.x=this.sizers[0].bounds.width+z,t.y=this.sizers[0].bounds.height+
-z):t=V.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){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{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/t),z)+" x "+b(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
-null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==t&&(t=this.bounds);this.hint.style.left=t.x+Math.round((t.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=t.y+t.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 ea=mxEdgeHandler.prototype.mouseMove;
-mxEdgeHandler.prototype.mouseMove=function(t,z){ea.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 ka=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(t,z){ka.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(t,z){null==this.hint&&
-(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var B=this.graph.view.translate,E=this.graph.view.scale,G=this.roundLength(z.x/E-B.x);B=this.roundLength(z.y/E-B.y);E=this.graph.view.unit;this.hint.innerHTML=b(G,E)+", "+b(B,E);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(t.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(t.getGraphY(),z.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"/>');
+function(){var t=0;this.graph.isTableRow(this.state.cell)?t=1:this.graph.isTableCell(this.state.cell)&&(t=2);return t};var O=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return O.apply(this,arguments).grow(-this.getSelectionBorderInset())};var S=null,F=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==S&&(S=mxCellRenderer.defaultShapes.tableLine);var t=F.apply(this,arguments);
+if(this.graph.isTable(this.state.cell)){var z=function(La,Ia,Fa){for(var Ga=[],Oa=0;Oa<La.length;Oa++){var Pa=La[Oa];Ga.push(null==Pa?null:new mxPoint((ea+Pa.x+Ia)*K,(ka+Pa.y+Fa)*K))}return Ga},A=this,E=this.graph,H=E.model,K=E.view.scale,X=this.state,ja=this.selectionBorder,ea=this.state.origin.x+E.view.translate.x,ka=this.state.origin.y+E.view.translate.y;null==t&&(t=[]);var ta=E.view.getCellStates(H.getChildCells(this.state.cell,!0));if(0<ta.length){var Aa=H.getChildCells(ta[0].cell,!0),Ea=E.getTableLines(this.state.cell,
+!1,!0),Ma=E.getTableLines(this.state.cell,!0,!1);for(H=0;H<ta.length;H++)mxUtils.bind(this,function(La){var Ia=ta[La],Fa=La<ta.length-1?ta[La+1]:null;Fa=null!=Fa?E.getCellGeometry(Fa.cell):null;var Ga=null!=Fa&&null!=Fa.alternateBounds?Fa.alternateBounds:Fa;Fa=null!=Ma[La]?new S(Ma[La],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);Fa.isDashed=ja.isDashed;Fa.svgStrokeTolerance++;Ia=new mxHandle(Ia,"row-resize",null,Fa);Ia.tableHandle=!0;var Oa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,
+Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Oa?mxConstants.NONE:ja.stroke;if(this.shape.constructor==S)this.shape.line=z(Ma[La],0,Oa),this.shape.updateBoundsFromLine();else{var Na=E.getActualStartSize(X.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Oa*K;this.shape.bounds.x=X.x+(La==ta.length-1?0:Na.x*K);this.shape.bounds.width=X.width-(La==ta.length-1?0:Na.width+Na.x+K)}this.shape.redraw()}};var Pa=!1;
+Ia.setPosition=function(Na,Sa,eb){Oa=Math.max(Graph.minTableRowHeight-Na.height,Sa.y-Na.y-Na.height);Pa=mxEvent.isShiftDown(eb.getEvent());null!=Ga&&Pa&&(Oa=Math.min(Oa,Ga.height-Graph.minTableRowHeight))};Ia.execute=function(Na){if(0!=Oa)E.setTableRowHeight(this.state.cell,Oa,!Pa);else if(!A.blockDelayedSelection){var Sa=E.getCellAt(Na.getGraphX(),Na.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(Sa,Na)}Oa=0};Ia.reset=function(){Oa=0};t.push(Ia)})(H);for(H=0;H<Aa.length;H++)mxUtils.bind(this,
+function(La){var Ia=E.view.getState(Aa[La]),Fa=E.getCellGeometry(Aa[La]),Ga=null!=Fa.alternateBounds?Fa.alternateBounds:Fa;null==Ia&&(Ia=new mxCellState(E.view,Aa[La],E.getCellStyle(Aa[La])),Ia.x=X.x+Fa.x*K,Ia.y=X.y+Fa.y*K,Ia.width=Ga.width*K,Ia.height=Ga.height*K,Ia.updateCachedBounds());Fa=La<Aa.length-1?Aa[La+1]:null;Fa=null!=Fa?E.getCellGeometry(Fa):null;var Oa=null!=Fa&&null!=Fa.alternateBounds?Fa.alternateBounds:Fa;Fa=null!=Ea[La]?new S(Ea[La],mxConstants.NONE,1):new mxLine(new mxRectangle,
+mxConstants.NONE,1,!0);Fa.isDashed=ja.isDashed;Fa.svgStrokeTolerance++;Ia=new mxHandle(Ia,"col-resize",null,Fa);Ia.tableHandle=!0;var Pa=0;Ia.shape.node.parentNode.insertBefore(Ia.shape.node,Ia.shape.node.parentNode.firstChild);Ia.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Pa?mxConstants.NONE:ja.stroke;if(this.shape.constructor==S)this.shape.line=z(Ea[La],Pa,0),this.shape.updateBoundsFromLine();else{var Sa=E.getActualStartSize(X.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=
+this.state.x+(Ga.width+Pa)*K;this.shape.bounds.y=X.y+(La==Aa.length-1?0:Sa.y*K);this.shape.bounds.height=X.height-(La==Aa.length-1?0:(Sa.height+Sa.y)*K)}this.shape.redraw()}};var Na=!1;Ia.setPosition=function(Sa,eb,ab){Pa=Math.max(Graph.minTableColumnWidth-Ga.width,eb.x-Sa.x-Ga.width);Na=mxEvent.isShiftDown(ab.getEvent());null==Oa||Na||(Pa=Math.min(Pa,Oa.width-Graph.minTableColumnWidth))};Ia.execute=function(Sa){if(0!=Pa)E.setTableColumnWidth(this.state.cell,Pa,Na);else if(!A.blockDelayedSelection){var eb=
+E.getCellAt(Sa.getGraphX(),Sa.getGraphY())||X.cell;E.graphHandler.selectCellForEvent(eb,Sa)}Pa=0};Ia.positionChanged=function(){};Ia.reset=function(){Pa=0};t.push(Ia)})(H)}}return null!=t?t.reverse():null};var L=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(t){L.apply(this,arguments);if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.visibility=t?"":"hidden";if(null!=this.cornerHandles)for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].node.style.visibility=
+t?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var t=this.graph.model;if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}this.moveHandles=[];for(z=0;z<t.getChildCount(this.state.cell);z++)mxUtils.bind(this,function(A){if(null!=A&&t.isVertex(A.cell)){var E=mxUtils.createImage(Editor.rowMoveImage);E.style.position="absolute";E.style.cursor="pointer";E.style.width="7px";E.style.height=
+"4px";E.style.padding="4px 2px 4px 2px";E.rowState=A;mxEvent.addGestureListeners(E,mxUtils.bind(this,function(H){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(H)&&this.graph.isCellSelected(A.cell)||this.graph.selectCellForEvent(A.cell,H);mxEvent.isPopupTrigger(H)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(H),mxEvent.getClientY(H),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=
+mxEvent.isMouseEvent(H),this.graph.isMouseDown=!0);mxEvent.consume(H)}),null,mxUtils.bind(this,function(H){mxEvent.isPopupTrigger(H)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(H),mxEvent.getClientY(H),A.cell,H),mxEvent.consume(H))}));this.moveHandles.push(E);this.graph.container.appendChild(E)}})(this.graph.view.getState(t.getChildAt(this.state.cell,z)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var t=0;t<this.customHandles.length;t++)this.customHandles[t].destroy();
+this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var T=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var t=new mxPoint(0,0),z=this.tolerance,A=this.state.style.shape;null==mxCellRenderer.defaultShapes[A]&&mxStencilRegistry.getStencil(A);A=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!A&&null!=this.customHandles)for(var E=0;E<this.customHandles.length;E++)if(null!=
+this.customHandles[E].shape&&null!=this.customHandles[E].shape.bounds){var H=this.customHandles[E].shape.bounds,K=H.getCenterX(),X=H.getCenterY();if(Math.abs(this.state.x-K)<H.width/2||Math.abs(this.state.y-X)<H.height/2||Math.abs(this.state.x+this.state.width-K)<H.width/2||Math.abs(this.state.y+this.state.height-X)<H.height/2){A=!0;break}}A&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(z/=2,this.graph.isTable(this.state.cell)&&(z+=7),t.x=this.sizers[0].bounds.width+z,t.y=this.sizers[0].bounds.height+
+z):t=T.apply(this,arguments);return t};mxVertexHandler.prototype.updateHint=function(t){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{t=this.state.view.scale;var z=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/t),z)+" x "+b(this.roundLength(this.bounds.height/t),z)}t=mxUtils.getBoundingBox(this.bounds,
+null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==t&&(t=this.bounds);this.hint.style.left=t.x+Math.round((t.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=t.y+t.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 ca=mxEdgeHandler.prototype.mouseMove;
+mxEdgeHandler.prototype.mouseMove=function(t,z){ca.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 fa=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(t,z){fa.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(t,z){null==this.hint&&
+(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var A=this.graph.view.translate,E=this.graph.view.scale,H=this.roundLength(z.x/E-A.x);A=this.roundLength(z.y/E-A.y);E=this.graph.view.unit;this.hint.innerHTML=b(H,E)+", "+b(A,E);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(H=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*H.x)+
+"%, "+Math.round(100*H.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(t.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(t.getGraphY(),z.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="'+
@@ -3205,38 +3205,38 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(t){return!mxEvent.isShiftDown(t.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(t){return!mxEvent.isShiftDown(t.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(t){return mxEvent.isMouseEvent(t.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(t){var z=t.getEvent();return null==t.getState()&&!mxEvent.isMouseEvent(z)||mxEvent.isPopupTrigger(z)&&(null==t.getState()||mxEvent.isControlDown(z)||mxEvent.isShiftDown(z))};var wa=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(t,z){wa.apply(this,arguments);mxEvent.isTouchEvent(z.getEvent())&&this.graph.isCellSelected(z.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(t){var z=t.getEvent();return mxEvent.isLeftMouseButton(z)&&(this.useLeftButtonForPanning&&null==t.getState()||mxEvent.isControlDown(z)&&!mxEvent.isShiftDown(z))||this.usePopupTrigger&&mxEvent.isPopupTrigger(z)};mxRubberband.prototype.isSpaceEvent=function(t){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(t.getEvent())||mxEvent.isMetaDown(t.getEvent()))&&mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(t,z){if(this.cancelled)this.cancelled=!1,z.consume();else{var B=null!=this.div&&"none"!=this.div.style.display,E=null,G=null,M=t=null;null!=
-this.first&&null!=this.currentX&&null!=this.currentY&&(E=this.first.x,G=this.first.y,t=(this.currentX-E)/this.graph.view.scale,M=(this.currentY-G)/this.graph.view.scale,mxEvent.isAltDown(z.getEvent())||(t=this.graph.snap(t),M=this.graph.snap(M),this.graph.isGridEnabled()||(Math.abs(t)<this.graph.tolerance&&(t=0),Math.abs(M)<this.graph.tolerance&&(M=0))));this.reset();if(B){if(this.isSpaceEvent(z)){this.graph.model.beginUpdate();try{var X=this.graph.getCellsBeyond(E,G,this.graph.getDefaultParent(),
-!0,!0);for(B=0;B<X.length;B++)if(this.graph.isCellMovable(X[B])){var ia=this.graph.view.getState(X[B]),da=this.graph.getCellGeometry(X[B]);null!=ia&&null!=da&&(da=da.clone(),da.translate(t,M),this.graph.model.setGeometry(X[B],da))}}finally{this.graph.model.endUpdate()}}else X=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(X,z.getEvent());z.consume()}}};mxRubberband.prototype.mouseMove=function(t,z){if(!z.isConsumed()&&null!=this.first){var B=mxUtils.getScrollOrigin(this.graph.container);
-t=mxUtils.getOffset(this.graph.container);B.x-=t.x;B.y-=t.y;t=z.getX()+B.x;B=z.getY()+B.y;var E=this.first.x-t,G=this.first.y-B,M=this.graph.tolerance;if(null!=this.div||Math.abs(E)>M||Math.abs(G)>M)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(t,B),this.isSpaceEvent(z)?(t=this.x+this.width,B=this.y+this.height,E=this.graph.view.scale,mxEvent.isAltDown(z.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=t-this.width),this.y<this.first.y&&(this.y=B-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",
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(t.getEvent())||mxEvent.isMetaDown(t.getEvent()))&&mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(t,z){if(this.cancelled)this.cancelled=!1,z.consume();else{var A=null!=this.div&&"none"!=this.div.style.display,E=null,H=null,K=t=null;null!=
+this.first&&null!=this.currentX&&null!=this.currentY&&(E=this.first.x,H=this.first.y,t=(this.currentX-E)/this.graph.view.scale,K=(this.currentY-H)/this.graph.view.scale,mxEvent.isAltDown(z.getEvent())||(t=this.graph.snap(t),K=this.graph.snap(K),this.graph.isGridEnabled()||(Math.abs(t)<this.graph.tolerance&&(t=0),Math.abs(K)<this.graph.tolerance&&(K=0))));this.reset();if(A){if(this.isSpaceEvent(z)){this.graph.model.beginUpdate();try{var X=this.graph.getCellsBeyond(E,H,this.graph.getDefaultParent(),
+!0,!0);for(A=0;A<X.length;A++)if(this.graph.isCellMovable(X[A])){var ja=this.graph.view.getState(X[A]),ea=this.graph.getCellGeometry(X[A]);null!=ja&&null!=ea&&(ea=ea.clone(),ea.translate(t,K),this.graph.model.setGeometry(X[A],ea))}}finally{this.graph.model.endUpdate()}}else X=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(X,z.getEvent());z.consume()}}};mxRubberband.prototype.mouseMove=function(t,z){if(!z.isConsumed()&&null!=this.first){var A=mxUtils.getScrollOrigin(this.graph.container);
+t=mxUtils.getOffset(this.graph.container);A.x-=t.x;A.y-=t.y;t=z.getX()+A.x;A=z.getY()+A.y;var E=this.first.x-t,H=this.first.y-A,K=this.graph.tolerance;if(null!=this.div||Math.abs(E)>K||Math.abs(H)>K)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(t,A),this.isSpaceEvent(z)?(t=this.x+this.width,A=this.y+this.height,E=this.graph.view.scale,mxEvent.isAltDown(z.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=t-this.width),this.y<this.first.y&&(this.y=A-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)),z.consume()}};var W=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);W.apply(this,arguments)};var aa=(new Date).getTime(),oa=0,ua=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(t,z,B,E){ua.apply(this,arguments);B!=this.currentTerminalState?(aa=(new Date).getTime(),
-oa=0):oa=(new Date).getTime()-aa;this.currentTerminalState=B};var Ja=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(t){return mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())?!1:null!=this.currentTerminalState&&t.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&Ja.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
-function(t,z,B){z=null!=t&&0==t;var E=this.state.getVisibleTerminalState(z);t=null!=t&&(0==t||t>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==t)?this.graph.getConnectionConstraint(this.state,E,z):null;B=null!=(null!=t?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(z),t):null)?B?this.endFixedHandleImage:this.fixedHandleImage:null!=t&&null!=E?B?this.endTerminalHandleImage:this.terminalHandleImage:B?this.endHandleImage:this.handleImage;if(null!=B)return B=
-new mxImageShape(new mxRectangle(0,0,B.width,B.height),B.src),B.preserveImageAspect=!1,B;B=mxConstants.HANDLE_SIZE;this.preferHtml&&--B;return new mxRectangleShape(new mxRectangle(0,0,B,B),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var Ga=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(t,z,B){this.handleImage=z==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:z==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
-return Ga.apply(this,arguments)};var va=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(t){if(null!=t&&1==t.length){var z=this.graph.getModel(),B=z.getParent(t[0]),E=this.graph.getCellGeometry(t[0]);if(z.isEdge(B)&&null!=E&&E.relative&&(z=this.graph.view.getState(t[0]),null!=z&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox))return mxRectangle.fromRectangle(z.text.boundingBox)}return va.apply(this,arguments)};var za=mxGraphHandler.prototype.getGuideStates;
-mxGraphHandler.prototype.getGuideStates=function(){for(var t=za.apply(this,arguments),z=[],B=0;B<t.length;B++)"1"!=mxUtils.getValue(t[B].style,"part","0")&&z.push(t[B]);return z};var ra=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(t){var z=this.graph.getModel(),B=z.getParent(t.cell),E=this.graph.getCellGeometry(t.cell);return z.isEdge(B)&&null!=E&&E.relative&&2>t.width&&2>t.height&&null!=t.text&&null!=t.text.boundingBox?(z=t.text.unrotatedBoundingBox||
-t.text.boundingBox,new mxRectangle(Math.round(z.x),Math.round(z.y),Math.round(z.width),Math.round(z.height))):ra.apply(this,arguments)};var Ha=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(t,z){var B=this.graph.getModel(),E=B.getParent(this.state.cell),G=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(z)==mxEvent.ROTATION_HANDLE||!B.isEdge(E)||null==G||!G.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Ha.apply(this,arguments)};
+(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),z.consume()}};var W=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);W.apply(this,arguments)};var aa=(new Date).getTime(),oa=0,sa=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(t,z,A,E){sa.apply(this,arguments);A!=this.currentTerminalState?(aa=(new Date).getTime(),
+oa=0):oa=(new Date).getTime()-aa;this.currentTerminalState=A};var Ka=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(t){return mxEvent.isShiftDown(t.getEvent())&&mxEvent.isAltDown(t.getEvent())?!1:null!=this.currentTerminalState&&t.getState()==this.currentTerminalState&&2E3<oa||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&Ka.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
+function(t,z,A){z=null!=t&&0==t;var E=this.state.getVisibleTerminalState(z);t=null!=t&&(0==t||t>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==t)?this.graph.getConnectionConstraint(this.state,E,z):null;A=null!=(null!=t?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(z),t):null)?A?this.endFixedHandleImage:this.fixedHandleImage:null!=t&&null!=E?A?this.endTerminalHandleImage:this.terminalHandleImage:A?this.endHandleImage:this.handleImage;if(null!=A)return A=
+new mxImageShape(new mxRectangle(0,0,A.width,A.height),A.src),A.preserveImageAspect=!1,A;A=mxConstants.HANDLE_SIZE;this.preferHtml&&--A;return new mxRectangleShape(new mxRectangle(0,0,A,A),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var Ha=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(t,z,A){this.handleImage=z==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:z==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
+return Ha.apply(this,arguments)};var ua=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(t){if(null!=t&&1==t.length){var z=this.graph.getModel(),A=z.getParent(t[0]),E=this.graph.getCellGeometry(t[0]);if(z.isEdge(A)&&null!=E&&E.relative&&(z=this.graph.view.getState(t[0]),null!=z&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox))return mxRectangle.fromRectangle(z.text.boundingBox)}return ua.apply(this,arguments)};var Ca=mxGraphHandler.prototype.getGuideStates;
+mxGraphHandler.prototype.getGuideStates=function(){for(var t=Ca.apply(this,arguments),z=[],A=0;A<t.length;A++)"1"!=mxUtils.getValue(t[A].style,"part","0")&&z.push(t[A]);return z};var ra=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(t){var z=this.graph.getModel(),A=z.getParent(t.cell),E=this.graph.getCellGeometry(t.cell);return z.isEdge(A)&&null!=E&&E.relative&&2>t.width&&2>t.height&&null!=t.text&&null!=t.text.boundingBox?(z=t.text.unrotatedBoundingBox||
+t.text.boundingBox,new mxRectangle(Math.round(z.x),Math.round(z.y),Math.round(z.width),Math.round(z.height))):ra.apply(this,arguments)};var Da=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(t,z){var A=this.graph.getModel(),E=A.getParent(this.state.cell),H=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(z)==mxEvent.ROTATION_HANDLE||!A.isEdge(E)||null==H||!H.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Da.apply(this,arguments)};
mxVertexHandler.prototype.rotateClick=function(){var t=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),z=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&t==mxConstants.NONE&&z==mxConstants.NONE?(t=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,t,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};
-var Ta=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(t,z){Ta.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 db=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(t,z){db.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 Ua=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){Ua.apply(this,arguments);var t=!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 z=0;4>z;z++){var B=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);B.dialect=mxConstants.DIALECT_SVG;B.init(this.graph.view.getOverlayPane());this.cornerHandles.push(B)}}var E=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(G,M){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));E()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(G,M){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
-z=this.graph.getLinkForCell(this.state.cell);B=this.graph.getLinksForState(this.state);this.updateLinkHint(z,B);if(null!=z||null!=B&&0<B.length)t=!0;t&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(t,z){try{if(null==t&&(null==z||0==z.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=t||null!=z&&0<z.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding=
-"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=t&&(this.linkHint.appendChild(this.graph.createLinkForHint(t)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var B=document.createElement("img");B.setAttribute("src",Editor.editImage);B.setAttribute("title",
-mxResources.get("editLink"));B.setAttribute("width","11");B.setAttribute("height","11");B.style.marginLeft="10px";B.style.marginBottom="-1px";B.style.cursor="pointer";Editor.isDarkMode()&&(B.style.filter="invert(100%)");this.linkHint.appendChild(B);mxEvent.addListener(B,"click",mxUtils.bind(this,function(M){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(M)}));var E=B.cloneNode(!0);E.setAttribute("src",Editor.trashImage);E.setAttribute("title",mxResources.get("removeIt",
-[mxResources.get("link")]));E.style.marginLeft="4px";this.linkHint.appendChild(E);mxEvent.addListener(E,"click",mxUtils.bind(this,function(M){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(M)}))}if(null!=z)for(B=0;B<z.length;B++){var G=document.createElement("div");G.style.marginTop=null!=t||0<B?"6px":"0px";G.appendChild(this.graph.createLinkForHint(z[B].getAttribute("href"),mxUtils.getTextContent(z[B])));this.linkHint.appendChild(G)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(M){}};
-mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Va=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Va.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var t=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(E,G){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));t();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var z=this.graph.getLinkForCell(this.state.cell),B=this.graph.getLinksForState(this.state);if(null!=
-z||null!=B&&0<B.length)this.updateLinkHint(z,B),this.redrawHandles()};var Ya=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Ya.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var bb=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var t=0;t<this.moveHandles.length;t++)this.moveHandles[t].style.left=this.moveHandles[t].rowState.x+
-this.moveHandles[t].rowState.width-5+"px",this.moveHandles[t].style.top=this.moveHandles[t].rowState.y+this.moveHandles[t].rowState.height/2-6+"px";if(null!=this.cornerHandles){t=this.getSelectionBorderInset();var z=this.cornerHandles,B=z[0].bounds.height/2;z[0].bounds.x=this.state.x-z[0].bounds.width/2+t;z[0].bounds.y=this.state.y-B+t;z[0].redraw();z[1].bounds.x=z[0].bounds.x+this.state.width-2*t;z[1].bounds.y=z[0].bounds.y;z[1].redraw();z[2].bounds.x=z[0].bounds.x;z[2].bounds.y=this.state.y+this.state.height-
-2*t;z[2].redraw();z[3].bounds.x=z[1].bounds.x;z[3].bounds.y=z[2].bounds.y;z[3].redraw();for(t=0;t<this.cornerHandles.length;t++)this.cornerHandles[t].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":"");bb.apply(this);null!=this.state&&null!=this.linkHint&&(t=new mxPoint(this.state.getCenterX(),
-this.state.getCenterY()),z=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),B=mxUtils.getBoundingBox(z,this.state.style[mxConstants.STYLE_ROTATION]||"0",t),t=null!=B?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,z=null!=this.state.text?this.state.text.boundingBox:null,null==B&&(B=this.state),B=B.y+B.height,null!=z&&(B=Math.max(B,z.y+z.height)),this.linkHint.style.left=Math.max(0,Math.round(t.x+(t.width-this.linkHint.clientWidth)/
-2))+"px",this.linkHint.style.top=Math.round(B+this.verticalOffset/2+Editor.hintOffset)+"px")};var cb=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){cb.apply(this,arguments);if(null!=this.moveHandles){for(var t=0;t<this.moveHandles.length;t++)null!=this.moveHandles[t]&&null!=this.moveHandles[t].parentNode&&this.moveHandles[t].parentNode.removeChild(this.moveHandles[t]);this.moveHandles=null}if(null!=this.cornerHandles){for(t=0;t<this.cornerHandles.length;t++)null!=this.cornerHandles[t]&&
+var Ua=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(t,z){Ua.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 db=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(t,z){db.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 Ta=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){Ta.apply(this,arguments);var t=!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 z=0;4>z;z++){var A=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);A.dialect=mxConstants.DIALECT_SVG;A.init(this.graph.view.getOverlayPane());this.cornerHandles.push(A)}}var E=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(H,K){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));E()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(H,K){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
+z=this.graph.getLinkForCell(this.state.cell);A=this.graph.getLinksForState(this.state);this.updateLinkHint(z,A);if(null!=z||null!=A&&0<A.length)t=!0;t&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(t,z){try{if(null==t&&(null==z||0==z.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=t||null!=z&&0<z.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding=
+"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=t&&(this.linkHint.appendChild(this.graph.createLinkForHint(t)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var A=document.createElement("img");A.setAttribute("src",Editor.editImage);A.setAttribute("title",
+mxResources.get("editLink"));A.setAttribute("width","11");A.setAttribute("height","11");A.style.marginLeft="10px";A.style.marginBottom="-1px";A.style.cursor="pointer";Editor.isDarkMode()&&(A.style.filter="invert(100%)");this.linkHint.appendChild(A);mxEvent.addListener(A,"click",mxUtils.bind(this,function(K){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(K)}));var E=A.cloneNode(!0);E.setAttribute("src",Editor.trashImage);E.setAttribute("title",mxResources.get("removeIt",
+[mxResources.get("link")]));E.style.marginLeft="4px";this.linkHint.appendChild(E);mxEvent.addListener(E,"click",mxUtils.bind(this,function(K){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(K)}))}if(null!=z)for(A=0;A<z.length;A++){var H=document.createElement("div");H.style.marginTop=null!=t||0<A?"6px":"0px";H.appendChild(this.graph.createLinkForHint(z[A].getAttribute("href"),mxUtils.getTextContent(z[A])));this.linkHint.appendChild(H)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(K){}};
+mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var $a=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){$a.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var t=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(E,H){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));t();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var z=this.graph.getLinkForCell(this.state.cell),A=this.graph.getLinksForState(this.state);if(null!=
+z||null!=A&&0<A.length)this.updateLinkHint(z,A),this.redrawHandles()};var Xa=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Xa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Va=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var t=0;t<this.moveHandles.length;t++)this.moveHandles[t].style.left=this.moveHandles[t].rowState.x+
+this.moveHandles[t].rowState.width-5+"px",this.moveHandles[t].style.top=this.moveHandles[t].rowState.y+this.moveHandles[t].rowState.height/2-6+"px";if(null!=this.cornerHandles){t=this.getSelectionBorderInset();var z=this.cornerHandles,A=z[0].bounds.height/2;z[0].bounds.x=this.state.x-z[0].bounds.width/2+t;z[0].bounds.y=this.state.y-A+t;z[0].redraw();z[1].bounds.x=z[0].bounds.x+this.state.width-2*t;z[1].bounds.y=z[0].bounds.y;z[1].redraw();z[2].bounds.x=z[0].bounds.x;z[2].bounds.y=this.state.y+this.state.height-
+2*t;z[2].redraw();z[3].bounds.x=z[1].bounds.x;z[3].bounds.y=z[2].bounds.y;z[3].redraw();for(t=0;t<this.cornerHandles.length;t++)this.cornerHandles[t].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":"");Va.apply(this);null!=this.state&&null!=this.linkHint&&(t=new mxPoint(this.state.getCenterX(),
+this.state.getCenterY()),z=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),A=mxUtils.getBoundingBox(z,this.state.style[mxConstants.STYLE_ROTATION]||"0",t),t=null!=A?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,z=null!=this.state.text?this.state.text.boundingBox:null,null==A&&(A=this.state),A=A.y+A.height,null!=z&&(A=Math.max(A,z.y+z.height)),this.linkHint.style.left=Math.max(0,Math.round(t.x+(t.width-this.linkHint.clientWidth)/
+2))+"px",this.linkHint.style.top=Math.round(A+this.verticalOffset/2+Editor.hintOffset)+"px")};var Ya=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){Ya.apply(this,arguments);if(null!=this.moveHandles){for(var t=0;t<this.moveHandles.length;t++)null!=this.moveHandles[t]&&null!=this.moveHandles[t].parentNode&&this.moveHandles[t].parentNode.removeChild(this.moveHandles[t]);this.moveHandles=null}if(null!=this.cornerHandles){for(t=0;t<this.cornerHandles.length;t++)null!=this.cornerHandles[t]&&
null!=this.cornerHandles[t].node&&null!=this.cornerHandles[t].node.parentNode&&this.cornerHandles[t].node.parentNode.removeChild(this.cornerHandles[t].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 jb=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(jb.apply(this),null!=this.state&&null!=this.linkHint)){var t=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(t=new mxRectangle(t.x,t.y,t.width,t.height),t.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(t.x+(t.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=
-Math.round(t.y+t.height+Editor.hintOffset)+"px"}};var $a=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){$a.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.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),
+Math.round(t.y+t.height+Editor.hintOffset)+"px"}};var bb=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){bb.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var da=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){da.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)}}();Format=function(a,b){this.editorUi=a;this.container=b};Format.inactiveTabBackgroundColor="#f1f3f4";Format.classicFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 10 2 L 5 8 L 10 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);Format.classicThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 4 L 3 8 L 8 12 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
Format.openFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 0 L 0 8 L 8 16 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.openThinFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 4 L 0 8 L 8 12 M 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);
Format.openAsyncFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 8 4 L 0 8 L 24 8" stroke="#404040" fill="transparent"/>',32,20);Format.blockFilledMarkerImage=Graph.createSvgImage(20,22,'<path transform="translate(4,2)" stroke-width="2" d="M 0 8 L 8 2 L 8 14 Z M 0 8 L 24 8" stroke="#404040" fill="#404040"/>',32,20);
@@ -3259,40 +3259,40 @@ Format.prototype.labelIndex=0;Format.prototype.diagramIndex=0;Format.prototype.c
Format.prototype.init=function(){var a=this.editorUi,b=a.editor,f=b.graph;this.update=mxUtils.bind(this,function(d,g){this.refresh()});f.getSelectionModel().addListener(mxEvent.CHANGE,this.update);f.getModel().addListener(mxEvent.CHANGE,this.update);f.addListener(mxEvent.EDITING_STARTED,this.update);f.addListener(mxEvent.EDITING_STOPPED,this.update);f.getView().addListener("unitChanged",this.update);b.addListener("autosaveChanged",this.update);f.addListener(mxEvent.ROOT,this.update);a.addListener("styleChanged",
this.update);this.refresh()};Format.prototype.clear=function(){this.container.innerText="";if(null!=this.panels)for(var a=0;a<this.panels.length;a++)this.panels[a].destroy();this.panels=[]};Format.prototype.refresh=function(){null!=this.pendingRefresh&&(window.clearTimeout(this.pendingRefresh),this.pendingRefresh=null);this.pendingRefresh=window.setTimeout(mxUtils.bind(this,function(){this.immediateRefresh()}))};
Format.prototype.immediateRefresh=function(){if("0px"!=this.container.style.width){this.clear();var a=this.editorUi,b=a.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.color="rgb(112, 112, 112)";f.style.textAlign="left";f.style.cursor="default";var d=document.createElement("div");d.className="geFormatSection";d.style.textAlign="center";d.style.fontWeight="bold";d.style.paddingTop="8px";d.style.fontSize="13px";d.style.borderWidth="0px 0px 1px 1px";d.style.borderStyle=
-"solid";d.style.display="inline-block";d.style.height="25px";d.style.overflow="hidden";d.style.width="100%";this.container.appendChild(f);mxEvent.addListener(d,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),e=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,F,K,D){var O=mxUtils.bind(this,function(Q){k!=C&&(e?this.labelIndex=K:b.isSelectionEmpty()?this.diagramIndex=K:this.currentIndex=K,null!=k&&(k.style.backgroundColor=
-Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=F&&(null!=n&&(n.style.display="none"),n=F,n.style.display=""))});mxEvent.addListener(C,"click",O);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(Q){Q.preventDefault()}));(D&&null==k||K==(e?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&O()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(d,mxResources.get("diagram"));
+"solid";d.style.display="inline-block";d.style.height="25px";d.style.overflow="hidden";d.style.width="100%";this.container.appendChild(f);mxEvent.addListener(d,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(C){C.preventDefault()}));var g=a.getSelectionState(),e=g.containsLabel,k=null,n=null,u=mxUtils.bind(this,function(C,G,J,D){var N=mxUtils.bind(this,function(Q){k!=C&&(e?this.labelIndex=J:b.isSelectionEmpty()?this.diagramIndex=J:this.currentIndex=J,null!=k&&(k.style.backgroundColor=
+Format.inactiveTabBackgroundColor,k.style.borderBottomWidth="1px"),k=C,k.style.backgroundColor="",k.style.borderBottomWidth="0px",n!=G&&(null!=n&&(n.style.display="none"),n=G,n.style.display=""))});mxEvent.addListener(C,"click",N);mxEvent.addListener(C,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(Q){Q.preventDefault()}));(D&&null==k||J==(e?this.labelIndex:b.isSelectionEmpty()?this.diagramIndex:this.currentIndex))&&N()}),m=0;if(b.isSelectionEmpty()){mxUtils.write(d,mxResources.get("diagram"));
d.style.borderLeftWidth="0px";f.appendChild(d);g=f.cloneNode(!1);this.panels.push(new DiagramFormatPanel(this,a,g));this.container.appendChild(g);if(null!=Editor.styles){g.style.display="none";d.style.width=this.showCloseButton?"106px":"50%";d.style.cursor="pointer";d.style.backgroundColor=Format.inactiveTabBackgroundColor;var r=d.cloneNode(!1);r.style.borderLeftWidth="1px";r.style.borderRightWidth="1px";r.style.backgroundColor=Format.inactiveTabBackgroundColor;u(d,g,m++);var x=f.cloneNode(!1);x.style.display=
"none";mxUtils.write(r,mxResources.get("style"));f.appendChild(r);this.panels.push(new DiagramStylePanel(this,a,x));this.container.appendChild(x);u(r,x,m++)}this.showCloseButton&&(r=d.cloneNode(!1),r.style.borderLeftWidth="1px",r.style.borderRightWidth="1px",r.style.borderBottomWidth="1px",r.style.backgroundColor=Format.inactiveTabBackgroundColor,r.style.position="absolute",r.style.right="0px",r.style.top="0px",r.style.width="25px",u=document.createElement("img"),u.setAttribute("border","0"),u.setAttribute("src",
Dialog.prototype.closeImage),u.setAttribute("title",mxResources.get("hide")),u.style.position="absolute",u.style.display="block",u.style.right="0px",u.style.top="8px",u.style.cursor="pointer",u.style.marginTop="1px",u.style.marginRight="6px",u.style.border="1px solid transparent",u.style.padding="1px",u.style.opacity=.5,r.appendChild(u),mxEvent.addListener(u,"click",function(){a.actions.get("formatPanel").funct()}),f.appendChild(r))}else if(b.isEditing())mxUtils.write(d,mxResources.get("text")),f.appendChild(d),
-this.panels.push(new TextFormatPanel(this,a,f));else{d.style.backgroundColor=Format.inactiveTabBackgroundColor;d.style.borderLeftWidth="1px";d.style.cursor="pointer";d.style.width=e||0==g.cells.length?"50%":"33.3%";r=d.cloneNode(!1);var A=r.cloneNode(!1);r.style.backgroundColor=Format.inactiveTabBackgroundColor;A.style.backgroundColor=Format.inactiveTabBackgroundColor;e?r.style.borderLeftWidth="0px":(d.style.borderLeftWidth="0px",mxUtils.write(d,mxResources.get("style")),f.appendChild(d),x=f.cloneNode(!1),
-x.style.display="none",this.panels.push(new StyleFormatPanel(this,a,x)),this.container.appendChild(x),u(d,x,m++));mxUtils.write(r,mxResources.get("text"));f.appendChild(r);d=f.cloneNode(!1);d.style.display="none";this.panels.push(new TextFormatPanel(this,a,d));this.container.appendChild(d);mxUtils.write(A,mxResources.get("arrange"));f.appendChild(A);f=f.cloneNode(!1);f.style.display="none";this.panels.push(new ArrangePanel(this,a,f));this.container.appendChild(f);0<g.cells.length?u(r,d,m++):r.style.display=
-"none";u(A,f,m++,!0)}}};BaseFormatPanel=function(a,b,f){this.format=a;this.editorUi=b;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
-BaseFormatPanel.prototype.installInputHandler=function(a,b,f,d,g,e,k,n){e=null!=e?e:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;d=null!=d?d:1;g=null!=g?g:999;var r=null,x=!1,A=mxUtils.bind(this,function(C){var F=n?parseFloat(a.value):parseInt(a.value);isNaN(F)||b!=mxConstants.STYLE_ROTATION||(F=mxUtils.mod(Math.round(100*F),36E3)/100);F=Math.min(g,Math.max(d,isNaN(F)?f:F));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(F),a.value=F+e,
-x=!1);else if(F!=mxUtils.getValue(u.getSelectionState().style,b,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var K=u.getSelectionState().cells;m.setCellStyles(b,F,K);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(K,function(O){O.style.fontSize=F+"px";O.removeAttribute("size")});for(var D=0;D<K.length;D++)0==m.model.getChildCount(K[D])&&m.autoSizeCell(K[D],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[F],"cells",K))}finally{m.getModel().endUpdate()}}a.value=
-F+e;mxEvent.consume(C)});k&&m.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",A);mxEvent.addListener(a,"blur",A);return A};
+this.panels.push(new TextFormatPanel(this,a,f));else{d.style.backgroundColor=Format.inactiveTabBackgroundColor;d.style.borderLeftWidth="1px";d.style.cursor="pointer";d.style.width=e||0==g.cells.length?"50%":"33.3%";r=d.cloneNode(!1);var B=r.cloneNode(!1);r.style.backgroundColor=Format.inactiveTabBackgroundColor;B.style.backgroundColor=Format.inactiveTabBackgroundColor;e?r.style.borderLeftWidth="0px":(d.style.borderLeftWidth="0px",mxUtils.write(d,mxResources.get("style")),f.appendChild(d),x=f.cloneNode(!1),
+x.style.display="none",this.panels.push(new StyleFormatPanel(this,a,x)),this.container.appendChild(x),u(d,x,m++));mxUtils.write(r,mxResources.get("text"));f.appendChild(r);d=f.cloneNode(!1);d.style.display="none";this.panels.push(new TextFormatPanel(this,a,d));this.container.appendChild(d);mxUtils.write(B,mxResources.get("arrange"));f.appendChild(B);f=f.cloneNode(!1);f.style.display="none";this.panels.push(new ArrangePanel(this,a,f));this.container.appendChild(f);0<g.cells.length?u(r,d,m++):r.style.display=
+"none";u(B,f,m++,!0)}}};BaseFormatPanel=function(a,b,f){this.format=a;this.editorUi=b;this.container=f;this.listeners=[]};BaseFormatPanel.prototype.buttonBackgroundColor="white";
+BaseFormatPanel.prototype.installInputHandler=function(a,b,f,d,g,e,k,n){e=null!=e?e:"";n=null!=n?n:!1;var u=this.editorUi,m=u.editor.graph;d=null!=d?d:1;g=null!=g?g:999;var r=null,x=!1,B=mxUtils.bind(this,function(C){var G=n?parseFloat(a.value):parseInt(a.value);isNaN(G)||b!=mxConstants.STYLE_ROTATION||(G=mxUtils.mod(Math.round(100*G),36E3)/100);G=Math.min(g,Math.max(d,isNaN(G)?f:G));if(m.cellEditor.isContentEditing()&&k)x||(x=!0,null!=r&&(m.cellEditor.restoreSelection(r),r=null),k(G),a.value=G+e,
+x=!1);else if(G!=mxUtils.getValue(u.getSelectionState().style,b,f)){m.isEditing()&&m.stopEditing(!0);m.getModel().beginUpdate();try{var J=u.getSelectionState().cells;m.setCellStyles(b,G,J);b==mxConstants.STYLE_FONTSIZE&&m.updateLabelElements(J,function(N){N.style.fontSize=G+"px";N.removeAttribute("size")});for(var D=0;D<J.length;D++)0==m.model.getChildCount(J[D])&&m.autoSizeCell(J[D],!1);u.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[G],"cells",J))}finally{m.getModel().endUpdate()}}a.value=
+G+e;mxEvent.consume(C)});k&&m.cellEditor.isContentEditing()&&(mxEvent.addListener(a,"mousedown",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}),mxEvent.addListener(a,"touchstart",function(){document.activeElement==m.cellEditor.textarea&&(r=m.cellEditor.saveSelection())}));mxEvent.addListener(a,"change",B);mxEvent.addListener(a,"blur",B);return B};
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 f=this.editorUi.actions.get(b);b=null;null!=f&&f.isEnabled()&&(b=mxUtils.button(f.label,function(d){f.funct(d,d)}),b.setAttribute("title",f.label+(null!=f.shortcut?" ("+f.shortcut+")":"")),b.style.marginBottom="2px",b.style.width="210px",a.appendChild(b),result=!0);return b};
BaseFormatPanel.prototype.addActions=function(a,b){for(var f=null,d=null,g=0,e=0;e<b.length;e++){var k=this.addAction(a,b[e]);null!=k&&(g++,0==mxUtils.mod(g,2)&&(d.style.marginRight="2px",d.style.width="104px",k.style.width="104px",f.parentNode.removeChild(f)),f=mxUtils.br(a),d=k)}return g};
BaseFormatPanel.prototype.createStepper=function(a,b,f,d,g,e,k){f=null!=f?f:1;d=null!=d?d:9;var n=10*f,u=document.createElement("div");mxUtils.setPrefixedStyle(u.style,"borderRadius","3px");u.style.border="1px solid rgb(192, 192, 192)";u.style.position="absolute";var m=document.createElement("div");m.style.borderBottom="1px solid rgb(192, 192, 192)";m.style.position="relative";m.style.height=d+"px";m.style.width="10px";m.className="geBtnUp";u.appendChild(m);var r=m.cloneNode(!1);r.style.border="none";
-r.style.height=d+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=e||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(A)?n:f),null!=b&&b(A));mxEvent.consume(A)});mxEvent.addGestureListeners(m,function(A){mxEvent.consume(A)},null,function(A){""==a.value&&(a.value=e||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(A)?
-n:f),null!=b&&b(A));mxEvent.consume(A)});if(g){var x=null;mxEvent.addGestureListeners(u,function(A){mxEvent.consume(A)},null,function(A){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(A)}})}else mxEvent.addListener(u,"click",function(A){mxEvent.consume(A)});return u};
+r.style.height=d+"px";r.className="geBtnDown";u.appendChild(r);mxEvent.addGestureListeners(r,function(B){mxEvent.consume(B)},null,function(B){""==a.value&&(a.value=e||"2");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C-(mxEvent.isShiftDown(B)?n:f),null!=b&&b(B));mxEvent.consume(B)});mxEvent.addGestureListeners(m,function(B){mxEvent.consume(B)},null,function(B){""==a.value&&(a.value=e||"0");var C=k?parseFloat(a.value):parseInt(a.value);isNaN(C)||(a.value=C+(mxEvent.isShiftDown(B)?
+n:f),null!=b&&b(B));mxEvent.consume(B)});if(g){var x=null;mxEvent.addGestureListeners(u,function(B){mxEvent.consume(B)},null,function(B){if(null!=x){try{x.select()}catch(C){}x=null;mxEvent.consume(B)}})}else mxEvent.addListener(u,"click",function(B){mxEvent.consume(B)});return u};
BaseFormatPanel.prototype.createOption=function(a,b,f,d,g){var e=document.createElement("div");e.style.padding="3px 0px 3px 0px";e.style.whiteSpace="nowrap";e.style.textOverflow="ellipsis";e.style.overflow="hidden";e.style.width="200px";e.style.height="18px";var k=document.createElement("input");k.setAttribute("type","checkbox");k.style.margin="1px 6px 0px 0px";k.style.verticalAlign="top";e.appendChild(k);var n=document.createElement("span");n.style.verticalAlign="top";n.style.userSelect="none";mxUtils.write(n,
-a);e.appendChild(n);var u=!1,m=b(),r=function(x,A){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,b()!=m&&f(m,A)),u=!1)};mxEvent.addListener(e,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var A=mxEvent.getSource(x);if(A==e||A==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=d&&(d.install(r),this.listeners.push(d));null!=g&&g(e);return e};
-BaseFormatPanel.prototype.createCellOption=function(a,b,f,d,g,e,k,n,u){var m=this.editorUi,r=m.editor.graph;d=null!=d?"null"==d?null:d:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,b,f)!=g},function(A){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;A=A?d:g;r.setCellStyles(b,A,C);null!=e&&e(C,A);m.fireEvent(new mxEventObject("styleChanged",
-"keys",[b],"values",[A],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(A){this.listener=function(){A(mxUtils.getValue(x,b,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
+a);e.appendChild(n);var u=!1,m=b(),r=function(x,B){u||(u=!0,x?(k.setAttribute("checked","checked"),k.defaultChecked=!0,k.checked=!0):(k.removeAttribute("checked"),k.defaultChecked=!1,k.checked=!1),m!=x&&(m=x,b()!=m&&f(m,B)),u=!1)};mxEvent.addListener(e,"click",function(x){if("disabled"!=k.getAttribute("disabled")){var B=mxEvent.getSource(x);if(B==e||B==n)k.checked=!k.checked;r(k.checked,x)}});r(m);null!=d&&(d.install(r),this.listeners.push(d));null!=g&&g(e);return e};
+BaseFormatPanel.prototype.createCellOption=function(a,b,f,d,g,e,k,n,u){var m=this.editorUi,r=m.editor.graph;d=null!=d?"null"==d?null:d:1;g=null!=g?"null"==g?null:g:0;var x=null!=u?r.getCommonStyle(u):m.getSelectionState().style;return this.createOption(a,function(){return mxUtils.getValue(x,b,f)!=g},function(B){n&&r.stopEditing();if(null!=k)k.funct();else{r.getModel().beginUpdate();try{var C=null!=u?u:m.getSelectionState().cells;B=B?d:g;r.setCellStyles(b,B,C);null!=e&&e(C,B);m.fireEvent(new mxEventObject("styleChanged",
+"keys",[b],"values",[B],"cells",C))}finally{r.getModel().endUpdate()}}},{install:function(B){this.listener=function(){B(mxUtils.getValue(x,b,f)!=g)};r.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){r.getModel().removeListener(this.listener)}})};
BaseFormatPanel.prototype.createColorOption=function(a,b,f,d,g,e,k,n){var u=document.createElement("div");u.style.padding="3px 0px 3px 0px";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.width="200px";u.style.height="18px";var m=document.createElement("input");m.setAttribute("type","checkbox");m.style.margin="1px 6px 0px 0px";m.style.verticalAlign="top";k||u.appendChild(m);var r=document.createElement("span");r.style.verticalAlign="top";mxUtils.write(r,a);u.appendChild(r);var x=b(),
-A=!1,C=null,F=function(D,O,Q){if(!A){var R="null"==d?null:d;A=!0;D=/(^#?[a-zA-Z0-9]*$)/.test(D)?D:R;R=null!=D&&D!=mxConstants.NONE?D:R;var P=document.createElement("div");P.style.width="36px";P.style.height="12px";P.style.margin="3px";P.style.border="1px solid black";P.style.backgroundColor="default"==R?n:R;C.innerText="";C.appendChild(P);null!=D&&D!=mxConstants.NONE&&1<D.length&&"string"===typeof D&&(R="#"==D.charAt(0)?D.substring(1).toUpperCase():D,R=ColorDialog.prototype.colorNames[R],C.setAttribute("title",
-null!=R?R+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=D&&D!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=e&&e("null"==D?null:D);x=D;O||(Q||k||b()!=x)&&f("null"==x?null:x,x);A=!1}},K=document.createElement("input");K.setAttribute("type","color");K.style.visibility="hidden";K.style.width="0px";K.style.height="0px";K.style.border=
-"none";u.appendChild(K);C=mxUtils.button("",mxUtils.bind(this,function(D){var O=x;"default"==O&&(O=n);!mxEvent.isShiftDown(D)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(O,function(Q){F(Q,null,!0)},n):(K.value=O,K.click(),mxEvent.addListener(K,"input",function(){F(K.value,null,!0)}));mxEvent.consume(D)}));C.style.position="absolute";C.style.marginTop="-3px";C.style.left="178px";C.style.height="22px";C.className="geColorBtn";C.style.display=m.checked||k?"":"none";u.appendChild(C);a=null!=
-x&&"string"===typeof x&&"#"==x.charAt(0)?x.substring(1).toUpperCase():x;a=ColorDialog.prototype.colorNames[a];C.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(u,"click",function(D){D=mxEvent.getSource(D);if(D==m||"INPUT"!=D.nodeName)D!=m&&(m.checked=!m.checked),m.checked||null==x||x==mxConstants.NONE||d==mxConstants.NONE||(d=x),F(m.checked?d:mxConstants.NONE)});F(x,!0);null!=g&&(g.install(F),this.listeners.push(g));return u};
+B=!1,C=null,G=function(D,N,Q){if(!B){var R="null"==d?null:d;B=!0;D=/(^#?[a-zA-Z0-9]*$)/.test(D)?D:R;R=null!=D&&D!=mxConstants.NONE?D:R;var P=document.createElement("div");P.style.width="36px";P.style.height="12px";P.style.margin="3px";P.style.border="1px solid black";P.style.backgroundColor="default"==R?n:R;C.innerText="";C.appendChild(P);null!=D&&D!=mxConstants.NONE&&1<D.length&&"string"===typeof D&&(R="#"==D.charAt(0)?D.substring(1).toUpperCase():D,R=ColorDialog.prototype.colorNames[R],C.setAttribute("title",
+null!=R?R+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper"));null!=D&&D!=mxConstants.NONE?(m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0):(m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1);C.style.display=m.checked||k?"":"none";null!=e&&e("null"==D?null:D);x=D;N||(Q||k||b()!=x)&&f("null"==x?null:x,x);B=!1}},J=document.createElement("input");J.setAttribute("type","color");J.style.visibility="hidden";J.style.width="0px";J.style.height="0px";J.style.border=
+"none";u.appendChild(J);C=mxUtils.button("",mxUtils.bind(this,function(D){var N=x;"default"==N&&(N=n);!mxEvent.isShiftDown(D)||mxClient.IS_IE||mxClient.IS_IE11?this.editorUi.pickColor(N,function(Q){G(Q,null,!0)},n):(J.value=N,J.click(),mxEvent.addListener(J,"input",function(){G(J.value,null,!0)}));mxEvent.consume(D)}));C.style.position="absolute";C.style.marginTop="-3px";C.style.left="178px";C.style.height="22px";C.className="geColorBtn";C.style.display=m.checked||k?"":"none";u.appendChild(C);a=null!=
+x&&"string"===typeof x&&"#"==x.charAt(0)?x.substring(1).toUpperCase():x;a=ColorDialog.prototype.colorNames[a];C.setAttribute("title",null!=a?a+" (Shift+Click for Color Dropper)":"Shift+Click for Color Dropper");mxEvent.addListener(u,"click",function(D){D=mxEvent.getSource(D);if(D==m||"INPUT"!=D.nodeName)D!=m&&(m.checked=!m.checked),m.checked||null==x||x==mxConstants.NONE||d==mxConstants.NONE||(d=x),G(m.checked?d:mxConstants.NONE)});G(x,!0);null!=g&&(g.install(G),this.listeners.push(g));return u};
BaseFormatPanel.prototype.createCellColorOption=function(a,b,f,d,g,e){var k=this.editorUi,n=k.editor.graph;return this.createColorOption(a,function(){var u=n.view.getState(k.getSelectionState().cells[0]);return null!=u?mxUtils.getValue(u.style,b,null):null},function(u,m){n.getModel().beginUpdate();try{var r=k.getSelectionState().cells;n.setCellStyles(b,u,r);null!=g&&g(u);k.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[u],"cells",r))}finally{n.getModel().endUpdate()}},f||mxConstants.NONE,
{install:function(u){this.listener=function(){var m=n.view.getState(k.getSelectionState().cells[0]);null!=m&&u(mxUtils.getValue(m.style,b,null),!0)};n.getModel().addListener(mxEvent.CHANGE,this.listener)},destroy:function(){n.getModel().removeListener(this.listener)}},d,null,e)};
BaseFormatPanel.prototype.addArrow=function(a,b,f){b=null!=b?b:10;var d=document.createElement("div");d.style.borderLeft="1px solid #a0a0a0";d.style.display="inline-block";d.style.height=b+"px";d.style.paddingRight="4px";d.style.padding="6px";f?(d.style.verticalAlign="top",d.style.marginLeft="1px"):(b=10-b,2==b?d.style.paddingTop="6px":0<b?d.style.paddingTop=6-b+"px":d.style.marginTop="-2px");b=document.createElement("img");b.setAttribute("border","0");b.setAttribute("valign","middle");b.setAttribute("src",
Toolbar.prototype.dropDownImage);d.appendChild(b);b=d.getElementsByTagName("img")[0];b.style.position="relative";b.style.left="1px";b.style.top=mxClient.IS_FF?"0px":"-4px";mxUtils.setOpacity(d,70);b=a.getElementsByTagName("div")[0];null!=b&&(b.style.paddingRight="6px",b.style.marginLeft="4px",b.style.marginTop="-1px",b.style.display="inline-block",mxUtils.setOpacity(b,60));mxUtils.setOpacity(a,100);a.style.border="1px solid #a0a0a0";a.style.backgroundColor=this.buttonBackgroundColor;a.style.backgroundImage=
"none";a.style.width="auto";a.className+=" geColorBtn";mxUtils.setPrefixedStyle(a.style,"borderRadius","3px");a.appendChild(d);return b};
BaseFormatPanel.prototype.addUnitInput=function(a,b,f,d,g,e,k,n,u){k=null!=k?k:0;b=document.createElement("input");b.style.position="absolute";b.style.textAlign="right";b.style.marginTop="-2px";b.style.left=228-f-d+"px";b.style.width=d+"px";b.style.height="21px";b.style.border="1px solid rgb(160, 160, 160)";b.style.borderRadius="4px";b.style.boxSizing="border-box";a.appendChild(b);d=this.createStepper(b,g,e,null,n,null,u);d.style.marginTop=k-2+"px";d.style.left=228-f+"px";a.appendChild(d);return b};
-BaseFormatPanel.prototype.createRelativeOption=function(a,b,f,d,g){f=null!=f?f:52;var e=this.editorUi,k=e.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=d)d(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var A=k.view.getState(e.getSelectionState().cells[0]);null!=A&&x!=mxUtils.getValue(A.style,b,100)&&(100==x&&(x=null),A=e.getSelectionState().cells,
-k.setCellStyles(b,x,A),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[x],"cells",A)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=d);if(null!=b){var m=mxUtils.bind(this,function(r,x,A){if(A||u!=document.activeElement)r=e.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,b,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
+BaseFormatPanel.prototype.createRelativeOption=function(a,b,f,d,g){f=null!=f?f:52;var e=this.editorUi,k=e.editor.graph,n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";mxUtils.write(n,a);n.style.fontWeight="bold";a=mxUtils.bind(this,function(r){if(null!=d)d(u);else{var x=parseInt(u.value);x=Math.min(100,Math.max(0,isNaN(x)?100:x));var B=k.view.getState(e.getSelectionState().cells[0]);null!=B&&x!=mxUtils.getValue(B.style,b,100)&&(100==x&&(x=null),B=e.getSelectionState().cells,
+k.setCellStyles(b,x,B),this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",[b],"values",[x],"cells",B)));u.value=(null!=x?x:"100")+" %"}mxEvent.consume(r)});var u=this.addUnitInput(n,"%",16,f,a,10,-15,null!=d);if(null!=b){var m=mxUtils.bind(this,function(r,x,B){if(B||u!=document.activeElement)r=e.getSelectionState(),r=parseInt(mxUtils.getValue(r.style,b,100)),u.value=isNaN(r)?"":r+" %"});mxEvent.addListener(u,"keydown",function(r){13==r.keyCode?(k.container.focus(),mxEvent.consume(r)):
27==r.keyCode&&(m(null,null,!0),k.container.focus(),mxEvent.consume(r))});k.getModel().addListener(mxEvent.CHANGE,m);this.listeners.push({destroy:function(){k.getModel().removeListener(m)}});m()}mxEvent.addListener(u,"blur",a);mxEvent.addListener(u,"change",a);null!=g&&g(u);return n};
BaseFormatPanel.prototype.addLabel=function(a,b,f,d){d=null!=d?d:61;var g=document.createElement("div");mxUtils.write(g,b);g.style.position="absolute";g.style.left=240-f-d+"px";g.style.width=d+"px";g.style.marginTop="6px";g.style.textAlign="center";a.appendChild(g)};
BaseFormatPanel.prototype.addKeyHandler=function(a,b){mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(f){13==f.keyCode?(this.editorUi.editor.graph.container.focus(),mxEvent.consume(f)):27==f.keyCode&&(null!=b&&b(null,null,!0),this.editorUi.editor.graph.container.focus(),mxEvent.consume(f))}))};
@@ -3323,111 +3323,111 @@ 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,f=this.editorUi,d=f.editor.graph,g=d.getModel(),e=f.getSelectionState(),k=this.createPanel();k.style.paddingBottom="8px";var n=document.createElement("div");n.style.position="absolute";n.style.width="50px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("size"));k.appendChild(n);var u=this.addUnitInput(k,this.getUnit(),87,52,function(){C.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),
-m=this.addUnitInput(k,this.getUnit(),16,52,function(){F.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,
+m=this.addUnitInput(k,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(){f.actions.get("autosize").funct()});k.appendChild(r);e.row?(u.style.visibility="hidden",u.nextSibling.style.visibility="hidden"):this.addLabel(k,mxResources.get("width"),87);this.addLabel(k,mxResources.get("height"),16);mxUtils.br(k);n=document.createElement("div");n.style.paddingTop="8px";n.style.paddingRight="20px";n.style.whiteSpace="nowrap";n.style.textAlign="right";var x=this.createCellOption(mxResources.get("constrainProportions"),
-mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);e.cell||e.row?r.style.visibility="hidden":k.appendChild(n);var A=x.getElementsByTagName("input")[0];this.addKeyHandler(u,Q);this.addKeyHandler(m,Q);var C=this.addGeometryHandler(u,function(T,U,fa){if(d.isTableCell(fa))return d.setTableColumnWidth(fa,U-T.width,!0),!0;0<T.width&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.height=Math.round(T.height*U*100/T.width)/100),T.width=U)});var F=this.addGeometryHandler(m,function(T,
-U,fa){d.isTableCell(fa)&&(fa=d.model.getParent(fa));if(d.isTableRow(fa))return d.setTableRowHeight(fa,U-T.height),!0;0<T.height&&(U=Math.max(1,b.fromUnit(U)),A.checked&&(T.width=Math.round(T.width*U*100/T.height)/100),T.height=U)});(e.resizable||e.row||e.cell)&&a.appendChild(k);var K=this.createPanel();K.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
-K.appendChild(n);var D=this.addUnitInput(K,this.getUnit(),87,52,function(){R.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),O=this.addUnitInput(K,this.getUnit(),16,52,function(){P.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(K);this.addLabel(K,mxResources.get("left"),87);this.addLabel(K,mxResources.get("top"),16);var Q=mxUtils.bind(this,function(T,U,fa){e=f.getSelectionState();if(e.containsLabel||e.vertices.length!=d.getSelectionCount()||
-null==e.width||null==e.height)k.style.display="none";else{k.style.display="";if(fa||document.activeElement!=u)u.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(fa||document.activeElement!=m)m.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){K.style.display="";if(fa||document.activeElement!=D)D.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(fa||document.activeElement!=O)O.value=this.inUnit(e.y)+
-(""==e.y?"":" "+this.getUnit())}else K.style.display="none"});this.addKeyHandler(D,Q);this.addKeyHandler(O,Q);g.addListener(mxEvent.CHANGE,Q);this.listeners.push({destroy:function(){g.removeListener(Q)}});Q();var R=this.addGeometryHandler(D,function(T,U){U=b.fromUnit(U);T.relative?T.offset.x=U:T.x=U});var P=this.addGeometryHandler(O,function(T,U){U=b.fromUnit(U);T.relative?T.offset.y=U:T.y=U});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&g.isEdge(g.getParent(e.vertices[0]))){var Z=d.getCellGeometry(e.vertices[0]);
-null!=Z&&Z.relative&&(n=mxUtils.button(mxResources.get("center"),mxUtils.bind(this,function(T){g.beginUpdate();try{Z=Z.clone(),Z.x=0,Z.y=0,Z.offset=new mxPoint,g.setGeometry(e.vertices[0],Z)}finally{g.endUpdate()}})),n.setAttribute("title",mxResources.get("center")),n.style.width="210px",n.style.position="absolute",mxUtils.br(K),mxUtils.br(K),K.appendChild(n))}a.appendChild(K)}};
-ArrangePanel.prototype.addGeometryHandler=function(a,b){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=e+" "+k.getUnit();else if(u!=e){g.getModel().beginUpdate();try{for(var m=d.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!b(x,u,m[r]))){var A=g.view.getState(m[r]);null!=A&&g.isRecursiveVertexResize(A)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}e=
+mxConstants.STYLE_ASPECT,null,"fixed","null");x.style.width="210px";n.appendChild(x);e.cell||e.row?r.style.visibility="hidden":k.appendChild(n);var B=x.getElementsByTagName("input")[0];this.addKeyHandler(u,Q);this.addKeyHandler(m,Q);var C=this.addGeometryHandler(u,function(U,V,ia){if(d.isTableCell(ia))return d.setTableColumnWidth(ia,V-U.width,!0),!0;0<U.width&&(V=Math.max(1,b.fromUnit(V)),B.checked&&(U.height=Math.round(U.height*V*100/U.width)/100),U.width=V)});var G=this.addGeometryHandler(m,function(U,
+V,ia){d.isTableCell(ia)&&(ia=d.model.getParent(ia));if(d.isTableRow(ia))return d.setTableRowHeight(ia,V-U.height),!0;0<U.height&&(V=Math.max(1,b.fromUnit(V)),B.checked&&(U.width=Math.round(U.width*V*100/U.height)/100),U.height=V)});(e.resizable||e.row||e.cell)&&a.appendChild(k);var J=this.createPanel();J.style.paddingBottom="30px";n=document.createElement("div");n.style.position="absolute";n.style.width="70px";n.style.marginTop="0px";n.style.fontWeight="bold";mxUtils.write(n,mxResources.get("position"));
+J.appendChild(n);var D=this.addUnitInput(J,this.getUnit(),87,52,function(){R.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit()),N=this.addUnitInput(J,this.getUnit(),16,52,function(){P.apply(this,arguments)},this.getUnitStep(),null,null,this.isFloatUnit());mxUtils.br(J);this.addLabel(J,mxResources.get("left"),87);this.addLabel(J,mxResources.get("top"),16);var Q=mxUtils.bind(this,function(U,V,ia){e=f.getSelectionState();if(e.containsLabel||e.vertices.length!=d.getSelectionCount()||
+null==e.width||null==e.height)k.style.display="none";else{k.style.display="";if(ia||document.activeElement!=u)u.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(ia||document.activeElement!=m)m.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){J.style.display="";if(ia||document.activeElement!=D)D.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(ia||document.activeElement!=N)N.value=this.inUnit(e.y)+
+(""==e.y?"":" "+this.getUnit())}else J.style.display="none"});this.addKeyHandler(D,Q);this.addKeyHandler(N,Q);g.addListener(mxEvent.CHANGE,Q);this.listeners.push({destroy:function(){g.removeListener(Q)}});Q();var R=this.addGeometryHandler(D,function(U,V){V=b.fromUnit(V);U.relative?U.offset.x=V:U.x=V});var P=this.addGeometryHandler(N,function(U,V){V=b.fromUnit(V);U.relative?U.offset.y=V:U.y=V});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&g.isEdge(g.getParent(e.vertices[0]))){var Z=d.getCellGeometry(e.vertices[0]);
+null!=Z&&Z.relative&&(n=mxUtils.button(mxResources.get("center"),mxUtils.bind(this,function(U){g.beginUpdate();try{Z=Z.clone(),Z.x=0,Z.y=0,Z.offset=new mxPoint,g.setGeometry(e.vertices[0],Z)}finally{g.endUpdate()}})),n.setAttribute("title",mxResources.get("center")),n.style.width="210px",n.style.position="absolute",mxUtils.br(J),mxUtils.br(J),J.appendChild(n))}a.appendChild(J)}};
+ArrangePanel.prototype.addGeometryHandler=function(a,b){function f(n){if(""!=a.value){var u=parseFloat(a.value);if(isNaN(u))a.value=e+" "+k.getUnit();else if(u!=e){g.getModel().beginUpdate();try{for(var m=d.getSelectionState().cells,r=0;r<m.length;r++)if(g.getModel().isVertex(m[r])){var x=g.getCellGeometry(m[r]);if(null!=x&&(x=x.clone(),!b(x,u,m[r]))){var B=g.view.getState(m[r]);null!=B&&g.isRecursiveVertexResize(B)&&g.resizeChildCells(m[r],x);g.getModel().setGeometry(m[r],x);g.constrainChildCells(m[r])}}}finally{g.getModel().endUpdate()}e=
u;a.value=u+" "+k.getUnit()}}mxEvent.consume(n)}var d=this.editorUi,g=d.editor.graph,e=null,k=this;mxEvent.addListener(a,"blur",f);mxEvent.addListener(a,"change",f);mxEvent.addListener(a,"focus",function(){e=a.value});return f};
ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function f(k){if(""!=a.value){var n=parseFloat(a.value);if(isNaN(n))a.value=e+" pt";else if(n!=e){g.getModel().beginUpdate();try{for(var u=d.getSelectionState().cells,m=0;m<u.length;m++)if(g.getModel().isEdge(u[m])){var r=g.getCellGeometry(u[m]);null!=r&&(r=r.clone(),b(r,n),g.getModel().setGeometry(u[m],r))}}finally{g.getModel().endUpdate()}e=n;a.value=n+" pt"}}mxEvent.consume(k)}var d=this.editorUi,g=d.editor.graph,e=null;mxEvent.addListener(a,
"blur",f);mxEvent.addListener(a,"change",f);mxEvent.addListener(a,"focus",function(){e=a.value});return f};
-ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState(),g=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"));g.appendChild(e);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,F);var n=mxUtils.bind(this,function(R){var P=parseInt(k.value);P=Math.min(999,
+ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState(),g=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"));g.appendChild(e);var k=this.addUnitInput(g,"pt",12,44,function(){n.apply(this,arguments)});mxUtils.br(g);this.addKeyHandler(k,G);var n=mxUtils.bind(this,function(R){var P=parseInt(k.value);P=Math.min(999,
Math.max(1,isNaN(P)?1:P));if(P!=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var Z=b.getSelectionState().cells;f.setCellStyles("width",P,Z);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[P],"cells",Z))}k.value=P+" pt";mxEvent.consume(R)});mxEvent.addListener(k,"blur",n);mxEvent.addListener(k,"change",n);a.appendChild(g);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("linestart"));u.appendChild(e);var m=this.addUnitInput(u,"pt",87,52,function(){K.apply(this,arguments)}),r=this.addUnitInput(u,"pt",16,52,function(){D.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(m,F);this.addKeyHandler(r,F);var x=this.createPanel();x.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"));x.appendChild(e);var A=this.addUnitInput(x,"pt",87,52,function(){O.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){Q.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(A,F);this.addKeyHandler(C,F);var F=mxUtils.bind(this,function(R,P,Z){d=b.getSelectionState();
+"absolute";e.style.width="70px";e.style.marginTop="0px";mxUtils.write(e,mxResources.get("linestart"));u.appendChild(e);var m=this.addUnitInput(u,"pt",87,52,function(){J.apply(this,arguments)}),r=this.addUnitInput(u,"pt",16,52,function(){D.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(m,G);this.addKeyHandler(r,G);var x=this.createPanel();x.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"));x.appendChild(e);var B=this.addUnitInput(x,"pt",87,52,function(){N.apply(this,arguments)}),C=this.addUnitInput(x,"pt",16,52,function(){Q.apply(this,arguments)});mxUtils.br(x);this.addLabel(x,mxResources.get("left"),87);this.addLabel(x,mxResources.get("top"),16);a.appendChild(x);this.addKeyHandler(B,G);this.addKeyHandler(C,G);var G=mxUtils.bind(this,function(R,P,Z){d=b.getSelectionState();
R=d.cells[0];if("link"==d.style.shape||"flexArrow"==d.style.shape){if(g.style.display="",Z||document.activeElement!=k)Z=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth),k.value=Z+" pt"}else g.style.display="none";1==d.cells.length&&f.model.isEdge(R)?(Z=f.model.getGeometry(R),null!=Z.sourcePoint&&null==f.model.getTerminal(R,!0)?(m.value=Z.sourcePoint.x,r.value=Z.sourcePoint.y):u.style.display="none",null!=Z.targetPoint&&null==f.model.getTerminal(R,!1)?
-(A.value=Z.targetPoint.x,C.value=Z.targetPoint.y):x.style.display="none"):(u.style.display="none",x.style.display="none")});var K=this.addEdgeGeometryHandler(m,function(R,P){R.sourcePoint.x=P});var D=this.addEdgeGeometryHandler(r,function(R,P){R.sourcePoint.y=P});var O=this.addEdgeGeometryHandler(A,function(R,P){R.targetPoint.x=P});var Q=this.addEdgeGeometryHandler(C,function(R,P){R.targetPoint.y=P});f.getModel().addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){f.getModel().removeListener(F)}});
-F()};TextFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);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(ca,t){ca.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,d=f.editor.graph,g=f.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=
+(B.value=Z.targetPoint.x,C.value=Z.targetPoint.y):x.style.display="none"):(u.style.display="none",x.style.display="none")});var J=this.addEdgeGeometryHandler(m,function(R,P){R.sourcePoint.x=P});var D=this.addEdgeGeometryHandler(r,function(R,P){R.sourcePoint.y=P});var N=this.addEdgeGeometryHandler(B,function(R,P){R.targetPoint.x=P});var Q=this.addEdgeGeometryHandler(C,function(R,P){R.targetPoint.y=P});f.getModel().addListener(mxEvent.CHANGE,G);this.listeners.push({destroy:function(){f.getModel().removeListener(G)}});
+G()};TextFormatPanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);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(da,t){da.style.backgroundImage=t?Editor.isDarkMode()?"linear-gradient(rgb(0 161 241) 0px, rgb(0, 97, 146) 100%)":"linear-gradient(#c5ecff 0px,#87d4fb 100%)":""}var f=this.editorUi,d=f.editor.graph,g=f.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 k=e.cloneNode(),n=this.editorUi.toolbar.addMenu(mxResources.get("style"),mxResources.get("style"),!0,"formatBlock",k,null,!0);n.style.color="rgb(112, 112, 112)";n.style.whiteSpace="nowrap";n.style.overflow="hidden";n.style.margin="0px";this.addArrow(n);n.style.width="200px";n.style.height="15px";n=n.getElementsByTagName("div")[0];n.style.cssFloat="right";a.appendChild(k)}a.appendChild(e);
k=this.createPanel();k.style.marginTop="8px";k.style.borderTop="1px solid #c0c0c0";k.style.paddingTop="6px";k.style.paddingBottom="6px";var u=this.editorUi.toolbar.addMenu("Helvetica",mxResources.get("fontFamily"),!0,"fontFamily",e,null,!0);u.style.color="rgb(112, 112, 112)";u.style.whiteSpace="nowrap";u.style.overflow="hidden";u.style.margin="0px";this.addArrow(u);u.style.width="200px";u.style.height="15px";n=e.cloneNode(!1);n.style.marginLeft="-3px";var m=this.editorUi.toolbar.addItems(["bold",
"italic","underline"],n,!0);m[0].setAttribute("title",mxResources.get("bold")+" ("+this.editorUi.actions.get("bold").shortcut+")");m[1].setAttribute("title",mxResources.get("italic")+" ("+this.editorUi.actions.get("italic").shortcut+")");m[2].setAttribute("title",mxResources.get("underline")+" ("+this.editorUi.actions.get("underline").shortcut+")");var r=this.editorUi.toolbar.addItems(["vertical"],n,!0)[0];a.appendChild(n);this.styleButtons(m);this.styleButtons([r]);var x=e.cloneNode(!1);x.style.marginLeft=
-"-3px";x.style.paddingBottom="0px";var A=function(ca){return function(){return ca()}},C=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),d.cellEditor.isContentEditing()?function(ca){d.cellEditor.alignText(mxConstants.ALIGN_LEFT,ca);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",g.cells))}:A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),x),F=this.editorUi.toolbar.addButton("geSprite-center",
-mxResources.get("center"),d.cellEditor.isContentEditing()?function(ca){d.cellEditor.alignText(mxConstants.ALIGN_CENTER,ca);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",g.cells))}:A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),x),K=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),d.cellEditor.isContentEditing()?function(ca){d.cellEditor.alignText(mxConstants.ALIGN_RIGHT,
-ca);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",g.cells))}:A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),x);this.styleButtons([C,F,K]);if(d.cellEditor.isContentEditing()){var D=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},n);this.styleButtons([D]);D.firstChild.style.background=
+"-3px";x.style.paddingBottom="0px";var B=function(da){return function(){return da()}},C=this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),d.cellEditor.isContentEditing()?function(da){d.cellEditor.alignText(mxConstants.ALIGN_LEFT,da);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_LEFT],"cells",g.cells))}:B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT])),x),G=this.editorUi.toolbar.addButton("geSprite-center",
+mxResources.get("center"),d.cellEditor.isContentEditing()?function(da){d.cellEditor.alignText(mxConstants.ALIGN_CENTER,da);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_CENTER],"cells",g.cells))}:B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER])),x),J=this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),d.cellEditor.isContentEditing()?function(da){d.cellEditor.alignText(mxConstants.ALIGN_RIGHT,
+da);f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ALIGN],"values",[mxConstants.ALIGN_RIGHT],"cells",g.cells))}:B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT])),x);this.styleButtons([C,G,J]);if(d.cellEditor.isContentEditing()){var D=this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("strikethrough"),function(){document.execCommand("strikeThrough",!1,null)},n);this.styleButtons([D]);D.firstChild.style.background=
"url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjR2MjRIMFYweiIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGZpbGw9IiMwMTAxMDEiIGQ9Ik03LjI0IDguNzVjLS4yNi0uNDgtLjM5LTEuMDMtLjM5LTEuNjcgMC0uNjEuMTMtMS4xNi40LTEuNjcuMjYtLjUuNjMtLjkzIDEuMTEtMS4yOS40OC0uMzUgMS4wNS0uNjMgMS43LS44My42Ni0uMTkgMS4zOS0uMjkgMi4xOC0uMjkuODEgMCAxLjU0LjExIDIuMjEuMzQuNjYuMjIgMS4yMy41NCAxLjY5Ljk0LjQ3LjQuODMuODggMS4wOCAxLjQzLjI1LjU1LjM4IDEuMTUuMzggMS44MWgtMy4wMWMwLS4zMS0uMDUtLjU5LS4xNS0uODUtLjA5LS4yNy0uMjQtLjQ5LS40NC0uNjgtLjItLjE5LS40NS0uMzMtLjc1LS40NC0uMy0uMS0uNjYtLjE2LTEuMDYtLjE2LS4zOSAwLS43NC4wNC0xLjAzLjEzLS4yOS4wOS0uNTMuMjEtLjcyLjM2LS4xOS4xNi0uMzQuMzQtLjQ0LjU1LS4xLjIxLS4xNS40My0uMTUuNjYgMCAuNDguMjUuODguNzQgMS4yMS4zOC4yNS43Ny40OCAxLjQxLjdINy4zOWMtLjA1LS4wOC0uMTEtLjE3LS4xNS0uMjV6TTIxIDEydi0ySDN2Mmg5LjYyYy4xOC4wNy40LjE0LjU1LjIuMzcuMTcuNjYuMzQuODcuNTEuMjEuMTcuMzUuMzYuNDMuNTcuMDcuMi4xMS40My4xMS42OSAwIC4yMy0uMDUuNDUtLjE0LjY2LS4wOS4yLS4yMy4zOC0uNDIuNTMtLjE5LjE1LS40Mi4yNi0uNzEuMzUtLjI5LjA4LS42My4xMy0xLjAxLjEzLS40MyAwLS44My0uMDQtMS4xOC0uMTNzLS42Ni0uMjMtLjkxLS40MmMtLjI1LS4xOS0uNDUtLjQ0LS41OS0uNzUtLjE0LS4zMS0uMjUtLjc2LS4yNS0xLjIxSDYuNGMwIC41NS4wOCAxLjEzLjI0IDEuNTguMTYuNDUuMzcuODUuNjUgMS4yMS4yOC4zNS42LjY2Ljk4LjkyLjM3LjI2Ljc4LjQ4IDEuMjIuNjUuNDQuMTcuOS4zIDEuMzguMzkuNDguMDguOTYuMTMgMS40NC4xMy44IDAgMS41My0uMDkgMi4xOC0uMjhzMS4yMS0uNDUgMS42Ny0uNzljLjQ2LS4zNC44Mi0uNzcgMS4wNy0xLjI3cy4zOC0xLjA3LjM4LTEuNzFjMC0uNi0uMS0xLjE0LS4zMS0xLjYxLS4wNS0uMTEtLjExLS4yMy0uMTctLjMzSDIxeiIvPjwvc3ZnPg==)";
-D.firstChild.style.backgroundPosition="2px 2px";D.firstChild.style.backgroundSize="18px 18px";this.styleButtons([D])}var O=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),x),Q=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),x),R=this.editorUi.toolbar.addButton("geSprite-bottom",
-mxResources.get("bottom"),A(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),x);this.styleButtons([O,Q,R]);a.appendChild(x);var P,Z,T,U,fa;if(d.cellEditor.isContentEditing()){O.style.display="none";Q.style.display="none";R.style.display="none";r.style.display="none";var ha=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==ha.style.opacity&&document.execCommand("justifyfull",!1,null)},x);ha.style.marginRight=
-"9px";ha.style.opacity=1;this.styleButtons([ha,P=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},x),Z=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},x)]);P.style.marginLeft="10px";A=x.cloneNode(!1);A.style.paddingTop="4px";x=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
-mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
-!1,null)},A),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},A),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){d.cellEditor.toggleViewMode()},A)];this.styleButtons(x);x[x.length-2].style.marginLeft="10px";a.appendChild(A)}else m[2].style.marginRight="12px",K.style.marginRight="12px";x=e.cloneNode(!1);x.style.marginLeft="0px";x.style.paddingTop="8px";x.style.paddingBottom=
+D.firstChild.style.backgroundPosition="2px 2px";D.firstChild.style.backgroundSize="18px 18px";this.styleButtons([D])}var N=this.editorUi.toolbar.addButton("geSprite-top",mxResources.get("top"),B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP])),x),Q=this.editorUi.toolbar.addButton("geSprite-middle",mxResources.get("middle"),B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE])),x),R=this.editorUi.toolbar.addButton("geSprite-bottom",
+mxResources.get("bottom"),B(this.editorUi.menus.createStyleChangeFunction([mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM])),x);this.styleButtons([N,Q,R]);a.appendChild(x);var P,Z,U,V,ia;if(d.cellEditor.isContentEditing()){N.style.display="none";Q.style.display="none";R.style.display="none";r.style.display="none";var ha=this.editorUi.toolbar.addButton("geSprite-justifyfull",mxResources.get("block"),function(){1==ha.style.opacity&&document.execCommand("justifyfull",!1,null)},x);ha.style.marginRight=
+"9px";ha.style.opacity=1;this.styleButtons([ha,P=this.editorUi.toolbar.addButton("geSprite-subscript",mxResources.get("subscript")+" ("+Editor.ctrlKey+"+,)",function(){document.execCommand("subscript",!1,null)},x),Z=this.editorUi.toolbar.addButton("geSprite-superscript",mxResources.get("superscript")+" ("+Editor.ctrlKey+"+.)",function(){document.execCommand("superscript",!1,null)},x)]);P.style.marginLeft="10px";B=x.cloneNode(!1);B.style.paddingTop="4px";x=[this.editorUi.toolbar.addButton("geSprite-orderedlist",
+mxResources.get("numberedList"),function(){document.execCommand("insertorderedlist",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-unorderedlist",mxResources.get("bulletedList"),function(){document.execCommand("insertunorderedlist",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-outdent",mxResources.get("decreaseIndent"),function(){document.execCommand("outdent",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-indent",mxResources.get("increaseIndent"),function(){document.execCommand("indent",
+!1,null)},B),this.editorUi.toolbar.addButton("geSprite-removeformat",mxResources.get("removeFormat"),function(){document.execCommand("removeformat",!1,null)},B),this.editorUi.toolbar.addButton("geSprite-code",mxResources.get("html"),function(){d.cellEditor.toggleViewMode()},B)];this.styleButtons(x);x[x.length-2].style.marginLeft="10px";a.appendChild(B)}else m[2].style.marginRight="12px",J.style.marginRight="12px";x=e.cloneNode(!1);x.style.marginLeft="0px";x.style.paddingTop="8px";x.style.paddingBottom=
"4px";x.style.fontWeight="normal";mxUtils.write(x,mxResources.get("position"));var ba=document.createElement("select");ba.style.position="absolute";ba.style.left="126px";ba.style.width="98px";ba.style.border="1px solid rgb(160, 160, 160)";ba.style.borderRadius="4px";ba.style.marginTop="-2px";D="topLeft top topRight left center right bottomLeft bottom bottomRight".split(" ");var qa={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]};for(A=0;A<D.length;A++){var I=document.createElement("option");I.setAttribute("value",D[A]);mxUtils.write(I,mxResources.get(D[A]));ba.appendChild(I)}x.appendChild(ba);D=e.cloneNode(!1);D.style.marginLeft="0px";D.style.paddingTop=
-"4px";D.style.paddingBottom="4px";D.style.fontWeight="normal";mxUtils.write(D,mxResources.get("writingDirection"));var L=document.createElement("select");L.style.position="absolute";L.style.border="1px solid rgb(160, 160, 160)";L.style.left="126px";L.style.width="98px";L.style.borderRadius="4px";L.style.marginTop="-2px";I=["automatic","leftToRight","rightToLeft"];var H={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL};for(A=0;A<I.length;A++){var S=
-document.createElement("option");S.setAttribute("value",I[A]);mxUtils.write(S,mxResources.get(I[A]));L.appendChild(S)}D.appendChild(L);d.isEditing()||(a.appendChild(x),mxEvent.addListener(ba,"change",function(ca){d.getModel().beginUpdate();try{var t=qa[ba.value];null!=t&&(d.setCellStyles(mxConstants.STYLE_LABEL_POSITION,t[0],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,t[1],g.cells),d.setCellStyles(mxConstants.STYLE_ALIGN,t[2],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
-t[3],g.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(ca)}),a.appendChild(D),mxEvent.addListener(L,"change",function(ca){d.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,H[L.value],g.cells);mxEvent.consume(ca)}));var V=document.createElement("input");V.style.position="absolute";V.style.border="1px solid rgb(160, 160, 160)";V.style.textAlign="right";V.style.marginTop="4px";V.style.left="161px";V.style.width="53px";V.style.borderRadius="4px";V.style.height="23px";V.style.boxSizing="border-box";
-n.appendChild(V);var ea=null;x=this.installInputHandler(V,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(ca){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var t=function(G,M){null!=d.cellEditor.textarea&&G!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(G)&&(M||z.containsNode(G,!0))&&("FONT"==G.nodeName?(G.removeAttribute("size"),G.style.fontSize=ca+"px"):mxUtils.getCurrentStyle(G).fontSize!=ca+"px"&&(mxUtils.getCurrentStyle(G.parentNode).fontSize!=
-ca+"px"?G.style.fontSize=ca+"px":G.style.fontSize=""));f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],"values",[ca],"cells",g.cells))},z=window.getSelection(),B=0<z.rangeCount?z.getRangeAt(0).commonAncestorContainer:d.cellEditor.textarea;B!=d.cellEditor.textarea&&B.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");B!=d.cellEditor.textarea&&(B=B.parentNode);if(null!=B&&B.nodeType==mxConstants.NODETYPE_ELEMENT){var E=B.getElementsByTagName("*");
-t(B);for(B=0;B<E.length;B++)t(E[B])}V.value=ca+" pt"}else if(window.getSelection||document.selection)if(t=function(G,M){for(;null!=M;){if(M===G)return!0;M=M.parentNode}return!1},E=null,document.selection?E=document.selection.createRange().parentElement():(z=window.getSelection(),0<z.rangeCount&&(E=z.getRangeAt(0).commonAncestorContainer)),null!=E&&t(d.cellEditor.textarea,E))for(ea=ca,document.execCommand("fontSize",!1,"4"),E=d.cellEditor.textarea.getElementsByTagName("font"),B=0;B<E.length;B++)if("4"==
-E[B].getAttribute("size")){E[B].removeAttribute("size");E[B].style.fontSize=ea+"px";window.setTimeout(function(){V.value=ea+" pt";ea=null},0);break}},!0);x=this.createStepper(V,x,1,10,!0,Menus.prototype.defaultFontSize);x.style.display=V.style.display;x.style.marginTop="4px";x.style.left="214px";n.appendChild(x);n=u.getElementsByTagName("div")[0];n.style.cssFloat="right";var ka=null,wa=d.shapeBackgroundColor,W=null,aa=d.shapeForegroundColor,oa=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
-function(){return wa},function(ca){document.execCommand("backcolor",!1,ca!=mxConstants.NONE?ca:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],"values",[ca],"cells",g.cells))},d.shapeBackgroundColor,{install:function(ca){ka=ca},destroy:function(){ka=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"default",null,function(ca){d.updateLabelElements(g.cells,function(t){t.style.backgroundColor=
-null})},d.shapeBackgroundColor);oa.style.fontWeight="bold";var ua=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,d.shapeForegroundColor);ua.style.fontWeight="bold";n=1<=g.vertices.length?d.stylesheet.getDefaultVertexStyle():d.stylesheet.getDefaultEdgeStyle();n=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return aa},function(ca){if(mxClient.IS_FF){for(var t=d.cellEditor.textarea.getElementsByTagName("font"),
-z=[],B=0;B<t.length;B++)z.push({node:t[B],color:t[B].getAttribute("color")});document.execCommand("forecolor",!1,ca!=mxConstants.NONE?ca:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[ca],"cells",g.cells));ca=d.cellEditor.textarea.getElementsByTagName("font");for(B=0;B<ca.length;B++)if(B>=z.length||ca[B]!=z[B].node||ca[B]==z[B].node&&ca[B].getAttribute("color")!=z[B].color){z=ca[B].firstChild;if(null!=z&&"A"==z.nodeName&&null==z.nextSibling&&
-null!=z.firstChild){ca[B].parentNode.insertBefore(z,ca[B]);for(t=z.firstChild;null!=t;){var E=t.nextSibling;ca[B].appendChild(t);t=E}z.appendChild(ca[B])}break}}else document.execCommand("forecolor",!1,ca!=mxConstants.NONE?ca:"transparent"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[ca],"cells",g.cells))},null!=n[mxConstants.STYLE_FONTCOLOR]?n[mxConstants.STYLE_FONTCOLOR]:d.shapeForegroundColor,{install:function(ca){W=ca},destroy:function(){W=null}},
-null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR,"default",function(ca){oa.style.display=ca==mxConstants.NONE?"none":"";ua.style.display=oa.style.display},function(ca){ca==mxConstants.NONE?d.setCellStyles(mxConstants.STYLE_NOLABEL,"1",g.cells):d.setCellStyles(mxConstants.STYLE_NOLABEL,null,g.cells);d.setCellStyles(mxConstants.STYLE_FONTCOLOR,ca,g.cells);d.updateLabelElements(g.cells,function(t){t.removeAttribute("color");t.style.color=null})},d.shapeForegroundColor);
-n.style.fontWeight="bold";k.appendChild(n);k.appendChild(oa);d.cellEditor.isContentEditing()||k.appendChild(ua);a.appendChild(k);k=this.createPanel();k.style.paddingTop="2px";k.style.paddingBottom="4px";n=d.filterSelectionCells(mxUtils.bind(this,function(ca){var t=d.view.getState(ca);return null==t||d.isAutoSizeState(t)||d.getModel().isEdge(ca)||!d.isTableRow(ca)&&!d.isTableCell(ca)&&!d.isCellResizable(ca)}));x=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap",
+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]};for(B=0;B<D.length;B++){var O=document.createElement("option");O.setAttribute("value",D[B]);mxUtils.write(O,mxResources.get(D[B]));ba.appendChild(O)}x.appendChild(ba);D=e.cloneNode(!1);D.style.marginLeft="0px";D.style.paddingTop=
+"4px";D.style.paddingBottom="4px";D.style.fontWeight="normal";mxUtils.write(D,mxResources.get("writingDirection"));var S=document.createElement("select");S.style.position="absolute";S.style.border="1px solid rgb(160, 160, 160)";S.style.left="126px";S.style.width="98px";S.style.borderRadius="4px";S.style.marginTop="-2px";O=["automatic","leftToRight","rightToLeft"];var F={automatic:null,leftToRight:mxConstants.TEXT_DIRECTION_LTR,rightToLeft:mxConstants.TEXT_DIRECTION_RTL};for(B=0;B<O.length;B++){var L=
+document.createElement("option");L.setAttribute("value",O[B]);mxUtils.write(L,mxResources.get(O[B]));S.appendChild(L)}D.appendChild(S);d.isEditing()||(a.appendChild(x),mxEvent.addListener(ba,"change",function(da){d.getModel().beginUpdate();try{var t=qa[ba.value];null!=t&&(d.setCellStyles(mxConstants.STYLE_LABEL_POSITION,t[0],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_LABEL_POSITION,t[1],g.cells),d.setCellStyles(mxConstants.STYLE_ALIGN,t[2],g.cells),d.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,
+t[3],g.cells))}finally{d.getModel().endUpdate()}mxEvent.consume(da)}),a.appendChild(D),mxEvent.addListener(S,"change",function(da){d.setCellStyles(mxConstants.STYLE_TEXT_DIRECTION,F[S.value],g.cells);mxEvent.consume(da)}));var T=document.createElement("input");T.style.position="absolute";T.style.border="1px solid rgb(160, 160, 160)";T.style.textAlign="right";T.style.marginTop="4px";T.style.left="161px";T.style.width="53px";T.style.borderRadius="4px";T.style.height="23px";T.style.boxSizing="border-box";
+n.appendChild(T);var ca=null;x=this.installInputHandler(T,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize,1,999," pt",function(da){if(window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11){var t=function(H,K){null!=d.cellEditor.textarea&&H!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(H)&&(K||z.containsNode(H,!0))&&("FONT"==H.nodeName?(H.removeAttribute("size"),H.style.fontSize=da+"px"):mxUtils.getCurrentStyle(H).fontSize!=da+"px"&&(mxUtils.getCurrentStyle(H.parentNode).fontSize!=
+da+"px"?H.style.fontSize=da+"px":H.style.fontSize=""));f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],"values",[da],"cells",g.cells))},z=window.getSelection(),A=0<z.rangeCount?z.getRangeAt(0).commonAncestorContainer:d.cellEditor.textarea;A!=d.cellEditor.textarea&&A.nodeType==mxConstants.NODETYPE_ELEMENT||document.execCommand("fontSize",!1,"1");A!=d.cellEditor.textarea&&(A=A.parentNode);if(null!=A&&A.nodeType==mxConstants.NODETYPE_ELEMENT){var E=A.getElementsByTagName("*");
+t(A);for(A=0;A<E.length;A++)t(E[A])}T.value=da+" pt"}else if(window.getSelection||document.selection)if(t=function(H,K){for(;null!=K;){if(K===H)return!0;K=K.parentNode}return!1},E=null,document.selection?E=document.selection.createRange().parentElement():(z=window.getSelection(),0<z.rangeCount&&(E=z.getRangeAt(0).commonAncestorContainer)),null!=E&&t(d.cellEditor.textarea,E))for(ca=da,document.execCommand("fontSize",!1,"4"),E=d.cellEditor.textarea.getElementsByTagName("font"),A=0;A<E.length;A++)if("4"==
+E[A].getAttribute("size")){E[A].removeAttribute("size");E[A].style.fontSize=ca+"px";window.setTimeout(function(){T.value=ca+" pt";ca=null},0);break}},!0);x=this.createStepper(T,x,1,10,!0,Menus.prototype.defaultFontSize);x.style.display=T.style.display;x.style.marginTop="4px";x.style.left="214px";n.appendChild(x);n=u.getElementsByTagName("div")[0];n.style.cssFloat="right";var fa=null,wa=d.shapeBackgroundColor,W=null,aa=d.shapeForegroundColor,oa=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("backgroundColor"),
+function(){return wa},function(da){document.execCommand("backcolor",!1,da!=mxConstants.NONE?da:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],"values",[da],"cells",g.cells))},d.shapeBackgroundColor,{install:function(da){fa=da},destroy:function(){fa=null}},null,!0):this.createCellColorOption(mxResources.get("backgroundColor"),mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,"default",null,function(da){d.updateLabelElements(g.cells,function(t){t.style.backgroundColor=
+null})},d.shapeBackgroundColor);oa.style.fontWeight="bold";var sa=this.createCellColorOption(mxResources.get("borderColor"),mxConstants.STYLE_LABEL_BORDERCOLOR,"default",null,null,d.shapeForegroundColor);sa.style.fontWeight="bold";n=1<=g.vertices.length?d.stylesheet.getDefaultVertexStyle():d.stylesheet.getDefaultEdgeStyle();n=d.cellEditor.isContentEditing()?this.createColorOption(mxResources.get("fontColor"),function(){return aa},function(da){if(mxClient.IS_FF){for(var t=d.cellEditor.textarea.getElementsByTagName("font"),
+z=[],A=0;A<t.length;A++)z.push({node:t[A],color:t[A].getAttribute("color")});document.execCommand("forecolor",!1,da!=mxConstants.NONE?da:"transparent");f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[da],"cells",g.cells));da=d.cellEditor.textarea.getElementsByTagName("font");for(A=0;A<da.length;A++)if(A>=z.length||da[A]!=z[A].node||da[A]==z[A].node&&da[A].getAttribute("color")!=z[A].color){z=da[A].firstChild;if(null!=z&&"A"==z.nodeName&&null==z.nextSibling&&
+null!=z.firstChild){da[A].parentNode.insertBefore(z,da[A]);for(t=z.firstChild;null!=t;){var E=t.nextSibling;da[A].appendChild(t);t=E}z.appendChild(da[A])}break}}else document.execCommand("forecolor",!1,da!=mxConstants.NONE?da:"transparent"),f.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTCOLOR],"values",[da],"cells",g.cells))},null!=n[mxConstants.STYLE_FONTCOLOR]?n[mxConstants.STYLE_FONTCOLOR]:d.shapeForegroundColor,{install:function(da){W=da},destroy:function(){W=null}},
+null,!0):this.createCellColorOption(mxResources.get("fontColor"),mxConstants.STYLE_FONTCOLOR,"default",function(da){oa.style.display=da==mxConstants.NONE?"none":"";sa.style.display=oa.style.display},function(da){da==mxConstants.NONE?d.setCellStyles(mxConstants.STYLE_NOLABEL,"1",g.cells):d.setCellStyles(mxConstants.STYLE_NOLABEL,null,g.cells);d.setCellStyles(mxConstants.STYLE_FONTCOLOR,da,g.cells);d.updateLabelElements(g.cells,function(t){t.removeAttribute("color");t.style.color=null})},d.shapeForegroundColor);
+n.style.fontWeight="bold";k.appendChild(n);k.appendChild(oa);d.cellEditor.isContentEditing()||k.appendChild(sa);a.appendChild(k);k=this.createPanel();k.style.paddingTop="2px";k.style.paddingBottom="4px";n=d.filterSelectionCells(mxUtils.bind(this,function(da){var t=d.view.getState(da);return null==t||d.isAutoSizeState(t)||d.getModel().isEdge(da)||!d.isTableRow(da)&&!d.isTableCell(da)&&!d.isCellResizable(da)}));x=this.createCellOption(mxResources.get("wordWrap"),mxConstants.STYLE_WHITE_SPACE,null,"wrap",
"null",null,null,!0,n);x.style.fontWeight="bold";0<n.length&&k.appendChild(x);n=this.createCellOption(mxResources.get("formattedText"),"html",0,null,null,null,f.actions.get("formattedText"));n.style.fontWeight="bold";k.appendChild(n);n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="28px";n.style.fontWeight="normal";x=document.createElement("div");x.style.position="absolute";x.style.width="70px";x.style.marginTop="0px";x.style.fontWeight="bold";mxUtils.write(x,mxResources.get("spacing"));
-n.appendChild(x);var Ja=this.addUnitInput(n,"pt",87,52,function(){Ya.apply(this,arguments)}),Ga=this.addUnitInput(n,"pt",16,52,function(){Va.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("top"),87);this.addLabel(n,mxResources.get("global"),16);mxUtils.br(n);mxUtils.br(n);var va=this.addUnitInput(n,"pt",158,52,function(){jb.apply(this,arguments)}),za=this.addUnitInput(n,"pt",87,52,function(){cb.apply(this,arguments)}),ra=this.addUnitInput(n,"pt",16,52,function(){bb.apply(this,
-arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),158);this.addLabel(n,mxResources.get("bottom"),87);this.addLabel(n,mxResources.get("right"),16);if(d.cellEditor.isContentEditing()){var Ha=null,Ta=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(ca){var t=""==ca.value?120:parseInt(ca.value);t=Math.max(0,isNaN(t)?120:t);null!=Ha&&(d.cellEditor.restoreSelection(Ha),Ha=null);for(var z=d.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=
-z.parentNode;null!=z&&z==d.cellEditor.textarea&&null!=d.cellEditor.textarea.firstChild&&("P"!=d.cellEditor.textarea.firstChild.nodeName&&(d.cellEditor.textarea.innerHTML="<p>"+d.cellEditor.textarea.innerHTML+"</p>"),z=d.cellEditor.textarea.firstChild);null!=z&&null!=d.cellEditor.textarea&&z!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(z)&&(z.style.lineHeight=t/100);ca.value=t+" %"},function(ca){Ta=ca;mxEvent.addListener(ca,"mousedown",function(){document.activeElement==d.cellEditor.textarea&&
-(Ha=d.cellEditor.saveSelection())});mxEvent.addListener(ca,"touchstart",function(){document.activeElement==d.cellEditor.textarea&&(Ha=d.cellEditor.saveSelection())});ca.value="120 %"}));k=e.cloneNode(!1);k.style.paddingLeft="0px";n=this.editorUi.toolbar.addItems(["link","image"],k,!0);x=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},k),this.editorUi.toolbar.addMenuFunctionInContainer(k,
-"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(ca){this.editorUi.menus.addInsertTableItem(ca,null,null,!1)}))];this.styleButtons(n);this.styleButtons(x);n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";n.appendChild(this.createTitle(mxResources.get("insert")));n.appendChild(k);a.appendChild(n);n=e.cloneNode(!1);n.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,
-function(){try{null!=T&&d.insertColumn(T,null!=U?U.cellIndex:0)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=T&&d.insertColumn(T,null!=U?U.cellIndex+1:-1)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=T&&null!=U&&d.deleteColumn(T,U.cellIndex)}catch(ca){this.editorUi.handleError(ca)}}),
-n),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=T&&null!=fa&&d.insertRow(T,fa.sectionRowIndex)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=T&&null!=fa&&d.insertRow(T,fa.sectionRowIndex+1)}catch(ca){this.editorUi.handleError(ca)}}),n),this.editorUi.toolbar.addButton("geSprite-deleterow",
-mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=T&&null!=fa&&d.deleteRow(T,fa.sectionRowIndex)}catch(ca){this.editorUi.handleError(ca)}}),n)];this.styleButtons(x);x[2].style.marginRight="10px";k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("table")));k.appendChild(n);e=e.cloneNode(!1);e.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,
-function(ca){if(null!=T){var t=T.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,B,E,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(t,function(z){var B=null==U||null!=ca&&mxEvent.isShiftDown(ca)?T:U;d.processElements(B,function(E){E.style.border=null});null==z||z==mxConstants.NONE?(B.removeAttribute("border"),B.style.border="",B.style.borderCollapse=
-""):(B.setAttribute("border","1"),B.style.border="1px solid "+z,B.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(ca){if(null!=T){var t=T.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,B,E,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(t,
-function(z){var B=null==U||null!=ca&&mxEvent.isShiftDown(ca)?T:U;d.processElements(B,function(E){E.style.backgroundColor=null});B.style.backgroundColor=null==z||z==mxConstants.NONE?"":z})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=T){var ca=T.getAttribute("cellPadding")||0;ca=new FilenameDialog(f,ca,mxResources.get("apply"),mxUtils.bind(this,function(t){null!=t&&0<t.length?T.setAttribute("cellPadding",t):T.removeAttribute("cellPadding")}),mxResources.get("spacing"));
-f.showDialog(ca.container,300,80,!0,!0);ca.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=T&&T.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=T&&T.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=T&&T.setAttribute("align","right")},e)];this.styleButtons(x);x[2].style.marginRight="10px";k.appendChild(e);
-a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);for(A=0;3>A;A++)(function(ca){mxEvent.addListener(m[ca],"click",function(){b(m[ca],""==m[ca].style.backgroundImage)})})(A);var Ua=mxUtils.bind(this,function(ca,t,z){g=f.getSelectionState();ca=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(ca&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(ca&mxConstants.FONT_ITALIC)==
-mxConstants.FONT_ITALIC);b(m[2],(ca&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=V)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),V.value=isNaN(ca)?"":ca+" pt";ca=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);
-b(C,ca==mxConstants.ALIGN_LEFT);b(F,ca==mxConstants.ALIGN_CENTER);b(K,ca==mxConstants.ALIGN_RIGHT);ca=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);b(O,ca==mxConstants.ALIGN_TOP);b(Q,ca==mxConstants.ALIGN_MIDDLE);b(R,ca==mxConstants.ALIGN_BOTTOM);ca=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=ca==mxConstants.ALIGN_LEFT&&
-t==mxConstants.ALIGN_TOP?"topLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":ca==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_TOP?"topRight":ca==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_BOTTOM?"bottomLeft":ca==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_BOTTOM?"bottom":ca==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_BOTTOM?"bottomRight":ca==mxConstants.ALIGN_LEFT?"left":ca==mxConstants.ALIGN_RIGHT?"right":"center";ca=mxUtils.getValue(g.style,mxConstants.STYLE_TEXT_DIRECTION,
-mxConstants.DEFAULT_TEXT_DIRECTION);ca==mxConstants.TEXT_DIRECTION_RTL?L.value="rightToLeft":ca==mxConstants.TEXT_DIRECTION_LTR?L.value="leftToRight":ca==mxConstants.TEXT_DIRECTION_AUTO&&(L.value="automatic");if(z||document.activeElement!=Ga)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING,2)),Ga.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=Ja)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_TOP,0)),Ja.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=
-ra)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_RIGHT,0)),ra.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=za)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_BOTTOM,0)),za.value=isNaN(ca)?"":ca+" pt";if(z||document.activeElement!=va)ca=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_LEFT,0)),va.value=isNaN(ca)?"":ca+" pt"});var Va=this.installInputHandler(Ga,mxConstants.STYLE_SPACING,2,-999,999," pt");var Ya=this.installInputHandler(Ja,
-mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");var bb=this.installInputHandler(ra,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");var cb=this.installInputHandler(za,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");var jb=this.installInputHandler(va,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(V,Ua);this.addKeyHandler(Ga,Ua);this.addKeyHandler(Ja,Ua);this.addKeyHandler(ra,Ua);this.addKeyHandler(za,Ua);this.addKeyHandler(va,Ua);d.getModel().addListener(mxEvent.CHANGE,Ua);
-this.listeners.push({destroy:function(){d.getModel().removeListener(Ua)}});Ua();if(d.cellEditor.isContentEditing()){var $a=!1;e=function(){$a||($a=!0,window.setTimeout(function(){var ca=d.getSelectedEditingElement();if(null!=ca){var t=function(Ba,Da){if(null!=Ba&&null!=Da){if(Ba==Da)return!0;if(Ba.length>Da.length+1)return Ba.substring(Ba.length-Da.length-1,Ba.length)=="-"+Da}return!1},z=function(Ba){if(null!=d.getParentByName(ca,Ba,d.cellEditor.textarea))return!0;for(var Da=ca;null!=Da&&1==Da.childNodes.length;)if(Da=
-Da.childNodes[0],Da.nodeName==Ba)return!0;return!1},B=function(Ba){Ba=null!=Ba?Ba.fontSize:null;return null!=Ba&&"px"==Ba.substring(Ba.length-2)?parseFloat(Ba):mxConstants.DEFAULT_FONTSIZE},E=function(Ba,Da,Ma){return null!=Ma.style&&null!=Da?(Da=Da.lineHeight,null!=Ma.style.lineHeight&&"%"==Ma.style.lineHeight.substring(Ma.style.lineHeight.length-1)?parseInt(Ma.style.lineHeight)/100:"px"==Da.substring(Da.length-2)?parseFloat(Da)/Ba:parseInt(Da)):""},G=mxUtils.getCurrentStyle(ca),M=B(G),X=E(M,G,ca),
-ia=ca.getElementsByTagName("*");if(0<ia.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var da=window.getSelection(),ja=0;ja<ia.length;ja++)if(da.containsNode(ia[ja],!0)){temp=mxUtils.getCurrentStyle(ia[ja]);M=Math.max(B(temp),M);var sa=E(M,temp,ia[ja]);if(sa!=X||isNaN(sa))X=""}null!=G&&(b(m[0],"bold"==G.fontWeight||400<G.fontWeight||z("B")||z("STRONG")),b(m[1],"italic"==G.fontStyle||z("I")||z("EM")),b(m[2],z("U")),b(Z,z("SUP")),b(P,z("SUB")),d.cellEditor.isTableSelected()?(b(ha,
-t(G.textAlign,"justify")),b(C,t(G.textAlign,"left")),b(F,t(G.textAlign,"center")),b(K,t(G.textAlign,"right"))):(z=d.cellEditor.align||mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(G.textAlign,"justify")?(b(ha,t(G.textAlign,"justify")),b(C,!1),b(F,!1),b(K,!1)):(b(ha,!1),b(C,z==mxConstants.ALIGN_LEFT),b(F,z==mxConstants.ALIGN_CENTER),b(K,z==mxConstants.ALIGN_RIGHT))),T=d.getParentByName(ca,"TABLE",d.cellEditor.textarea),fa=null==T?null:d.getParentByName(ca,"TR",T),U=null==
-T?null:d.getParentByNames(ca,["TD","TH"],T),db.style.display=null!=T?"":"none",document.activeElement!=V&&("FONT"==ca.nodeName&&"4"==ca.getAttribute("size")&&null!=ea?(ca.removeAttribute("size"),ca.style.fontSize=ea+" pt",ea=null):V.value=isNaN(M)?"":M+" pt",sa=parseFloat(X),isNaN(sa)?Ta.value="100 %":Ta.value=Math.round(100*sa)+" %"),null!=W&&(aa="rgba(0, 0, 0, 0)"==G.color||"transparent"==G.color?mxConstants.NONE:mxUtils.rgba2hex(G.color),W(aa,!0)),null!=ka&&(wa="rgba(0, 0, 0, 0)"==G.backgroundColor||
-"transparent"==G.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(G.backgroundColor),ka(wa,!0)),null!=u.firstChild&&(u.firstChild.nodeValue=Graph.stripQuotes(G.fontFamily)))}$a=!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,
+n.appendChild(x);var Ka=this.addUnitInput(n,"pt",87,52,function(){Xa.apply(this,arguments)}),Ha=this.addUnitInput(n,"pt",16,52,function(){$a.apply(this,arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("top"),87);this.addLabel(n,mxResources.get("global"),16);mxUtils.br(n);mxUtils.br(n);var ua=this.addUnitInput(n,"pt",158,52,function(){jb.apply(this,arguments)}),Ca=this.addUnitInput(n,"pt",87,52,function(){Ya.apply(this,arguments)}),ra=this.addUnitInput(n,"pt",16,52,function(){Va.apply(this,
+arguments)});mxUtils.br(n);this.addLabel(n,mxResources.get("left"),158);this.addLabel(n,mxResources.get("bottom"),87);this.addLabel(n,mxResources.get("right"),16);if(d.cellEditor.isContentEditing()){var Da=null,Ua=null;a.appendChild(this.createRelativeOption(mxResources.get("lineheight"),null,null,function(da){var t=""==da.value?120:parseInt(da.value);t=Math.max(0,isNaN(t)?120:t);null!=Da&&(d.cellEditor.restoreSelection(Da),Da=null);for(var z=d.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=
+z.parentNode;null!=z&&z==d.cellEditor.textarea&&null!=d.cellEditor.textarea.firstChild&&("P"!=d.cellEditor.textarea.firstChild.nodeName&&(d.cellEditor.textarea.innerHTML="<p>"+d.cellEditor.textarea.innerHTML+"</p>"),z=d.cellEditor.textarea.firstChild);null!=z&&null!=d.cellEditor.textarea&&z!=d.cellEditor.textarea&&d.cellEditor.textarea.contains(z)&&(z.style.lineHeight=t/100);da.value=t+" %"},function(da){Ua=da;mxEvent.addListener(da,"mousedown",function(){document.activeElement==d.cellEditor.textarea&&
+(Da=d.cellEditor.saveSelection())});mxEvent.addListener(da,"touchstart",function(){document.activeElement==d.cellEditor.textarea&&(Da=d.cellEditor.saveSelection())});da.value="120 %"}));k=e.cloneNode(!1);k.style.paddingLeft="0px";n=this.editorUi.toolbar.addItems(["link","image"],k,!0);x=[this.editorUi.toolbar.addButton("geSprite-horizontalrule",mxResources.get("insertHorizontalRule"),function(){document.execCommand("inserthorizontalrule",!1)},k),this.editorUi.toolbar.addMenuFunctionInContainer(k,
+"geSprite-table",mxResources.get("table"),!1,mxUtils.bind(this,function(da){this.editorUi.menus.addInsertTableItem(da,null,null,!1)}))];this.styleButtons(n);this.styleButtons(x);n=this.createPanel();n.style.paddingTop="10px";n.style.paddingBottom="10px";n.appendChild(this.createTitle(mxResources.get("insert")));n.appendChild(k);a.appendChild(n);n=e.cloneNode(!1);n.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-insertcolumnbefore",mxResources.get("insertColumnBefore"),mxUtils.bind(this,
+function(){try{null!=U&&d.insertColumn(U,null!=V?V.cellIndex:0)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-insertcolumnafter",mxResources.get("insertColumnAfter"),mxUtils.bind(this,function(){try{null!=U&&d.insertColumn(U,null!=V?V.cellIndex+1:-1)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-deletecolumn",mxResources.get("deleteColumn"),mxUtils.bind(this,function(){try{null!=U&&null!=V&&d.deleteColumn(U,V.cellIndex)}catch(da){this.editorUi.handleError(da)}}),
+n),this.editorUi.toolbar.addButton("geSprite-insertrowbefore",mxResources.get("insertRowBefore"),mxUtils.bind(this,function(){try{null!=U&&null!=ia&&d.insertRow(U,ia.sectionRowIndex)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-insertrowafter",mxResources.get("insertRowAfter"),mxUtils.bind(this,function(){try{null!=U&&null!=ia&&d.insertRow(U,ia.sectionRowIndex+1)}catch(da){this.editorUi.handleError(da)}}),n),this.editorUi.toolbar.addButton("geSprite-deleterow",
+mxResources.get("deleteRow"),mxUtils.bind(this,function(){try{null!=U&&null!=ia&&d.deleteRow(U,ia.sectionRowIndex)}catch(da){this.editorUi.handleError(da)}}),n)];this.styleButtons(x);x[2].style.marginRight="10px";k=this.createPanel();k.style.paddingTop="10px";k.style.paddingBottom="10px";k.appendChild(this.createTitle(mxResources.get("table")));k.appendChild(n);e=e.cloneNode(!1);e.style.paddingLeft="0px";x=[this.editorUi.toolbar.addButton("geSprite-strokecolor",mxResources.get("borderColor"),mxUtils.bind(this,
+function(da){if(null!=U){var t=U.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,A,E,H){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(H).toString(16)).substr(-2)});this.editorUi.pickColor(t,function(z){var A=null==V||null!=da&&mxEvent.isShiftDown(da)?U:V;d.processElements(A,function(E){E.style.border=null});null==z||z==mxConstants.NONE?(A.removeAttribute("border"),A.style.border="",A.style.borderCollapse=
+""):(A.setAttribute("border","1"),A.style.border="1px solid "+z,A.style.borderCollapse="collapse")})}}),e),this.editorUi.toolbar.addButton("geSprite-fillcolor",mxResources.get("backgroundColor"),mxUtils.bind(this,function(da){if(null!=U){var t=U.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(z,A,E,H){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(E).toString(16)).substr(-2)+("0"+Number(H).toString(16)).substr(-2)});this.editorUi.pickColor(t,
+function(z){var A=null==V||null!=da&&mxEvent.isShiftDown(da)?U:V;d.processElements(A,function(E){E.style.backgroundColor=null});A.style.backgroundColor=null==z||z==mxConstants.NONE?"":z})}}),e),this.editorUi.toolbar.addButton("geSprite-fit",mxResources.get("spacing"),function(){if(null!=U){var da=U.getAttribute("cellPadding")||0;da=new FilenameDialog(f,da,mxResources.get("apply"),mxUtils.bind(this,function(t){null!=t&&0<t.length?U.setAttribute("cellPadding",t):U.removeAttribute("cellPadding")}),mxResources.get("spacing"));
+f.showDialog(da.container,300,80,!0,!0);da.init()}},e),this.editorUi.toolbar.addButton("geSprite-left",mxResources.get("left"),function(){null!=U&&U.setAttribute("align","left")},e),this.editorUi.toolbar.addButton("geSprite-center",mxResources.get("center"),function(){null!=U&&U.setAttribute("align","center")},e),this.editorUi.toolbar.addButton("geSprite-right",mxResources.get("right"),function(){null!=U&&U.setAttribute("align","right")},e)];this.styleButtons(x);x[2].style.marginRight="10px";k.appendChild(e);
+a.appendChild(k);var db=k}else a.appendChild(k),a.appendChild(this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_TEXT_OPACITY)),a.appendChild(n);for(B=0;3>B;B++)(function(da){mxEvent.addListener(m[da],"click",function(){b(m[da],""==m[da].style.backgroundImage)})})(B);var Ta=mxUtils.bind(this,function(da,t,z){g=f.getSelectionState();da=mxUtils.getValue(g.style,mxConstants.STYLE_FONTSTYLE,0);b(m[0],(da&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD);b(m[1],(da&mxConstants.FONT_ITALIC)==
+mxConstants.FONT_ITALIC);b(m[2],(da&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE);u.firstChild.nodeValue=mxUtils.getValue(g.style,mxConstants.STYLE_FONTFAMILY,Menus.prototype.defaultFont);b(r,"0"==mxUtils.getValue(g.style,mxConstants.STYLE_HORIZONTAL,"1"));if(z||document.activeElement!=T)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_FONTSIZE,Menus.prototype.defaultFontSize)),T.value=isNaN(da)?"":da+" pt";da=mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER);
+b(C,da==mxConstants.ALIGN_LEFT);b(G,da==mxConstants.ALIGN_CENTER);b(J,da==mxConstants.ALIGN_RIGHT);da=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE);b(N,da==mxConstants.ALIGN_TOP);b(Q,da==mxConstants.ALIGN_MIDDLE);b(R,da==mxConstants.ALIGN_BOTTOM);da=mxUtils.getValue(g.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t=mxUtils.getValue(g.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);ba.value=da==mxConstants.ALIGN_LEFT&&
+t==mxConstants.ALIGN_TOP?"topLeft":da==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_TOP?"top":da==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_TOP?"topRight":da==mxConstants.ALIGN_LEFT&&t==mxConstants.ALIGN_BOTTOM?"bottomLeft":da==mxConstants.ALIGN_CENTER&&t==mxConstants.ALIGN_BOTTOM?"bottom":da==mxConstants.ALIGN_RIGHT&&t==mxConstants.ALIGN_BOTTOM?"bottomRight":da==mxConstants.ALIGN_LEFT?"left":da==mxConstants.ALIGN_RIGHT?"right":"center";da=mxUtils.getValue(g.style,mxConstants.STYLE_TEXT_DIRECTION,
+mxConstants.DEFAULT_TEXT_DIRECTION);da==mxConstants.TEXT_DIRECTION_RTL?S.value="rightToLeft":da==mxConstants.TEXT_DIRECTION_LTR?S.value="leftToRight":da==mxConstants.TEXT_DIRECTION_AUTO&&(S.value="automatic");if(z||document.activeElement!=Ha)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING,2)),Ha.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=Ka)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_TOP,0)),Ka.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=
+ra)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_RIGHT,0)),ra.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=Ca)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_BOTTOM,0)),Ca.value=isNaN(da)?"":da+" pt";if(z||document.activeElement!=ua)da=parseFloat(mxUtils.getValue(g.style,mxConstants.STYLE_SPACING_LEFT,0)),ua.value=isNaN(da)?"":da+" pt"});var $a=this.installInputHandler(Ha,mxConstants.STYLE_SPACING,2,-999,999," pt");var Xa=this.installInputHandler(Ka,
+mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");var Va=this.installInputHandler(ra,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");var Ya=this.installInputHandler(Ca,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");var jb=this.installInputHandler(ua,mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(T,Ta);this.addKeyHandler(Ha,Ta);this.addKeyHandler(Ka,Ta);this.addKeyHandler(ra,Ta);this.addKeyHandler(Ca,Ta);this.addKeyHandler(ua,Ta);d.getModel().addListener(mxEvent.CHANGE,Ta);
+this.listeners.push({destroy:function(){d.getModel().removeListener(Ta)}});Ta();if(d.cellEditor.isContentEditing()){var bb=!1;e=function(){bb||(bb=!0,window.setTimeout(function(){var da=d.getSelectedEditingElement();if(null!=da){var t=function(Aa,Ea){if(null!=Aa&&null!=Ea){if(Aa==Ea)return!0;if(Aa.length>Ea.length+1)return Aa.substring(Aa.length-Ea.length-1,Aa.length)=="-"+Ea}return!1},z=function(Aa){if(null!=d.getParentByName(da,Aa,d.cellEditor.textarea))return!0;for(var Ea=da;null!=Ea&&1==Ea.childNodes.length;)if(Ea=
+Ea.childNodes[0],Ea.nodeName==Aa)return!0;return!1},A=function(Aa){Aa=null!=Aa?Aa.fontSize:null;return null!=Aa&&"px"==Aa.substring(Aa.length-2)?parseFloat(Aa):mxConstants.DEFAULT_FONTSIZE},E=function(Aa,Ea,Ma){return null!=Ma.style&&null!=Ea?(Ea=Ea.lineHeight,null!=Ma.style.lineHeight&&"%"==Ma.style.lineHeight.substring(Ma.style.lineHeight.length-1)?parseInt(Ma.style.lineHeight)/100:"px"==Ea.substring(Ea.length-2)?parseFloat(Ea)/Aa:parseInt(Ea)):""},H=mxUtils.getCurrentStyle(da),K=A(H),X=E(K,H,da),
+ja=da.getElementsByTagName("*");if(0<ja.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var ea=window.getSelection(),ka=0;ka<ja.length;ka++)if(ea.containsNode(ja[ka],!0)){temp=mxUtils.getCurrentStyle(ja[ka]);K=Math.max(A(temp),K);var ta=E(K,temp,ja[ka]);if(ta!=X||isNaN(ta))X=""}null!=H&&(b(m[0],"bold"==H.fontWeight||400<H.fontWeight||z("B")||z("STRONG")),b(m[1],"italic"==H.fontStyle||z("I")||z("EM")),b(m[2],z("U")),b(Z,z("SUP")),b(P,z("SUB")),d.cellEditor.isTableSelected()?(b(ha,
+t(H.textAlign,"justify")),b(C,t(H.textAlign,"left")),b(G,t(H.textAlign,"center")),b(J,t(H.textAlign,"right"))):(z=d.cellEditor.align||mxUtils.getValue(g.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),t(H.textAlign,"justify")?(b(ha,t(H.textAlign,"justify")),b(C,!1),b(G,!1),b(J,!1)):(b(ha,!1),b(C,z==mxConstants.ALIGN_LEFT),b(G,z==mxConstants.ALIGN_CENTER),b(J,z==mxConstants.ALIGN_RIGHT))),U=d.getParentByName(da,"TABLE",d.cellEditor.textarea),ia=null==U?null:d.getParentByName(da,"TR",U),V=null==
+U?null:d.getParentByNames(da,["TD","TH"],U),db.style.display=null!=U?"":"none",document.activeElement!=T&&("FONT"==da.nodeName&&"4"==da.getAttribute("size")&&null!=ca?(da.removeAttribute("size"),da.style.fontSize=ca+" pt",ca=null):T.value=isNaN(K)?"":K+" pt",ta=parseFloat(X),isNaN(ta)?Ua.value="100 %":Ua.value=Math.round(100*ta)+" %"),null!=W&&(aa="rgba(0, 0, 0, 0)"==H.color||"transparent"==H.color?mxConstants.NONE:mxUtils.rgba2hex(H.color),W(aa,!0)),null!=fa&&(wa="rgba(0, 0, 0, 0)"==H.backgroundColor||
+"transparent"==H.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(H.backgroundColor),fa(wa,!0)),null!=u.firstChild&&(u.firstChild.nodeValue=Graph.stripQuotes(H.fontFamily)))}bb=!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,f){BaseFormatPanel.call(this,a,b,f);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())),
a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY),a.style.paddingTop="8px",a.style.paddingBottom="8px",this.container.appendChild(a),this.container.appendChild(this.addEffects(this.createPanel())));a=this.addEditOps(this.createPanel());null!=a.firstChild&&mxUtils.br(a);this.container.appendChild(this.addStyleOps(a))};
StyleFormatPanel.prototype.getCssRules=function(a){var b=document.implementation.createHTMLDocument(""),f=document.createElement("style");mxUtils.setTextContent(f,a);b.body.appendChild(f);return f.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var f=b.style.editableCssRules;if(null!=f){var d=new RegExp(f),g=b.style.image.substring(b.style.image.indexOf(",")+1),e=window.atob?atob(g):Base64.decode(g,!0),k=mxUtils.parseXml(e);if(null!=k){var n=k.getElementsByTagName("style");for(b=0;b<n.length;b++){var u=this.getCssRules(mxUtils.getTextContent(n[b]));
for(f=0;f<u.length;f++)this.addSvgRule(a,u[f],k,n[b],u,f,d)}}}}catch(m){}return a};
-StyleFormatPanel.prototype.addSvgRule=function(a,b,f,d,g,e,k){var n=this.editorUi,u=n.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var A=mxUtils.trim(m.style[r]);""!=A&&"url("!=A.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=A;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
-10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[e].style[r]=C;C="";for(var F=0;F<g.length;F++)C+=g[F].cssText+" ";d.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
+StyleFormatPanel.prototype.addSvgRule=function(a,b,f,d,g,e,k){var n=this.editorUi,u=n.editor.graph;k.test(b.selectorText)&&(k=mxUtils.bind(this,function(m,r,x){var B=mxUtils.trim(m.style[r]);""!=B&&"url("!=B.substring(0,4)&&(m=this.createColorOption(x+" "+m.selectorText,function(){var C=B;return(C=C.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===C.length?"#"+("0"+parseInt(C[1],10).toString(16)).slice(-2)+("0"+parseInt(C[2],10).toString(16)).slice(-2)+("0"+parseInt(C[3],
+10).toString(16)).slice(-2):""},mxUtils.bind(this,function(C){g[e].style[r]=C;C="";for(var G=0;G<g.length;G++)C+=g[G].cssText+" ";d.textContent=C;C=mxUtils.getXml(f.documentElement);u.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(C):Base64.encode(C,!0)),n.getSelectionState().cells)}),"#ffffff",{install:function(C){},destroy:function(){}}),a.appendChild(m),a.style.display="")}),k(b,"fill",mxResources.get("fill")),k(b,"stroke",mxResources.get("line")),k(b,"stop-color",
mxResources.get("gradient")))};
StyleFormatPanel.prototype.addEditOps=function(a){var b=this.editorUi.getSelectionState(),f=null;1==b.cells.length&&(f=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(d){this.editorUi.actions.get("editStyle").funct()})),f.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),f.style.width="210px",f.style.marginBottom="2px",a.appendChild(f));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(d){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==f?b.style.width="210px":(f.style.width="104px",b.style.width="104px",b.style.marginLeft="2px"),a.appendChild(b));return a};
StyleFormatPanel.prototype.addFill=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";var g=document.createElement("select");g.style.position="absolute";g.style.left="104px";g.style.width="70px";g.style.height="22px";g.style.padding="0px";g.style.marginTop="-3px";g.style.borderRadius="4px";g.style.border="1px solid rgb(160, 160, 160)";g.style.boxSizing="border-box";var e=g.cloneNode(!1);mxEvent.addListener(g,"click",function(C){mxEvent.consume(C)});
mxEvent.addListener(e,"click",function(C){mxEvent.consume(C)});var k=1<=d.vertices.length?f.stylesheet.getDefaultVertexStyle():f.stylesheet.getDefaultEdgeStyle(),n=this.createCellColorOption(mxResources.get("gradient"),mxConstants.STYLE_GRADIENTCOLOR,null!=k[mxConstants.STYLE_GRADIENTCOLOR]?k[mxConstants.STYLE_GRADIENTCOLOR]:"#ffffff",function(C){g.style.display=null==C||C==mxConstants.NONE?"none":""},function(C){f.updateCellStyles({gradientColor:C},f.getSelectionCells())}),u="image"==d.style.shape?
mxConstants.STYLE_IMAGE_BACKGROUND:mxConstants.STYLE_FILLCOLOR;k=this.createCellColorOption(mxResources.get("fill"),u,"default",null,mxUtils.bind(this,function(C){f.setCellStyles(u,C,d.cells)}),f.shapeBackgroundColor);k.style.fontWeight="bold";var m=mxUtils.getValue(d.style,u,null);n.style.display=null!=m&&m!=mxConstants.NONE&&d.fill&&"image"!=d.style.shape?"":"none";var r=[mxConstants.DIRECTION_NORTH,mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_RADIAL];
-for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),e.appendChild(r);k.appendChild(e);var A=mxUtils.bind(this,function(){d=b.getSelectionState();var C=mxUtils.getValue(d.style,mxConstants.STYLE_GRADIENT_DIRECTION,
-mxConstants.DIRECTION_SOUTH),F=mxUtils.getValue(d.style,"fillStyle","auto");""==C&&(C=mxConstants.DIRECTION_SOUTH);g.value=C;e.value=F;a.style.display=d.fill?"":"none";C=mxUtils.getValue(d.style,u,null);d.fill&&null!=C&&C!=mxConstants.NONE&&"filledEdge"!=d.style.shape?(e.style.display="1"==d.style.sketch?"":"none",n.style.display=d.containsImage||"1"==d.style.sketch&&"solid"!=F&&"auto"!=F?"none":""):(e.style.display="none",n.style.display="none")});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});
-A();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",d.cells));mxEvent.consume(C)});mxEvent.addListener(e,"change",function(C){f.setCellStyles("fillStyle",e.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[e.value],"cells",d.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
+for(m=0;m<r.length;m++){var x=document.createElement("option");x.setAttribute("value",r[m]);mxUtils.write(x,mxResources.get(r[m]));g.appendChild(x)}n.appendChild(g);for(m=0;m<Editor.roughFillStyles.length;m++)r=document.createElement("option"),r.setAttribute("value",Editor.roughFillStyles[m].val),mxUtils.write(r,Editor.roughFillStyles[m].dispName),e.appendChild(r);k.appendChild(e);var B=mxUtils.bind(this,function(){d=b.getSelectionState();var C=mxUtils.getValue(d.style,mxConstants.STYLE_GRADIENT_DIRECTION,
+mxConstants.DIRECTION_SOUTH),G=mxUtils.getValue(d.style,"fillStyle","auto");""==C&&(C=mxConstants.DIRECTION_SOUTH);g.value=C;e.value=G;a.style.display=d.fill?"":"none";C=mxUtils.getValue(d.style,u,null);d.fill&&null!=C&&C!=mxConstants.NONE&&"filledEdge"!=d.style.shape?(e.style.display="1"==d.style.sketch?"":"none",n.style.display=d.containsImage||"1"==d.style.sketch&&"solid"!=G&&"auto"!=G?"none":""):(e.style.display="none",n.style.display="none")});f.getModel().addListener(mxEvent.CHANGE,B);this.listeners.push({destroy:function(){f.getModel().removeListener(B)}});
+B();mxEvent.addListener(g,"change",function(C){f.setCellStyles(mxConstants.STYLE_GRADIENT_DIRECTION,g.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_GRADIENT_DIRECTION],"values",[g.value],"cells",d.cells));mxEvent.consume(C)});mxEvent.addListener(e,"change",function(C){f.setCellStyles("fillStyle",e.value,d.cells);b.fireEvent(new mxEventObject("styleChanged","keys",["fillStyle"],"values",[e.value],"cells",d.cells));mxEvent.consume(C)});a.appendChild(k);a.appendChild(n);
k=this.getCustomColors();for(m=0;m<k.length;m++)a.appendChild(this.createCellColorOption(k[m].title,k[m].key,k[m].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(W){var aa=parseFloat(D.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));D.value=aa+" pt";mxEvent.consume(W)}function f(W){var aa=parseFloat(O.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,
-mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));O.value=aa+" pt";mxEvent.consume(W)}var d=this.editorUi,g=d.editor.graph,e=d.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var k=document.createElement("div");k.style.fontWeight="bold";e.stroke||(k.style.display="none");var n=document.createElement("select");
+StyleFormatPanel.prototype.addStroke=function(a){function b(W){var aa=parseFloat(D.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));D.value=aa+" pt";mxEvent.consume(W)}function f(W){var aa=parseFloat(N.value);aa=Math.min(999,Math.max(0,isNaN(aa)?1:aa));aa!=mxUtils.getValue(e.style,
+mxConstants.STYLE_STROKEWIDTH,1)&&(g.setCellStyles(mxConstants.STYLE_STROKEWIDTH,aa,e.cells),d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_STROKEWIDTH],"values",[aa],"cells",e.cells)));N.value=aa+" pt";mxEvent.consume(W)}var d=this.editorUi,g=d.editor.graph,e=d.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="4px";a.style.whiteSpace="normal";var k=document.createElement("div");k.style.fontWeight="bold";e.stroke||(k.style.display="none");var n=document.createElement("select");
n.style.position="absolute";n.style.height="22px";n.style.padding="0px";n.style.marginTop="-3px";n.style.boxSizing="border-box";n.style.left="94px";n.style.width="80px";n.style.border="1px solid rgb(160, 160, 160)";n.style.borderRadius="4px";for(var u=["sharp","rounded","curved"],m=0;m<u.length;m++){var r=document.createElement("option");r.setAttribute("value",u[m]);mxUtils.write(r,mxResources.get(u[m]));n.appendChild(r)}mxEvent.addListener(n,"change",function(W){g.getModel().beginUpdate();try{var aa=
-[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],oa=["0",null];"rounded"==n.value?oa=["1",null]:"curved"==n.value&&(oa=[null,"1"]);for(var ua=0;ua<aa.length;ua++)g.setCellStyles(aa[ua],oa[ua],e.cells);d.fireEvent(new mxEventObject("styleChanged","keys",aa,"values",oa,"cells",e.cells))}finally{g.getModel().endUpdate()}mxEvent.consume(W)});mxEvent.addListener(n,"click",function(W){mxEvent.consume(W)});var x="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR;u="image"==
-e.style.shape?mxResources.get("border"):mxResources.get("line");u=this.createCellColorOption(u,x,"default",null,mxUtils.bind(this,function(W){g.setCellStyles(x,W,e.cells)}),g.shapeForegroundColor);u.appendChild(n);k.appendChild(u);var A=k.cloneNode(!1);A.style.fontWeight="normal";A.style.whiteSpace="nowrap";A.style.position="relative";A.style.paddingLeft="0px";A.style.marginBottom="2px";A.style.overflow="hidden";A.style.marginTop="2px";A.style.width="220px";A.className="geToolbarContainer";var C=
-mxUtils.bind(this,function(W,aa,oa,ua,Ja){W=this.editorUi.menus.styleChange(W,"",ua,Ja,"geIcon",null);ua=document.createElement("div");ua.style.width=aa+"px";ua.style.height="1px";ua.style.borderBottom="1px "+oa+" "+this.defaultStrokeColor;ua.style.paddingTop="6px";W.firstChild.firstChild.style.padding="0px 4px 0px 4px";W.firstChild.firstChild.style.width=aa+"px";W.firstChild.firstChild.appendChild(ua);return W});m=this.editorUi.toolbar.addMenuFunctionInContainer(A,"geSprite-orthogonal",mxResources.get("pattern"),
+[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],oa=["0",null];"rounded"==n.value?oa=["1",null]:"curved"==n.value&&(oa=[null,"1"]);for(var sa=0;sa<aa.length;sa++)g.setCellStyles(aa[sa],oa[sa],e.cells);d.fireEvent(new mxEventObject("styleChanged","keys",aa,"values",oa,"cells",e.cells))}finally{g.getModel().endUpdate()}mxEvent.consume(W)});mxEvent.addListener(n,"click",function(W){mxEvent.consume(W)});var x="image"==e.style.shape?mxConstants.STYLE_IMAGE_BORDER:mxConstants.STYLE_STROKECOLOR;u="image"==
+e.style.shape?mxResources.get("border"):mxResources.get("line");u=this.createCellColorOption(u,x,"default",null,mxUtils.bind(this,function(W){g.setCellStyles(x,W,e.cells)}),g.shapeForegroundColor);u.appendChild(n);k.appendChild(u);var B=k.cloneNode(!1);B.style.fontWeight="normal";B.style.whiteSpace="nowrap";B.style.position="relative";B.style.paddingLeft="0px";B.style.marginBottom="2px";B.style.overflow="hidden";B.style.marginTop="2px";B.style.width="220px";B.className="geToolbarContainer";var C=
+mxUtils.bind(this,function(W,aa,oa,sa,Ka){W=this.editorUi.menus.styleChange(W,"",sa,Ka,"geIcon",null);sa=document.createElement("div");sa.style.width=aa+"px";sa.style.height="1px";sa.style.borderBottom="1px "+oa+" "+this.defaultStrokeColor;sa.style.paddingTop="6px";W.firstChild.firstChild.style.padding="0px 4px 0px 4px";W.firstChild.firstChild.style.width=aa+"px";W.firstChild.firstChild.appendChild(sa);return W});m=this.editorUi.toolbar.addMenuFunctionInContainer(B,"geSprite-orthogonal",mxResources.get("pattern"),
!1,mxUtils.bind(this,function(W){C(W,75,"solid",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));C(W,75,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],
-["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));var F=A.cloneNode(!1),K=this.editorUi.toolbar.addMenuFunctionInContainer(F,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(W){this.editorUi.menus.styleChange(W,"",[mxConstants.STYLE_SHAPE,mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE,"width"],[null,
+["1","1 2"]).setAttribute("title",mxResources.get("dotted")+" (2)");C(W,75,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));var G=B.cloneNode(!1),J=this.editorUi.toolbar.addMenuFunctionInContainer(G,"geSprite-connection",mxResources.get("connection"),!1,mxUtils.bind(this,function(W){this.editorUi.menus.styleChange(W,"",[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(W,"",[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(W,"",[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(W,"",[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"))}));r=this.editorUi.toolbar.addMenuFunctionInContainer(F,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(W){C(W,33,"solid",[mxConstants.STYLE_DASHED,
+"geIcon geSprite geSprite-arrow",null,!0).setAttribute("title",mxResources.get("arrow"));this.editorUi.menus.styleChange(W,"",[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"))}));r=this.editorUi.toolbar.addMenuFunctionInContainer(G,"geSprite-orthogonal",mxResources.get("pattern"),!1,mxUtils.bind(this,function(W){C(W,33,"solid",[mxConstants.STYLE_DASHED,
mxConstants.STYLE_DASH_PATTERN],[null,null]).setAttribute("title",mxResources.get("solid"));C(W,33,"dashed",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1",null]).setAttribute("title",mxResources.get("dashed"));C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 1"]).setAttribute("title",mxResources.get("dotted")+" (1)");C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 2"]).setAttribute("title",mxResources.get("dotted")+
-" (2)");C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));u=A.cloneNode(!1);var D=document.createElement("input");D.style.position="absolute";D.style.textAlign="right";D.style.marginTop="2px";D.style.width="52px";D.style.height="21px";D.style.left="146px";D.style.border="1px solid rgb(160, 160, 160)";D.style.borderRadius="4px";D.style.boxSizing="border-box";D.setAttribute("title",mxResources.get("linewidth"));
-A.appendChild(D);var O=D.cloneNode(!0);F.appendChild(O);var Q=this.createStepper(D,b,1,9);Q.style.display=D.style.display;Q.style.marginTop="2px";Q.style.left="198px";A.appendChild(Q);Q=this.createStepper(O,f,1,9);Q.style.display=O.style.display;Q.style.marginTop="2px";O.style.position="absolute";Q.style.left="198px";F.appendChild(Q);mxEvent.addListener(D,"blur",b);mxEvent.addListener(D,"change",b);mxEvent.addListener(O,"blur",f);mxEvent.addListener(O,"change",f);var R=this.editorUi.toolbar.addMenuFunctionInContainer(u,
+" (2)");C(W,33,"dotted",[mxConstants.STYLE_DASHED,mxConstants.STYLE_DASH_PATTERN],["1","1 4"]).setAttribute("title",mxResources.get("dotted")+" (3)")}));u=B.cloneNode(!1);var D=document.createElement("input");D.style.position="absolute";D.style.textAlign="right";D.style.marginTop="2px";D.style.width="52px";D.style.height="21px";D.style.left="146px";D.style.border="1px solid rgb(160, 160, 160)";D.style.borderRadius="4px";D.style.boxSizing="border-box";D.setAttribute("title",mxResources.get("linewidth"));
+B.appendChild(D);var N=D.cloneNode(!0);G.appendChild(N);var Q=this.createStepper(D,b,1,9);Q.style.display=D.style.display;Q.style.marginTop="2px";Q.style.left="198px";B.appendChild(Q);Q=this.createStepper(N,f,1,9);Q.style.display=N.style.display;Q.style.marginTop="2px";N.style.position="absolute";Q.style.left="198px";G.appendChild(Q);mxEvent.addListener(D,"blur",b);mxEvent.addListener(D,"change",b);mxEvent.addListener(N,"blur",f);mxEvent.addListener(N,"change",f);var R=this.editorUi.toolbar.addMenuFunctionInContainer(u,
"geSprite-orthogonal",mxResources.get("waypoints"),!1,mxUtils.bind(this,function(W){"arrow"!=e.style.shape&&(this.editorUi.menus.edgeStyleChange(W,"",[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(W,"",[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(W,"",[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(W,"",[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(W,"",[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(W,"",[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW,mxConstants.STYLE_CURVED,
@@ -3459,48 +3459,48 @@ mxUtils.bind(this,function(W){if("connector"==e.style.shape||"flexArrow"==e.styl
"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["baseDash",0],null,null,!1,Format.baseDashMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERone",0],null,null,!1,Format.EROneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmandOne",0],null,null,!1,Format.ERmandOneMarkerImage.src),
"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERmany",0],null,null,!1,Format.ERmanyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERoneToMany",0],null,null,!1,Format.ERoneToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToOne",0],null,null,
!1,Format.ERzeroToOneMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["ERzeroToMany",0],null,null,!1,Format.ERzeroToManyMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,"endFill"],["doubleBlock",0],null,null,!1,Format.doubleBlockMarkerImage.src),"scaleX(-1)"),Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW,
-"endFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src),"scaleX(-1)")):this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));W.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){null!=W.div&&mxUtils.fit(W.div)}),0)}}));Q=this.addArrow(K,8);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-2px";Q=this.addArrow(R,
-10);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-3px";R.getElementsByTagName("img")[0].style.top="-1px";this.addArrow(P,null,!0);this.addArrow(Z,null,!0);Q=this.addArrow(m,9);Q.className="geIcon";Q.style.width="auto";var T=this.addArrow(r,9);T.className="geIcon";T.style.width="22px";var U=document.createElement("div");U.style.width="84px";U.style.height="1px";U.style.borderBottom="1px solid "+this.defaultStrokeColor;U.style.marginBottom="7px";Q.appendChild(U);var fa=document.createElement("div");
-fa.style.width="23px";fa.style.height="1px";fa.style.borderBottom="1px solid "+this.defaultStrokeColor;fa.style.marginBottom="7px";T.appendChild(fa);m.style.height="15px";m.style.marginLeft="16px";r.style.height="15px";r.style.marginLeft="3px";K.style.marginLeft="10px";K.style.height="15px";R.style.marginLeft="10px";R.style.height="17px";P.style.marginLeft="3px";P.style.height="17px";Z.style.marginLeft="3px";Z.style.height="17px";a.appendChild(k);a.appendChild(F);a.appendChild(A);m=A.cloneNode(!1);
-m.style.padding="5px 4px 6px 0px";m.style.fontWeight="normal";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="0px";r.style.marginBottom="12px";r.style.marginTop="2px";r.style.fontWeight="normal";r.style.width="76px";mxUtils.write(r,mxResources.get("lineend"));m.appendChild(r);var ha=this.addUnitInput(m,"pt",98,52,function(){ka.apply(this,arguments)}),ba=this.addUnitInput(m,"pt",30,52,function(){ea.apply(this,arguments)});mxUtils.br(m);Q=document.createElement("div");
-Q.style.height="8px";m.appendChild(Q);r=r.cloneNode(!1);mxUtils.write(r,mxResources.get("linestart"));m.appendChild(r);var qa=this.addUnitInput(m,"pt",98,52,function(){V.apply(this,arguments)}),I=this.addUnitInput(m,"pt",30,52,function(){S.apply(this,arguments)});mxUtils.br(m);this.addLabel(m,mxResources.get("spacing"),98,52);this.addLabel(m,mxResources.get("size"),30,52);mxUtils.br(m);k=k.cloneNode(!1);k.style.fontWeight="normal";k.style.position="relative";k.style.paddingLeft="16px";k.style.marginBottom=
-"2px";k.style.marginTop="6px";k.style.borderWidth="0px";k.style.paddingBottom="18px";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="3px";r.style.marginBottom="12px";r.style.marginTop="1px";r.style.fontWeight="normal";r.style.width="120px";mxUtils.write(r,mxResources.get("perimeter"));k.appendChild(r);var L=this.addUnitInput(k,"pt",30,52,function(){wa.apply(this,arguments)});e.edges.length==e.cells.length?(a.appendChild(u),a.appendChild(m)):e.vertices.length==e.cells.length&&
-a.appendChild(k);var H=mxUtils.bind(this,function(W,aa,oa){function ua(Ja,Ga,va,za){va=va.getElementsByTagName("div")[0];null!=va&&d.updateCssForMarker(va,za,e.style.shape,Ja,Ga);return va}e=d.getSelectionState();if(oa||document.activeElement!=D)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),D.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=O)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),O.value=isNaN(W)?"":W+" pt";n.style.visibility="connector"==
-e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?n.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(n.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?U.style.borderBottom="1px dashed "+this.defaultStrokeColor:U.style.borderBottom="1px dotted "+this.defaultStrokeColor:U.style.borderBottom="1px solid "+this.defaultStrokeColor;
-fa.style.borderBottom=U.style.borderBottom;W=R.getElementsByTagName("div")[0];null!=W&&(aa=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(aa=null),"orthogonalEdgeStyle"==aa&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?W.className="geSprite geSprite-curved":W.className="straight"==aa||"none"==aa||null==aa?"geSprite geSprite-straight":"entityRelationEdgeStyle"==aa?"geSprite geSprite-entity":"elbowEdgeStyle"==
-aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");W=K.getElementsByTagName("div")[0];null!=W&&(W.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?(F.style.display="",A.style.display="none"):(F.style.display="none",A.style.display="");Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps&&(a.style.borderBottomStyle="none");W=ua(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),P,"start");aa=ua(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
+"endFill"],["doubleBlock",1],null,null,!1,Format.doubleBlockFilledMarkerImage.src),"scaleX(-1)")):this.editorUi.menus.edgeStyleChange(W,"",[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],"geIcon geSprite geSprite-endblocktrans",null,!1).setAttribute("title",mxResources.get("block"));W.div.style.width="40px";window.setTimeout(mxUtils.bind(this,function(){null!=W.div&&mxUtils.fit(W.div)}),0)}}));Q=this.addArrow(J,8);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-2px";Q=this.addArrow(R,
+10);Q.nextSibling.style.position="relative";Q.nextSibling.style.top="-3px";R.getElementsByTagName("img")[0].style.top="-1px";this.addArrow(P,null,!0);this.addArrow(Z,null,!0);Q=this.addArrow(m,9);Q.className="geIcon";Q.style.width="auto";var U=this.addArrow(r,9);U.className="geIcon";U.style.width="22px";var V=document.createElement("div");V.style.width="84px";V.style.height="1px";V.style.borderBottom="1px solid "+this.defaultStrokeColor;V.style.marginBottom="7px";Q.appendChild(V);var ia=document.createElement("div");
+ia.style.width="23px";ia.style.height="1px";ia.style.borderBottom="1px solid "+this.defaultStrokeColor;ia.style.marginBottom="7px";U.appendChild(ia);m.style.height="15px";m.style.marginLeft="16px";r.style.height="15px";r.style.marginLeft="3px";J.style.marginLeft="10px";J.style.height="15px";R.style.marginLeft="10px";R.style.height="17px";P.style.marginLeft="3px";P.style.height="17px";Z.style.marginLeft="3px";Z.style.height="17px";a.appendChild(k);a.appendChild(G);a.appendChild(B);m=B.cloneNode(!1);
+m.style.padding="5px 4px 6px 0px";m.style.fontWeight="normal";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="0px";r.style.marginBottom="12px";r.style.marginTop="2px";r.style.fontWeight="normal";r.style.width="76px";mxUtils.write(r,mxResources.get("lineend"));m.appendChild(r);var ha=this.addUnitInput(m,"pt",98,52,function(){fa.apply(this,arguments)}),ba=this.addUnitInput(m,"pt",30,52,function(){ca.apply(this,arguments)});mxUtils.br(m);Q=document.createElement("div");
+Q.style.height="8px";m.appendChild(Q);r=r.cloneNode(!1);mxUtils.write(r,mxResources.get("linestart"));m.appendChild(r);var qa=this.addUnitInput(m,"pt",98,52,function(){T.apply(this,arguments)}),O=this.addUnitInput(m,"pt",30,52,function(){L.apply(this,arguments)});mxUtils.br(m);this.addLabel(m,mxResources.get("spacing"),98,52);this.addLabel(m,mxResources.get("size"),30,52);mxUtils.br(m);k=k.cloneNode(!1);k.style.fontWeight="normal";k.style.position="relative";k.style.paddingLeft="16px";k.style.marginBottom=
+"2px";k.style.marginTop="6px";k.style.borderWidth="0px";k.style.paddingBottom="18px";r=document.createElement("div");r.style.position="absolute";r.style.marginLeft="3px";r.style.marginBottom="12px";r.style.marginTop="1px";r.style.fontWeight="normal";r.style.width="120px";mxUtils.write(r,mxResources.get("perimeter"));k.appendChild(r);var S=this.addUnitInput(k,"pt",30,52,function(){wa.apply(this,arguments)});e.edges.length==e.cells.length?(a.appendChild(u),a.appendChild(m)):e.vertices.length==e.cells.length&&
+a.appendChild(k);var F=mxUtils.bind(this,function(W,aa,oa){function sa(Ka,Ha,ua,Ca){ua=ua.getElementsByTagName("div")[0];null!=ua&&d.updateCssForMarker(ua,Ca,e.style.shape,Ka,Ha);return ua}e=d.getSelectionState();if(oa||document.activeElement!=D)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),D.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=N)W=parseFloat(mxUtils.getValue(e.style,mxConstants.STYLE_STROKEWIDTH,1)),N.value=isNaN(W)?"":W+" pt";n.style.visibility="connector"==
+e.style.shape||"filledEdge"==e.style.shape?"":"hidden";"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?n.value="curved":"1"==mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,null)&&(n.value="rounded");"1"==mxUtils.getValue(e.style,mxConstants.STYLE_DASHED,null)?null==mxUtils.getValue(e.style,mxConstants.STYLE_DASH_PATTERN,null)?V.style.borderBottom="1px dashed "+this.defaultStrokeColor:V.style.borderBottom="1px dotted "+this.defaultStrokeColor:V.style.borderBottom="1px solid "+this.defaultStrokeColor;
+ia.style.borderBottom=V.style.borderBottom;W=R.getElementsByTagName("div")[0];null!=W&&(aa=mxUtils.getValue(e.style,mxConstants.STYLE_EDGE,null),"1"==mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,null)&&(aa=null),"orthogonalEdgeStyle"==aa&&"1"==mxUtils.getValue(e.style,mxConstants.STYLE_CURVED,null)?W.className="geSprite geSprite-curved":W.className="straight"==aa||"none"==aa||null==aa?"geSprite geSprite-straight":"entityRelationEdgeStyle"==aa?"geSprite geSprite-entity":"elbowEdgeStyle"==
+aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalelbow":"geSprite-horizontalelbow"):"isometricEdgeStyle"==aa?"geSprite "+("vertical"==mxUtils.getValue(e.style,mxConstants.STYLE_ELBOW,null)?"geSprite-verticalisometric":"geSprite-horizontalisometric"):"geSprite geSprite-orthogonal");W=J.getElementsByTagName("div")[0];null!=W&&(W.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?(G.style.display="",B.style.display="none"):(G.style.display="none",B.style.display="");Graph.lineJumpsEnabled&&0<e.edges.length&&0==e.vertices.length&&e.lineJumps&&(a.style.borderBottomStyle="none");W=sa(mxUtils.getValue(e.style,mxConstants.STYLE_STARTARROW,null),mxUtils.getValue(e.style,"startFill","1"),P,"start");aa=sa(mxUtils.getValue(e.style,mxConstants.STYLE_ENDARROW,null),mxUtils.getValue(e.style,
"endFill","1"),Z,"end");null!=W&&null!=aa&&("arrow"==e.style.shape?(W.className="geSprite geSprite-noarrow",aa.className="geSprite geSprite-endblocktrans"):"link"==e.style.shape&&(W.className="geSprite geSprite-noarrow",aa.className="geSprite geSprite-noarrow"));mxUtils.setOpacity(R,"arrow"==e.style.shape?30:100);"connector"!=e.style.shape&&"flexArrow"!=e.style.shape&&"filledEdge"!=e.style.shape?(mxUtils.setOpacity(P,30),mxUtils.setOpacity(Z,30)):(mxUtils.setOpacity(P,100),mxUtils.setOpacity(Z,100));
-if(oa||document.activeElement!=I)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),I.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),qa.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=ba)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),ba.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,
-mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),ha.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=L)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),L.value=isNaN(W)?"":W+" pt"});var S=this.installInputHandler(I,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");var V=this.installInputHandler(qa,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");var ea=this.installInputHandler(ba,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,
-0,999," pt");var ka=this.installInputHandler(ha,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");var wa=this.installInputHandler(L,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(D,H);this.addKeyHandler(I,H);this.addKeyHandler(qa,H);this.addKeyHandler(ba,H);this.addKeyHandler(ha,H);this.addKeyHandler(L,H);g.getModel().addListener(mxEvent.CHANGE,H);this.listeners.push({destroy:function(){g.getModel().removeListener(H)}});H();return a};
+if(oa||document.activeElement!=O)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)),O.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0)),qa.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=ba)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE)),ba.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=qa)W=parseInt(mxUtils.getValue(e.style,
+mxConstants.STYLE_TARGET_PERIMETER_SPACING,0)),ha.value=isNaN(W)?"":W+" pt";if(oa||document.activeElement!=S)W=parseInt(mxUtils.getValue(e.style,mxConstants.STYLE_PERIMETER_SPACING,0)),S.value=isNaN(W)?"":W+" pt"});var L=this.installInputHandler(O,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE,0,999," pt");var T=this.installInputHandler(qa,mxConstants.STYLE_SOURCE_PERIMETER_SPACING,0,-999,999," pt");var ca=this.installInputHandler(ba,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE,
+0,999," pt");var fa=this.installInputHandler(ha,mxConstants.STYLE_TARGET_PERIMETER_SPACING,0,-999,999," pt");var wa=this.installInputHandler(S,mxConstants.STYLE_PERIMETER_SPACING,0,0,999," pt");this.addKeyHandler(D,F);this.addKeyHandler(O,F);this.addKeyHandler(qa,F);this.addKeyHandler(ba,F);this.addKeyHandler(ha,F);this.addKeyHandler(S,F);g.getModel().addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){g.getModel().removeListener(F)}});F();return a};
StyleFormatPanel.prototype.addLineJumps=function(a){var b=this.editorUi,f=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 g=document.createElement("div");g.style.position="absolute";g.style.maxWidth="82px";g.style.overflow="hidden";g.style.textOverflow="ellipsis";mxUtils.write(g,mxResources.get("lineJumps"));a.appendChild(g);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";g=["none","arc","gap","sharp","line"];for(var k=0;k<g.length;k++){var n=document.createElement("option");n.setAttribute("value",g[k]);mxUtils.write(n,mxResources.get(g[k]));e.appendChild(n)}mxEvent.addListener(e,"change",function(x){f.getModel().beginUpdate();try{f.setCellStyles("jumpStyle",
-e.value,d.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",d.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(e,"click",function(x){mxEvent.consume(x)});a.appendChild(e);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,A,C){d=b.getSelectionState();e.value=mxUtils.getValue(d.style,
+e.value,d.cells),b.fireEvent(new mxEventObject("styleChanged","keys",["jumpStyle"],"values",[e.value],"cells",d.cells))}finally{f.getModel().endUpdate()}mxEvent.consume(x)});mxEvent.addListener(e,"click",function(x){mxEvent.consume(x)});a.appendChild(e);var u=this.addUnitInput(a,"pt",16,42,function(){m.apply(this,arguments)});var m=this.installInputHandler(u,"jumpSize",Graph.defaultJumpSize,0,999," pt");var r=mxUtils.bind(this,function(x,B,C){d=b.getSelectionState();e.value=mxUtils.getValue(d.style,
"jumpStyle","none");if(C||document.activeElement!=u)x=parseInt(mxUtils.getValue(d.style,"jumpSize",Graph.defaultJumpSize)),u.value=isNaN(x)?"":x+" pt"});this.addKeyHandler(u,r);f.getModel().addListener(mxEvent.CHANGE,r);this.listeners.push({destroy:function(){f.getModel().removeListener(r)}});r()}else a.style.display="none";return a};
StyleFormatPanel.prototype.addEffects=function(a){var b=this.editorUi,f=b.editor.graph,d=b.getSelectionState();a.style.paddingTop="4px";a.style.paddingBottom="0px";var g=document.createElement("table");g.style.width="210px";g.style.fontWeight="bold";g.style.tableLayout="fixed";var e=document.createElement("tbody"),k=document.createElement("tr");k.style.padding="0px";var n=document.createElement("td");n.style.padding="0px";n.style.width="50%";n.setAttribute("valign","top");var u=n.cloneNode(!0);u.style.paddingLeft=
-"8px";k.appendChild(n);k.appendChild(u);e.appendChild(k);g.appendChild(e);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,F,K){C=this.createCellOption(C,F,K);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),A=mxUtils.bind(this,function(C,F,K){d=b.getSelectionState();n.innerText="";u.innerText="";m=n;d.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);d.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);d.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
-0);d.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,A);this.listeners.push({destroy:function(){f.getModel().removeListener(A)}});A();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
+"8px";k.appendChild(n);k.appendChild(u);e.appendChild(k);g.appendChild(e);a.appendChild(g);var m=n,r=0,x=mxUtils.bind(this,function(C,G,J){C=this.createCellOption(C,G,J);C.style.width="100%";m.appendChild(C);m=m==n?u:n;r++}),B=mxUtils.bind(this,function(C,G,J){d=b.getSelectionState();n.innerText="";u.innerText="";m=n;d.rounded&&x(mxResources.get("rounded"),mxConstants.STYLE_ROUNDED,0);d.swimlane&&x(mxResources.get("divider"),"swimlaneLine",1);d.containsImage||x(mxResources.get("shadow"),mxConstants.STYLE_SHADOW,
+0);d.glass&&x(mxResources.get("glass"),mxConstants.STYLE_GLASS,0);x(mxResources.get("sketch"),"sketch",0)});f.getModel().addListener(mxEvent.CHANGE,B);this.listeners.push({destroy:function(){f.getModel().removeListener(B)}});B();return a};StyleFormatPanel.prototype.addStyleOps=function(a){a.style.paddingTop="10px";a.style.paddingBottom="10px";this.addActions(a,["setAsDefaultStyle"]);return a};DiagramStylePanel=function(a,b,f){BaseFormatPanel.call(this,a,b,f);this.init()};
mxUtils.extend(DiagramStylePanel,BaseFormatPanel);DiagramStylePanel.prototype.init=function(){var a=this.editorUi;this.darkModeChangedListener=mxUtils.bind(this,function(){this.format.cachedStyleEntries=[]});a.addListener("darkModeChanged",this.darkModeChangedListener);this.container.appendChild(this.addView(this.createPanel()))};
DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,f=b.editor.graph,d=f.getModel(),g=f.view.gridColor;a.style.whiteSpace="normal";var e="1"==f.currentVertexStyle.sketch&&"1"==f.currentEdgeStyle.sketch,k="1"==f.currentVertexStyle.rounded,n="1"==f.currentEdgeStyle.curved,u=document.createElement("div");u.style.marginRight="16px";a.style.paddingTop="8px";var m=document.createElement("table");m.style.width="210px";m.style.fontWeight="bold";var r=document.createElement("tbody"),x=document.createElement("tr");
-x.style.padding="0px";var A=document.createElement("td");A.style.padding="0px";A.style.width="50%";A.setAttribute("valign","middle");var C=A.cloneNode(!0);C.style.paddingLeft="8px";"1"!=urlParams.sketch&&(u.style.paddingBottom="12px",x.appendChild(A),A.appendChild(this.createOption(mxResources.get("sketch"),function(){return e},function(ba){(e=ba)?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(delete f.currentEdgeStyle.sketch,delete f.currentVertexStyle.sketch);f.updateCellStyles({sketch:ba?
+x.style.padding="0px";var B=document.createElement("td");B.style.padding="0px";B.style.width="50%";B.setAttribute("valign","middle");var C=B.cloneNode(!0);C.style.paddingLeft="8px";"1"!=urlParams.sketch&&(u.style.paddingBottom="12px",x.appendChild(B),B.appendChild(this.createOption(mxResources.get("sketch"),function(){return e},function(ba){(e=ba)?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(delete f.currentEdgeStyle.sketch,delete f.currentVertexStyle.sketch);f.updateCellStyles({sketch:ba?
"1":null},f.getVerticesAndEdges())},null,function(ba){ba.style.width="auto"})));x.appendChild(C);r.appendChild(x);m.appendChild(r);C.appendChild(this.createOption(mxResources.get("rounded"),function(){return k},function(ba){(k=ba)?(f.currentEdgeStyle.rounded="1",f.currentVertexStyle.rounded="1"):(delete f.currentEdgeStyle.rounded,delete f.currentVertexStyle.rounded);f.updateCellStyles({rounded:ba?"1":"0"},f.getVerticesAndEdges())},null,function(ba){ba.style.width="auto"}));"1"!=urlParams.sketch&&
-(A=A.cloneNode(!1),C=C.cloneNode(!1),x=x.cloneNode(!1),x.appendChild(A),x.appendChild(C),r.appendChild(x),A.appendChild(this.createOption(mxResources.get("curved"),function(){return n},function(ba){(n=ba)?f.currentEdgeStyle.curved="1":delete f.currentEdgeStyle.curved;f.updateCellStyles({curved:ba?"1":null},f.getVerticesAndEdges(!1,!0))},null,function(ba){ba.style.width="auto"})));u.appendChild(m);a.appendChild(u);var F=["fillColor","strokeColor","fontColor","gradientColor"],K=mxUtils.bind(this,function(ba,
-qa){var I=f.getVerticesAndEdges();d.beginUpdate();try{for(var L=0;L<I.length;L++){var H=f.getCellStyle(I[L]);null!=H.labelBackgroundColor&&f.updateCellStyles({labelBackgroundColor:null!=qa?qa.background:null},[I[L]]);for(var S=d.isEdge(I[L]),V=d.getStyle(I[L]),ea=S?f.currentEdgeStyle:f.currentVertexStyle,ka=0;ka<ba.length;ka++)if(null!=H[ba[ka]]&&H[ba[ka]]!=mxConstants.NONE||ba[ka]!=mxConstants.STYLE_FILLCOLOR&&ba[ka]!=mxConstants.STYLE_STROKECOLOR)V=mxUtils.setStyle(V,ba[ka],ea[ba[ka]]);d.setStyle(I[L],
-V)}}finally{d.endUpdate()}}),D=mxUtils.bind(this,function(ba,qa,I){if(null!=ba)for(var L=0;L<qa.length;L++)if(null!=ba[qa[L]]&&ba[qa[L]]!=mxConstants.NONE||qa[L]!=mxConstants.STYLE_FILLCOLOR&&qa[L]!=mxConstants.STYLE_STROKECOLOR)ba[qa[L]]=I[qa[L]]}),O=mxUtils.bind(this,function(ba,qa,I,L,H){if(null!=ba){null!=I&&null!=qa.labelBackgroundColor&&(L=null!=L?L.background:null,H=null!=H?H:f,null==L&&(L=H.background),null==L&&(L=H.defaultPageBackgroundColor),qa.labelBackgroundColor=L);for(var S in ba)if(null==
-I||null!=qa[S]&&qa[S]!=mxConstants.NONE||S!=mxConstants.STYLE_FILLCOLOR&&S!=mxConstants.STYLE_STROKECOLOR)qa[S]=ba[S]}});"1"!=urlParams.sketch&&(A=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){d.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),A.setAttribute("title",mxResources.get("reset")),A.style.textOverflow=
-"ellipsis",A.style.maxWidth="90px",C.appendChild(A));var Q=mxUtils.bind(this,function(ba,qa,I,L,H){var S=document.createElement("div");S.style.position="absolute";S.style.display="inline-block";S.style.overflow="hidden";S.style.pointerEvents="none";S.style.width="100%";S.style.height="100%";H.appendChild(S);var V=new Graph(S,null,null,f.getStylesheet());V.resetViewOnRootChange=!1;V.foldingEnabled=!1;V.gridEnabled=!1;V.autoScroll=!1;V.setTooltips(!1);V.setConnectable(!1);V.setPanning(!1);V.setEnabled(!1);
-V.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(f.getCellStyle.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),ua=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),ua=I);D(aa,F,oa);O(ba,aa,wa,L,V);O(ua,aa,wa,L,V);W&&(aa=f.postProcessCellStyle(wa,aa));return aa};V.model.beginUpdate();try{var ea=V.insertVertex(V.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),ka=V.insertEdge(V.getDefaultParent(),null,"Connector",ea,ea,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");
-ka.geometry.points=[new mxPoint(32,70)];ka.geometry.offset=new mxPoint(0,8)}finally{V.model.endUpdate()}}),R=document.createElement("div");R.style.position="relative";a.appendChild(R);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var P=mxUtils.bind(this,function(ba,qa,I,L,H){var S=this.format.cachedStyleEntries[H];null==S&&(S=document.createElement("div"),S.style.display="inline-block",S.style.position="relative",S.style.width="96px",S.style.height="90px",S.style.cursor=
-"pointer",S.style.border="1px solid gray",S.style.borderRadius="8px",S.style.margin="2px",S.style.overflow="hidden",null!=L&&null!=L.background&&(S.style.backgroundColor=L.background),Q(ba,qa,I,L,S),mxEvent.addGestureListeners(S,mxUtils.bind(this,function(V){S.style.opacity=.5}),null,mxUtils.bind(this,function(V){S.style.opacity=1;f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);O(ba,f.currentVertexStyle);O(ba,f.currentEdgeStyle);O(qa,f.currentVertexStyle);
-O(I,f.currentEdgeStyle);"1"==urlParams.sketch&&(e=Editor.sketchMode);e?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";d.beginUpdate();try{var ea=F.slice(),ka;for(ka in ba)ea.push(ka);K(ea,L);var wa=new ChangePageSetup(b,null!=L?L.background:null);wa.ignoreImage=!0;d.execute(wa);d.execute(new ChangeGridColor(b,null!=
-L&&null!=L.gridColor?L.gridColor:g))}finally{d.endUpdate()}})),mxEvent.addListener(S,"mouseenter",mxUtils.bind(this,function(V){var ea=f.getCellStyle;V=f.background;var ka=f.view.gridColor;f.background=null!=L?L.background:null;f.view.gridColor=null!=L&&null!=L.gridColor?L.gridColor:g;f.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(ea.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),ua=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),ua=I);D(aa,F,oa);O(ba,aa,
-wa,L);O(ua,aa,wa,L);W&&(aa=this.postProcessCellStyle(wa,aa));return aa};f.refresh();f.getCellStyle=ea;f.background=V;f.view.gridColor=ka})),mxEvent.addListener(S,"mouseleave",mxUtils.bind(this,function(V){f.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[H]=S));R.appendChild(S)}),Z=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var T=[],U=mxUtils.bind(this,function(){0<T.length&&(T[this.format.currentStylePage].style.background=
-"#84d7ff");for(var ba=10*this.format.currentStylePage;ba<Math.min(10*(this.format.currentStylePage+1),Editor.styles.length);ba++){var qa=Editor.styles[ba];P(qa.commonStyle,qa.vertexStyle,qa.edgeStyle,qa.graph,ba)}}),fa=mxUtils.bind(this,function(ba){0<=ba&&ba<Z&&(T[this.format.currentStylePage].style.background="transparent",R.innerText="",this.format.currentStylePage=ba,U())});if(1<Z){u=document.createElement("div");u.style.whiteSpace="nowrap";u.style.position="relative";u.style.textAlign="center";
-u.style.paddingTop="4px";u.style.width="210px";a.style.paddingBottom="8px";for(C=0;C<Z;C++){var ha=document.createElement("div");ha.style.display="inline-block";ha.style.width="6px";ha.style.height="6px";ha.style.marginLeft="4px";ha.style.marginRight="3px";ha.style.borderRadius="3px";ha.style.cursor="pointer";ha.style.background="transparent";ha.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(ba,qa){mxEvent.addListener(ha,"click",mxUtils.bind(this,function(){fa(ba)}))})(C,ha);u.appendChild(ha);
-T.push(ha)}a.appendChild(u);U();15>Z&&(m=function(ba){mxEvent.addListener(ba,"mouseenter",function(){ba.style.opacity="1"});mxEvent.addListener(ba,"mouseleave",function(){ba.style.opacity="0.5"})},A=document.createElement("div"),A.style.position="absolute",A.style.left="0px",A.style.top="0px",A.style.bottom="0px",A.style.width="24px",A.style.height="24px",A.style.margin="0px",A.style.cursor="pointer",A.style.opacity="0.5",A.style.backgroundRepeat="no-repeat",A.style.backgroundPosition="center center",
-A.style.backgroundSize="24px 24px",A.style.backgroundImage="url("+Editor.previousImage+")",Editor.isDarkMode()&&(A.style.filter="invert(100%)"),C=A.cloneNode(!1),C.style.backgroundImage="url("+Editor.nextImage+")",C.style.left="",C.style.right="2px",u.appendChild(A),u.appendChild(C),mxEvent.addListener(A,"click",mxUtils.bind(this,function(){fa(mxUtils.mod(this.format.currentStylePage-1,Z))})),mxEvent.addListener(C,"click",mxUtils.bind(this,function(){fa(mxUtils.mod(this.format.currentStylePage+1,
-Z))})),m(A),m(C))}else U();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,f){BaseFormatPanel.call(this,a,b,f);this.init()};mxUtils.extend(DiagramFormatPanel,BaseFormatPanel);DiagramFormatPanel.showPageView=!0;DiagramFormatPanel.prototype.showBackgroundImageOption=!0;
+(B=B.cloneNode(!1),C=C.cloneNode(!1),x=x.cloneNode(!1),x.appendChild(B),x.appendChild(C),r.appendChild(x),B.appendChild(this.createOption(mxResources.get("curved"),function(){return n},function(ba){(n=ba)?f.currentEdgeStyle.curved="1":delete f.currentEdgeStyle.curved;f.updateCellStyles({curved:ba?"1":null},f.getVerticesAndEdges(!1,!0))},null,function(ba){ba.style.width="auto"})));u.appendChild(m);a.appendChild(u);var G=["fillColor","strokeColor","fontColor","gradientColor"],J=mxUtils.bind(this,function(ba,
+qa){var O=f.getVerticesAndEdges();d.beginUpdate();try{for(var S=0;S<O.length;S++){var F=f.getCellStyle(O[S]);null!=F.labelBackgroundColor&&f.updateCellStyles({labelBackgroundColor:null!=qa?qa.background:null},[O[S]]);for(var L=d.isEdge(O[S]),T=d.getStyle(O[S]),ca=L?f.currentEdgeStyle:f.currentVertexStyle,fa=0;fa<ba.length;fa++)if(null!=F[ba[fa]]&&F[ba[fa]]!=mxConstants.NONE||ba[fa]!=mxConstants.STYLE_FILLCOLOR&&ba[fa]!=mxConstants.STYLE_STROKECOLOR)T=mxUtils.setStyle(T,ba[fa],ca[ba[fa]]);d.setStyle(O[S],
+T)}}finally{d.endUpdate()}}),D=mxUtils.bind(this,function(ba,qa,O){if(null!=ba)for(var S=0;S<qa.length;S++)if(null!=ba[qa[S]]&&ba[qa[S]]!=mxConstants.NONE||qa[S]!=mxConstants.STYLE_FILLCOLOR&&qa[S]!=mxConstants.STYLE_STROKECOLOR)ba[qa[S]]=O[qa[S]]}),N=mxUtils.bind(this,function(ba,qa,O,S,F){if(null!=ba){null!=O&&null!=qa.labelBackgroundColor&&(S=null!=S?S.background:null,F=null!=F?F:f,null==S&&(S=F.background),null==S&&(S=F.defaultPageBackgroundColor),qa.labelBackgroundColor=S);for(var L in ba)if(null==
+O||null!=qa[L]&&qa[L]!=mxConstants.NONE||L!=mxConstants.STYLE_FILLCOLOR&&L!=mxConstants.STYLE_STROKECOLOR)qa[L]=ba[L]}});"1"!=urlParams.sketch&&(B=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(ba){ba=f.getVerticesAndEdges(!0,!0);if(0<ba.length){d.beginUpdate();try{f.updateCellStyles({sketch:null,rounded:null},ba),f.updateCellStyles({curved:null},f.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),B.setAttribute("title",mxResources.get("reset")),B.style.textOverflow=
+"ellipsis",B.style.maxWidth="90px",C.appendChild(B));var Q=mxUtils.bind(this,function(ba,qa,O,S,F){var L=document.createElement("div");L.style.position="absolute";L.style.display="inline-block";L.style.overflow="hidden";L.style.pointerEvents="none";L.style.width="100%";L.style.height="100%";F.appendChild(L);var T=new Graph(L,null,null,f.getStylesheet());T.resetViewOnRootChange=!1;T.foldingEnabled=!1;T.gridEnabled=!1;T.autoScroll=!1;T.setTooltips(!1);T.setConnectable(!1);T.setPanning(!1);T.setEnabled(!1);
+T.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(f.getCellStyle.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),sa=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),sa=O);D(aa,G,oa);N(ba,aa,wa,S,T);N(sa,aa,wa,S,T);W&&(aa=f.postProcessCellStyle(wa,aa));return aa};T.model.beginUpdate();try{var ca=T.insertVertex(T.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),fa=T.insertEdge(T.getDefaultParent(),null,"Connector",ca,ca,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");
+fa.geometry.points=[new mxPoint(32,70)];fa.geometry.offset=new mxPoint(0,8)}finally{T.model.endUpdate()}}),R=document.createElement("div");R.style.position="relative";a.appendChild(R);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var P=mxUtils.bind(this,function(ba,qa,O,S,F){var L=this.format.cachedStyleEntries[F];null==L&&(L=document.createElement("div"),L.style.display="inline-block",L.style.position="relative",L.style.width="96px",L.style.height="90px",L.style.cursor=
+"pointer",L.style.border="1px solid gray",L.style.borderRadius="8px",L.style.margin="2px",L.style.overflow="hidden",null!=S&&null!=S.background&&(L.style.backgroundColor=S.background),Q(ba,qa,O,S,L),mxEvent.addGestureListeners(L,mxUtils.bind(this,function(T){L.style.opacity=.5}),null,mxUtils.bind(this,function(T){L.style.opacity=1;f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);N(ba,f.currentVertexStyle);N(ba,f.currentEdgeStyle);N(qa,f.currentVertexStyle);
+N(O,f.currentEdgeStyle);"1"==urlParams.sketch&&(e=Editor.sketchMode);e?(f.currentEdgeStyle.sketch="1",f.currentVertexStyle.sketch="1"):(f.currentEdgeStyle.sketch="0",f.currentVertexStyle.sketch="0");f.currentVertexStyle.rounded=k?"1":"0";f.currentEdgeStyle.rounded="1";f.currentEdgeStyle.curved=n?"1":"0";d.beginUpdate();try{var ca=G.slice(),fa;for(fa in ba)ca.push(fa);J(ca,S);var wa=new ChangePageSetup(b,null!=S?S.background:null);wa.ignoreImage=!0;d.execute(wa);d.execute(new ChangeGridColor(b,null!=
+S&&null!=S.gridColor?S.gridColor:g))}finally{d.endUpdate()}})),mxEvent.addListener(L,"mouseenter",mxUtils.bind(this,function(T){var ca=f.getCellStyle;T=f.background;var fa=f.view.gridColor;f.background=null!=S?S.background:null;f.view.gridColor=null!=S&&null!=S.gridColor?S.gridColor:g;f.getCellStyle=function(wa,W){W=null!=W?W:!0;var aa=mxUtils.clone(ca.apply(this,arguments)),oa=f.stylesheet.getDefaultVertexStyle(),sa=qa;d.isEdge(wa)&&(oa=f.stylesheet.getDefaultEdgeStyle(),sa=O);D(aa,G,oa);N(ba,aa,
+wa,S);N(sa,aa,wa,S);W&&(aa=this.postProcessCellStyle(wa,aa));return aa};f.refresh();f.getCellStyle=ca;f.background=T;f.view.gridColor=fa})),mxEvent.addListener(L,"mouseleave",mxUtils.bind(this,function(T){f.refresh()})),mxClient.IS_IE||mxClient.IS_IE11||(this.format.cachedStyleEntries[F]=L));R.appendChild(L)}),Z=Math.ceil(Editor.styles.length/10);this.format.currentStylePage=null!=this.format.currentStylePage?this.format.currentStylePage:0;var U=[],V=mxUtils.bind(this,function(){0<U.length&&(U[this.format.currentStylePage].style.background=
+"#84d7ff");for(var ba=10*this.format.currentStylePage;ba<Math.min(10*(this.format.currentStylePage+1),Editor.styles.length);ba++){var qa=Editor.styles[ba];P(qa.commonStyle,qa.vertexStyle,qa.edgeStyle,qa.graph,ba)}}),ia=mxUtils.bind(this,function(ba){0<=ba&&ba<Z&&(U[this.format.currentStylePage].style.background="transparent",R.innerText="",this.format.currentStylePage=ba,V())});if(1<Z){u=document.createElement("div");u.style.whiteSpace="nowrap";u.style.position="relative";u.style.textAlign="center";
+u.style.paddingTop="4px";u.style.width="210px";a.style.paddingBottom="8px";for(C=0;C<Z;C++){var ha=document.createElement("div");ha.style.display="inline-block";ha.style.width="6px";ha.style.height="6px";ha.style.marginLeft="4px";ha.style.marginRight="3px";ha.style.borderRadius="3px";ha.style.cursor="pointer";ha.style.background="transparent";ha.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(ba,qa){mxEvent.addListener(ha,"click",mxUtils.bind(this,function(){ia(ba)}))})(C,ha);u.appendChild(ha);
+U.push(ha)}a.appendChild(u);V();15>Z&&(m=function(ba){mxEvent.addListener(ba,"mouseenter",function(){ba.style.opacity="1"});mxEvent.addListener(ba,"mouseleave",function(){ba.style.opacity="0.5"})},B=document.createElement("div"),B.style.position="absolute",B.style.left="0px",B.style.top="0px",B.style.bottom="0px",B.style.width="24px",B.style.height="24px",B.style.margin="0px",B.style.cursor="pointer",B.style.opacity="0.5",B.style.backgroundRepeat="no-repeat",B.style.backgroundPosition="center center",
+B.style.backgroundSize="24px 24px",B.style.backgroundImage="url("+Editor.previousImage+")",Editor.isDarkMode()&&(B.style.filter="invert(100%)"),C=B.cloneNode(!1),C.style.backgroundImage="url("+Editor.nextImage+")",C.style.left="",C.style.right="2px",u.appendChild(B),u.appendChild(C),mxEvent.addListener(B,"click",mxUtils.bind(this,function(){ia(mxUtils.mod(this.format.currentStylePage-1,Z))})),mxEvent.addListener(C,"click",mxUtils.bind(this,function(){ia(mxUtils.mod(this.format.currentStylePage+1,
+Z))})),m(B),m(C))}else V();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,f){BaseFormatPanel.call(this,a,b,f);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,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("view")));this.addGridOption(a);DiagramFormatPanel.showPageView&&a.appendChild(this.createOption(mxResources.get("pageView"),function(){return f.pageVisible},function(e){b.actions.get("pageView").funct()},{install:function(e){this.listener=function(){e(f.pageVisible)};b.addListener("pageViewChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}}));
if(f.isEnabled()){var d=this.createColorOption(mxResources.get("background"),function(){return f.background},function(e){var k=new ChangePageSetup(b,e);k.ignoreImage=null!=e&&e!=mxConstants.NONE;f.model.execute(k)},"#ffffff",{install:function(e){this.listener=function(){e(f.background)};b.addListener("backgroundColorChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});if(this.showBackgroundImageOption){var g=d.getElementsByTagName("span")[0];g.style.display="inline-block";
@@ -3516,19 +3516,19 @@ DiagramFormatPanel.prototype.addDocumentProperties=function(a){a.appendChild(thi
DiagramFormatPanel.prototype.addPaperSize=function(a){var b=this.editorUi,f=b.editor.graph;a.appendChild(this.createTitle(mxResources.get("paperSize")));var d=PageSetupDialog.addPageFormatPanel(a,"formatpanel",f.pageFormat,function(e){if(null==f.pageFormat||f.pageFormat.width!=e.width||f.pageFormat.height!=e.height)e=new ChangePageSetup(b,null,null,e),e.ignoreColor=!0,e.ignoreImage=!0,f.model.execute(e)});this.addKeyHandler(d.widthInput,function(){d.set(f.pageFormat)});this.addKeyHandler(d.heightInput,
function(){d.set(f.pageFormat)});var g=function(){d.set(f.pageFormat)};b.addListener("pageFormatChanged",g);this.listeners.push({destroy:function(){b.removeListener(g)}});f.getModel().addListener(mxEvent.CHANGE,g);this.listeners.push({destroy:function(){f.getModel().removeListener(g)}});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(c,h,q){mxShape.call(this);this.line=c;this.stroke=h;this.strokewidth=null!=q?q:1;this.updateBoundsFromLine()}function b(){mxSwimlane.call(this)}function f(){mxSwimlane.call(this)}function d(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function e(){mxActor.call(this)}function k(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function u(){mxCylinder.call(this)}function m(){mxCylinder.call(this)}function r(){mxShape.call(this)}function x(){mxShape.call(this)}
-function A(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function F(){mxCylinder.call(this)}function K(){mxCylinder.call(this)}function D(){mxActor.call(this)}function O(){mxActor.call(this)}function Q(){mxActor.call(this)}function R(){mxActor.call(this)}function P(){mxActor.call(this)}function Z(){mxActor.call(this)}function T(){mxActor.call(this)}function U(c,h){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
-this.defaultVariation=h;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,U.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,U.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,U.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,U.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,U.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,U.prototype.arcTo)}function fa(){mxRectangleShape.call(this)}function ha(){mxRectangleShape.call(this)}function ba(){mxActor.call(this)}function qa(){mxActor.call(this)}function I(){mxActor.call(this)}function L(){mxRectangleShape.call(this)}function H(){mxRectangleShape.call(this)}function S(){mxCylinder.call(this)}function V(){mxShape.call(this)}function ea(){mxShape.call(this)}function ka(){mxEllipse.call(this)}function wa(){mxShape.call(this)}
-function W(){mxShape.call(this)}function aa(){mxRectangleShape.call(this)}function oa(){mxShape.call(this)}function ua(){mxShape.call(this)}function Ja(){mxShape.call(this)}function Ga(){mxShape.call(this)}function va(){mxShape.call(this)}function za(){mxCylinder.call(this)}function ra(){mxCylinder.call(this)}function Ha(){mxRectangleShape.call(this)}function Ta(){mxDoubleEllipse.call(this)}function db(){mxDoubleEllipse.call(this)}function Ua(){mxArrowConnector.call(this);this.spacing=0}function Va(){mxArrowConnector.call(this);
-this.spacing=0}function Ya(){mxActor.call(this)}function bb(){mxRectangleShape.call(this)}function cb(){mxActor.call(this)}function jb(){mxActor.call(this)}function $a(){mxActor.call(this)}function ca(){mxActor.call(this)}function t(){mxActor.call(this)}function z(){mxActor.call(this)}function B(){mxActor.call(this)}function E(){mxActor.call(this)}function G(){mxActor.call(this)}function M(){mxActor.call(this)}function X(){mxEllipse.call(this)}function ia(){mxEllipse.call(this)}function da(){mxEllipse.call(this)}
-function ja(){mxRhombus.call(this)}function sa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Ea(){mxActor.call(this)}function Fa(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
-function Pa(c,h,q,l,p,v,w,J,y,Y){w+=y;var N=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){c.ellipse(N.x-p-w,N.y-v-w,2*w,2*w);Y?c.fillAndStroke():c.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==c?c=q:c.add(q))}this.bounds=null!=c?c:new mxRectangle};a.prototype.paintVertexShape=function(c,
+function B(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1}function C(){mxActor.call(this)}function G(){mxCylinder.call(this)}function J(){mxCylinder.call(this)}function D(){mxActor.call(this)}function N(){mxActor.call(this)}function Q(){mxActor.call(this)}function R(){mxActor.call(this)}function P(){mxActor.call(this)}function Z(){mxActor.call(this)}function U(){mxActor.call(this)}function V(c,h){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=h;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,V.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,V.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,V.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,V.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,V.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,V.prototype.arcTo)}function ia(){mxRectangleShape.call(this)}function ha(){mxRectangleShape.call(this)}function ba(){mxActor.call(this)}function qa(){mxActor.call(this)}function O(){mxActor.call(this)}function S(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function L(){mxCylinder.call(this)}function T(){mxShape.call(this)}function ca(){mxShape.call(this)}function fa(){mxEllipse.call(this)}function wa(){mxShape.call(this)}
+function W(){mxShape.call(this)}function aa(){mxRectangleShape.call(this)}function oa(){mxShape.call(this)}function sa(){mxShape.call(this)}function Ka(){mxShape.call(this)}function Ha(){mxShape.call(this)}function ua(){mxShape.call(this)}function Ca(){mxCylinder.call(this)}function ra(){mxCylinder.call(this)}function Da(){mxRectangleShape.call(this)}function Ua(){mxDoubleEllipse.call(this)}function db(){mxDoubleEllipse.call(this)}function Ta(){mxArrowConnector.call(this);this.spacing=0}function $a(){mxArrowConnector.call(this);
+this.spacing=0}function Xa(){mxActor.call(this)}function Va(){mxRectangleShape.call(this)}function Ya(){mxActor.call(this)}function jb(){mxActor.call(this)}function bb(){mxActor.call(this)}function da(){mxActor.call(this)}function t(){mxActor.call(this)}function z(){mxActor.call(this)}function A(){mxActor.call(this)}function E(){mxActor.call(this)}function H(){mxActor.call(this)}function K(){mxActor.call(this)}function X(){mxEllipse.call(this)}function ja(){mxEllipse.call(this)}function ea(){mxEllipse.call(this)}
+function ka(){mxRhombus.call(this)}function ta(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxActor.call(this)}function Ia(){mxActor.call(this)}function Fa(){mxActor.call(this)}function Ga(c,h,q,l){mxShape.call(this);this.bounds=c;this.fill=h;this.stroke=q;this.strokewidth=null!=l?l:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Oa(){mxConnector.call(this)}
+function Pa(c,h,q,l,p,v,w,I,y,Y){w+=y;var M=l.clone();l.x-=p*(2*w+y);l.y-=v*(2*w+y);p*=w+y;v*=w+y;return function(){c.ellipse(M.x-p-w,M.y-v-w,2*w,2*w);Y?c.fillAndStroke():c.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var h=0;h<this.line.length;h++){var q=this.line[h];null!=q&&(q=new mxRectangle(q.x,q.y,this.strokewidth,this.strokewidth),null==c?c=q:c.add(q))}this.bounds=null!=c?c:new mxRectangle};a.prototype.paintVertexShape=function(c,
h,q,l,p){this.paintTableLine(c,this.line,0,0)};a.prototype.paintTableLine=function(c,h,q,l){if(null!=h){var p=null;c.begin();for(var v=0;v<h.length;v++){var w=h[v];null!=w&&(null==p?c.moveTo(w.x+q,w.y+l):null!=p&&c.lineTo(w.x+q,w.y+l));p=w}c.end();c.stroke()}};a.prototype.intersectsRectangle=function(c){var h=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var q=null,l=0;l<this.line.length&&!h;l++){var p=this.line[l];null!=p&&null!=q&&(h=mxUtils.rectangleIntersectsSegment(c,
-q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(c,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),J=this.getTitleSize();0==J||this.outline?Da.prototype.paintVertexShape.apply(this,
-arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-h,-q));v||this.outline||!(w&&J<p||!w&&J<l)||this.paintForeground(c,h,q,l,p)};b.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var J=v;v=w;w=J}c.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
+q,p));q=p}return h};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(c,h,q,l,p){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,w=this.isHorizontal(),I=this.getTitleSize();0==I||this.outline?Ea.prototype.paintVertexShape.apply(this,
+arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-h,-q));v||this.outline||!(w&&I<p||!w&&I<l)||this.paintForeground(c,h,q,l,p)};b.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.state){var v=this.flipH,w=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var I=v;v=w;w=I}c.rotate(-this.getShapeRotation(),v,w,h+l/2,q+p/2);s=this.scale;h=this.bounds.x/s;q=this.bounds.y/s;l=this.bounds.width/s;p=this.bounds.height/
s;this.paintTableForeground(c,h,q,l,p)}};b.prototype.paintTableForeground=function(c,h,q,l,p){l=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(p=0;p<l.length;p++)a.prototype.paintTableLine(c,l[p],h,q)};b.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
-b);mxUtils.extend(f,b);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.darkOpacity=0;d.prototype.darkOpacity2=0;d.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),J=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"darkOpacity2",this.darkOpacity2))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(v,p);c.lineTo(0,p-v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(l-v,0),c.lineTo(l,v),c.lineTo(v,v),c.close(),c.fill()),0!=J&&(c.setFillAlpha(Math.abs(J)),c.setFillColor(0>J?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(v,
+b);mxUtils.extend(f,b);f.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",f);mxUtils.extend(d,mxCylinder);d.prototype.size=20;d.prototype.darkOpacity=0;d.prototype.darkOpacity2=0;d.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),I=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"darkOpacity2",this.darkOpacity2))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(v,p);c.lineTo(0,p-v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(l-v,0),c.lineTo(l,v),c.lineTo(v,v),c.close(),c.fill()),0!=I&&(c.setFillAlpha(Math.abs(I)),c.setFillColor(0>I?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(v,
v),c.lineTo(v,p),c.lineTo(0,p-v),c.close(),c.fill()),c.begin(),c.moveTo(v,p),c.lineTo(v,v),c.lineTo(0,0),c.moveTo(v,v),c.lineTo(l,v),c.end(),c.stroke())};d.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",d);var Na=Math.tan(mxUtils.toRadians(30)),Sa=(.5-Na)/2;mxCellRenderer.registerShape("isoRectangle",e);mxUtils.extend(g,
mxCylinder);g.prototype.size=6;g.prototype.paintVertexShape=function(c,h,q,l,p){c.setFillColor(this.stroke);var v=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(h+.5*(l-v),q+.5*(p-v),v,v);c.fill();c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};mxCellRenderer.registerShape("waypoint",g);mxUtils.extend(e,mxActor);e.prototype.size=20;e.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/Na);c.translate((l-h)/2,(p-h)/2+h/4);c.moveTo(0,
.25*h);c.lineTo(.5*h,h*Sa);c.lineTo(h,.25*h);c.lineTo(.5*h,(.5-Sa)*h);c.lineTo(0,.25*h);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",e);mxUtils.extend(k,mxCylinder);k.prototype.size=20;k.prototype.redrawPath=function(c,h,q,l,p,v){h=Math.min(l,p/(.5+Na));v?(c.moveTo(0,.25*h),c.lineTo(.5*h,(.5-Sa)*h),c.lineTo(h,.25*h),c.moveTo(.5*h,(.5-Sa)*h),c.lineTo(.5*h,(1-Sa)*h)):(c.translate((l-h)/2,(p-h)/2),c.moveTo(0,.25*h),c.lineTo(.5*h,h*Sa),c.lineTo(h,.25*h),c.lineTo(h,.75*h),c.lineTo(.5*
@@ -3537,198 +3537,198 @@ h,(1-Sa)*h),c.lineTo(0,.75*h),c.close());c.end()};mxCellRenderer.registerShape("
this.size))))),w=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(h,q);c.begin();c.moveTo(0,0);c.lineTo(l-v,0);c.lineTo(l,v);c.lineTo(l,p);c.lineTo(0,p);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=w&&(c.setFillAlpha(Math.abs(w)),c.setFillColor(0>w?"#FFFFFF":"#000000"),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),c.close(),c.fill()),c.begin(),c.moveTo(l-v,0),c.lineTo(l-v,v),c.lineTo(l,v),
c.end(),c.stroke())};mxCellRenderer.registerShape("note",u);mxUtils.extend(m,u);mxCellRenderer.registerShape("note2",m);m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,0)}return null};mxUtils.extend(r,mxShape);r.prototype.isoAngle=15;r.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
"isoAngle",this.isoAngle))))*Math.PI/200;v=Math.min(l*Math.tan(v),.5*p);c.translate(h,q);c.begin();c.moveTo(.5*l,0);c.lineTo(l,v);c.lineTo(l,p-v);c.lineTo(.5*l,p);c.lineTo(0,p-v);c.lineTo(0,v);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,v);c.lineTo(.5*l,2*v);c.lineTo(l,v);c.moveTo(.5*l,2*v);c.lineTo(.5*l,p);c.stroke()};mxCellRenderer.registerShape("isoCube2",r);mxUtils.extend(x,mxShape);x.prototype.size=15;x.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*
-p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(A,mxCylinder);A.prototype.size=
-15;A.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),w?(c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v)):(c.moveTo(0,0),c.arcTo(.5*l,v,0,0,0,.5*l,v),c.arcTo(.5*l,v,0,0,0,l,0)),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),
-w&&(c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke()))};mxCellRenderer.registerShape("cylinder3",A);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l/2,.5*p,l,0);c.quadTo(.5*l,p/2,l,p);c.quadTo(l/2,.5*p,0,p);c.quadTo(.5*l,p/2,0,0);c.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(F,mxCylinder);F.prototype.tabWidth=60;F.prototype.tabHeight=20;F.prototype.tabPosition="right";F.prototype.arcSize=.1;
-F.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),J=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));J||(y*=Math.min(l,p));
+p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke())};mxCellRenderer.registerShape("cylinder2",x);mxUtils.extend(B,mxCylinder);B.prototype.size=
+15;B.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"lid",!0);c.translate(h,q);0==v?(c.rect(0,0,l,p),c.fillAndStroke()):(c.begin(),w?(c.moveTo(0,v),c.arcTo(.5*l,v,0,0,1,.5*l,0),c.arcTo(.5*l,v,0,0,1,l,v)):(c.moveTo(0,0),c.arcTo(.5*l,v,0,0,0,.5*l,v),c.arcTo(.5*l,v,0,0,0,l,0)),c.lineTo(l,p-v),c.arcTo(.5*l,v,0,0,1,.5*l,p),c.arcTo(.5*l,v,0,0,1,0,p-v),c.close(),c.fillAndStroke(),c.setShadow(!1),
+w&&(c.begin(),c.moveTo(l,v),c.arcTo(.5*l,v,0,0,1,.5*l,2*v),c.arcTo(.5*l,v,0,0,1,0,v),c.stroke()))};mxCellRenderer.registerShape("cylinder3",B);mxUtils.extend(C,mxActor);C.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l/2,.5*p,l,0);c.quadTo(.5*l,p/2,l,p);c.quadTo(l/2,.5*p,0,p);c.quadTo(.5*l,p/2,0,0);c.end()};mxCellRenderer.registerShape("switch",C);mxUtils.extend(G,mxCylinder);G.prototype.tabWidth=60;G.prototype.tabHeight=20;G.prototype.tabPosition="right";G.prototype.arcSize=.1;
+G.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var v=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),w=mxUtils.getValue(this.style,"rounded",!1),I=mxUtils.getValue(this.style,"absoluteArcSize",!1),y=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));I||(y*=Math.min(l,p));
y=Math.min(y,.5*l,.5*(p-q));h=Math.max(h,y);h=Math.min(l-y,h);w||(y=0);c.begin();"left"==v?(c.moveTo(Math.max(y,0),q),c.lineTo(Math.max(y,0),0),c.lineTo(h,0),c.lineTo(h,q)):(c.moveTo(l-h,q),c.lineTo(l-h,0),c.lineTo(l-Math.max(y,0),0),c.lineTo(l-Math.max(y,0),q));w?(c.moveTo(0,y+q),c.arcTo(y,y,0,0,1,y,q),c.lineTo(l-y,q),c.arcTo(y,y,0,0,1,l,y+q),c.lineTo(l,p-y),c.arcTo(y,y,0,0,1,l-y,p),c.lineTo(y,p),c.arcTo(y,y,0,0,1,0,p-y)):(c.moveTo(0,q),c.lineTo(l,q),c.lineTo(l,p),c.lineTo(0,p));c.close();c.fillAndStroke();
-c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(l-30,q+20),c.lineTo(l-20,q+10),c.lineTo(l-10,q+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",F);F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
+c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(l-30,q+20),c.lineTo(l-20,q+10),c.lineTo(l-10,q+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",G);G.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-
-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};mxUtils.extend(K,mxCylinder);K.prototype.arcSize=.1;K.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);c.begin();c.moveTo(v,
+h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};mxUtils.extend(J,mxCylinder);J.prototype.arcSize=.1;J.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);var v=mxUtils.getValue(this.style,"rounded",!1),w=mxUtils.getValue(this.style,"absoluteArcSize",!1);h=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));q=mxUtils.getValue(this.style,"umlStateConnection",null);w||(h*=Math.min(l,p));h=Math.min(h,.5*l,.5*p);v||(h=0);v=0;null!=q&&(v=10);c.begin();c.moveTo(v,
h);c.arcTo(h,h,0,0,1,v+h,0);c.lineTo(l-h,0);c.arcTo(h,h,0,0,1,l,h);c.lineTo(l,p-h);c.arcTo(h,h,0,0,1,l-h,p);c.lineTo(v+h,p);c.arcTo(h,h,0,0,1,v,p-h);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(l-40,p-20,10,10,3,3),c.stroke(),c.roundrect(l-20,p-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(l-30,p-15),c.lineTo(l-20,p-15),c.stroke());"connPointRefEntry"==q?(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke()):"connPointRefExit"==
-q&&(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*p-5),c.lineTo(15,.5*p+5),c.moveTo(15,.5*p-5),c.lineTo(5,.5*p+5),c.stroke())};K.prototype.getLabelMargins=function(c){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",K);mxUtils.extend(D,mxActor);D.prototype.size=30;D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=
-function(c,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("card",D);mxUtils.extend(O,mxActor);O.prototype.size=.4;O.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));c.moveTo(0,h/2);c.quadTo(l/4,1.4*h,l/2,h/2);c.quadTo(3*l/4,h*(1-1.4),l,h/2);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};O.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=c.width,l=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
-l,new mxRectangle(c.x,c.y+h,q,l-2*h);h*=q;return new mxRectangle(c.x+h,c.y,q-2*h,l)}return c};mxCellRenderer.registerShape("tape",O);mxUtils.extend(Q,mxActor);Q.prototype.size=.3;Q.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};Q.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
+q&&(c.ellipse(0,.5*p-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*p-5),c.lineTo(15,.5*p+5),c.moveTo(15,.5*p-5),c.lineTo(5,.5*p+5),c.stroke())};J.prototype.getLabelMargins=function(c){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",J);mxUtils.extend(D,mxActor);D.prototype.size=30;D.prototype.isRoundable=function(){return!0};D.prototype.redrawPath=
+function(c,h,q,l,p){h=Math.max(0,Math.min(l,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("card",D);mxUtils.extend(N,mxActor);N.prototype.size=.4;N.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));c.moveTo(0,h/2);c.quadTo(l/4,1.4*h,l/2,h/2);c.quadTo(3*l/4,h*(1-1.4),l,h/2);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};N.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",this.size),q=c.width,l=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return h*=
+l,new mxRectangle(c.x,c.y+h,q,l-2*h);h*=q;return new mxRectangle(c.x+h,c.y,q-2*h,l)}return c};mxCellRenderer.registerShape("tape",N);mxUtils.extend(Q,mxActor);Q.prototype.size=.3;Q.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};Q.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
0);c.lineTo(l,0);c.lineTo(l,p-h/2);c.quadTo(3*l/4,p-1.4*h,l/2,p-h/2);c.quadTo(l/4,p-h*(1-1.4),0,p-h/2);c.lineTo(0,h/2);c.close();c.end()};mxCellRenderer.registerShape("document",Q);var eb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,h,q,l){var p=mxUtils.getValue(this.style,"size");return null!=p?l*Math.max(0,Math.min(1,p)):eb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=2*mxUtils.getValue(this.style,
-"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*h),0,0)}return null};A.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};F.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
+"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*h),0,0)}return null};B.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(h/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*h*this.scale),0,Math.max(0,.3*h*this.scale))}return null};G.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var h=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var q=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;h=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var l=mxUtils.getValue(this.style,"rounded",!1),p=mxUtils.getValue(this.style,"absoluteArcSize",!1),v=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));p||(v*=Math.min(c.width,c.height));v=Math.min(v,.5*c.width,.5*(c.height-h));l||(v=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
-this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};K.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
+this.tabPosition)?new mxRectangle(v,0,Math.min(c.width,c.width-q),Math.min(c.height,c.height-h)):new mxRectangle(Math.min(c.width,c.width-q),0,v,Math.min(c.height,c.height-h))}return new mxRectangle(0,Math.min(c.height,h),0,0)}return null};J.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};m.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
"boundedLbl",!1)){var h=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,h*this.scale),0,Math.max(0,h*this.scale))}return null};mxUtils.extend(R,mxActor);R.prototype.size=.2;R.prototype.fixedSize=20;R.prototype.isRoundable=function(){return!0};R.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l,0),new mxPoint(l-h,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("parallelogram",R);mxUtils.extend(P,mxActor);P.prototype.size=.2;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("trapezoid",P);mxUtils.extend(Z,mxActor);Z.prototype.size=.5;Z.prototype.redrawPath=function(c,h,q,l,p){c.setFillColor(null);
-h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",Z);mxUtils.extend(T,mxActor);T.prototype.redrawPath=function(c,h,q,l,p){c.setStrokeWidth(1);c.setFillColor(this.stroke);
-h=l/5;c.rect(0,0,h,p);c.fillAndStroke();c.rect(2*h,0,h,p);c.fillAndStroke();c.rect(4*h,0,h,p);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",T);U.prototype.moveTo=function(c,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;this.firstX=c;this.firstY=h};U.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)};
-U.prototype.quadTo=function(c,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};U.prototype.curveTo=function(c,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};U.prototype.arcTo=function(c,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};U.prototype.lineTo=function(c,h){if(null!=this.lastX&&null!=this.lastY){var q=function(N){return"number"===typeof N?N?0>N?-1:1:N===N?0:NaN:NaN},l=Math.abs(c-
-this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;return}var w=Math.round(v/10),J=this.defaultVariation;5>w&&(w=5,J/=3);var y=q(c-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*J;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,c,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=
-h};U.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 Za=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){Za.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var pb=mxShape.prototype.afterPaint;
-mxShape.prototype.afterPaint=function(c){pb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new U(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,h,q,l,p){if(null==c.handJiggle||c.handJiggle.constructor!=U)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(h,0),new mxPoint(h,p/2),new mxPoint(0,p/2),new mxPoint(h,p/2),new mxPoint(h,p),new mxPoint(l,p)],this.isRounded,q,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",Z);mxUtils.extend(U,mxActor);U.prototype.redrawPath=function(c,h,q,l,p){c.setStrokeWidth(1);c.setFillColor(this.stroke);
+h=l/5;c.rect(0,0,h,p);c.fillAndStroke();c.rect(2*h,0,h,p);c.fillAndStroke();c.rect(4*h,0,h,p);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",U);V.prototype.moveTo=function(c,h){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;this.firstX=c;this.firstY=h};V.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)};
+V.prototype.quadTo=function(c,h,q,l){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=q;this.lastY=l};V.prototype.curveTo=function(c,h,q,l,p,v){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=p;this.lastY=v};V.prototype.arcTo=function(c,h,q,l,p,v,w){this.originalArcTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=w};V.prototype.lineTo=function(c,h){if(null!=this.lastX&&null!=this.lastY){var q=function(M){return"number"===typeof M?M?0>M?-1:1:M===M?0:NaN:NaN},l=Math.abs(c-
+this.lastX),p=Math.abs(h-this.lastY),v=Math.sqrt(l*l+p*p);if(2>v){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=h;return}var w=Math.round(v/10),I=this.defaultVariation;5>w&&(w=5,I/=3);var y=q(c-this.lastX)*l/w;q=q(h-this.lastY)*p/w;l/=v;p/=v;for(v=0;v<w;v++){var Y=(Math.random()-.5)*I;this.originalLineTo.call(this.canvas,y*v+this.lastX-Y*p,q*v+this.lastY-Y*l)}this.originalLineTo.call(this.canvas,c,h)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=
+h};V.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 ab=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){ab.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var pb=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(c){pb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new V(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var vb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,h,q,l,p){if(null==c.handJiggle||c.handJiggle.constructor!=V)vb.apply(this,arguments);else{var v=!0;null!=this.style&&(v="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(v||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)v||null!=this.fill&&this.fill!=mxConstants.NONE||(c.pointerEvents=!1),c.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?v=Math.min(l/2,Math.min(p/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,v=Math.min(l*
-v,p*v)),c.moveTo(h+v,q),c.lineTo(h+l-v,q),c.quadTo(h+l,q,h+l,q+v),c.lineTo(h+l,q+p-v),c.quadTo(h+l,q+p,h+l-v,q+p),c.lineTo(h+v,q+p),c.quadTo(h,q+p,h,q+p-v),c.lineTo(h,q+v),c.quadTo(h,q,h+v,q)):(c.moveTo(h,q),c.lineTo(h+l,q),c.lineTo(h+l,q+p),c.lineTo(h,q+p),c.lineTo(h,q)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
+v,p*v)),c.moveTo(h+v,q),c.lineTo(h+l-v,q),c.quadTo(h+l,q,h+l,q+v),c.lineTo(h+l,q+p-v),c.quadTo(h+l,q+p,h+l-v,q+p),c.lineTo(h+v,q+p),c.quadTo(h,q+p,h,q+p-v),c.lineTo(h,q+v),c.quadTo(h,q,h+v,q)):(c.moveTo(h,q),c.lineTo(h+l,q),c.lineTo(h+l,q+p),c.lineTo(h,q+p),c.lineTo(h,q)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ia,mxRectangleShape);ia.prototype.size=.1;ia.prototype.fixedSize=!1;ia.prototype.isHtmlAllowed=function(){return!1};ia.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var h=c.width,q=c.height;c=new mxRectangle(c.x,c.y,h,q);var l=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var p=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;l=Math.max(l,Math.min(h*p,q*p))}c.x+=Math.round(l);c.width-=Math.round(2*l);return c}return c};
-fa.prototype.paintForeground=function(c,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.moveTo(h+l-w,q);c.lineTo(h+l-w,q+p);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
-arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(c,h,q,l,p){c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};ha.prototype.paintForeground=function(c,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
+ia.prototype.paintForeground=function(c,h,q,l,p){var v=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),w=parseFloat(mxUtils.getValue(this.style,"size",this.size));w=v?Math.max(0,Math.min(l,w)):l*Math.max(0,Math.min(1,w));this.isRounded&&(v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,w=Math.max(w,Math.min(l*v,p*v)));w=Math.round(w);c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.moveTo(h+l-w,q);c.lineTo(h+l-w,q+p);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+arguments)};mxCellRenderer.registerShape("process",ia);mxCellRenderer.registerShape("process2",ia);mxUtils.extend(ha,mxRectangleShape);ha.prototype.paintBackground=function(c,h,q,l,p){c.setFillColor(mxConstants.NONE);c.rect(h,q,l,p);c.fill()};ha.prototype.paintForeground=function(c,h,q,l,p){};mxCellRenderer.registerShape("transparent",ha);mxUtils.extend(ba,mxHexagon);ba.prototype.size=30;ba.prototype.position=.5;ba.prototype.position2=.5;ba.prototype.base=20;ba.prototype.getLabelMargins=function(){return new mxRectangle(0,
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,h,q,l,p){h=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),w=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),J=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+J),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(c,h,
+this.position2)))),I=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-q),new mxPoint(Math.min(l,v+I),p-q),new mxPoint(w,p),new mxPoint(Math.max(0,v),p-q),new mxPoint(0,p-q)],this.isRounded,h,!0,[4])};mxCellRenderer.registerShape("callout",ba);mxUtils.extend(qa,mxActor);qa.prototype.size=.2;qa.prototype.fixedSize=20;qa.prototype.isRoundable=function(){return!0};qa.prototype.redrawPath=function(c,h,
q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(0,p),new mxPoint(h,p/2)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("step",
-qa);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.fixedSize=20;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,
-0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(L,mxRectangleShape);L.prototype.isHtmlAllowed=function(){return!1};L.prototype.paintForeground=function(c,h,q,l,p){var v=Math.min(l/5,p/5)+1;c.begin();c.moveTo(h+l/2,q+v);c.lineTo(h+l/2,q+p-v);c.moveTo(h+v,q+p/2);c.lineTo(h+l-v,q+p/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-L);var ab=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};mxRhombus.prototype.paintVertexShape=function(c,h,q,l,p){ab.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
-0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(c.setShadow(!1),ab.apply(this,[c,h,q,l,p]))}};mxUtils.extend(H,mxRectangleShape);H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};H.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var J=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],N=this.style["symbol"+v+"Height"],Ca=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ca,
-Ka=this.style["symbol"+v+"ArcSpacing"];null!=Ka&&(Ka*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ca+=Ka,Qa+=Ka);Ka=h;var la=q;Ka=J==mxConstants.ALIGN_CENTER?Ka+(l-Y)/2:J==mxConstants.ALIGN_RIGHT?Ka+(l-Y-Ca):Ka+Ca;la=y==mxConstants.ALIGN_MIDDLE?la+(p-N)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-N-Qa):la+Qa;c.save();J=new w;J.style=this.style;w.prototype.paintVertexShape.call(J,c,Ka,la,Y,N);c.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-H);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(c,h,q,l,p,v){v?(c.moveTo(0,0),c.lineTo(l/2,p/2),c.lineTo(l,0),c.end()):(c.moveTo(0,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(0,p),c.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(V,mxShape);V.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.ellipse(l/4,0,l/2,p/4);c.fillAndStroke();c.begin();c.moveTo(l/2,p/4);c.lineTo(l/2,2*p/3);c.moveTo(l/2,p/3);c.lineTo(0,p/3);c.moveTo(l/2,p/3);c.lineTo(l,p/3);c.moveTo(l/
-2,2*p/3);c.lineTo(0,p);c.moveTo(l/2,2*p/3);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",V);mxUtils.extend(ea,mxShape);ea.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};ea.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,p/4);c.lineTo(0,3*p/4);c.end();c.stroke();c.begin();c.moveTo(0,p/2);c.lineTo(l/6,p/2);c.end();c.stroke();c.ellipse(l/6,0,5*l/6,p);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-ea);mxUtils.extend(ka,mxEllipse);ka.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/8,q+p);c.lineTo(h+7*l/8,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",ka);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(l,0);c.lineTo(0,p);c.moveTo(0,0);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
+qa);mxUtils.extend(O,mxHexagon);O.prototype.size=.25;O.prototype.fixedSize=20;O.prototype.isRoundable=function(){return!0};O.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,
+0),new mxPoint(l-h,0),new mxPoint(l,.5*p),new mxPoint(l-h,p),new mxPoint(h,p),new mxPoint(0,.5*p)],this.isRounded,q,!0)};mxCellRenderer.registerShape("hexagon",O);mxUtils.extend(S,mxRectangleShape);S.prototype.isHtmlAllowed=function(){return!1};S.prototype.paintForeground=function(c,h,q,l,p){var v=Math.min(l/5,p/5)+1;c.begin();c.moveTo(h+l/2,q+v);c.lineTo(h+l/2,q+p-v);c.moveTo(h+v,q+p/2);c.lineTo(h+l-v,q+p/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+S);var cb=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};mxRhombus.prototype.paintVertexShape=function(c,h,q,l,p){cb.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var v=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&(c.setShadow(!1),cb.apply(this,[c,h,q,l,p]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var h=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+h,c.y+h,c.width-2*h,c.height-2*h)}return c};F.prototype.paintForeground=function(c,h,q,l,p){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var v=
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);h+=v;q+=v;l-=2*v;p-=2*v;0<l&&0<p&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);v=0;do{var w=mxCellRenderer.defaultShapes[this.style["symbol"+v]];if(null!=w){var I=this.style["symbol"+v+"Align"],y=this.style["symbol"+v+"VerticalAlign"],Y=this.style["symbol"+v+"Width"],M=this.style["symbol"+v+"Height"],Ba=this.style["symbol"+v+"Spacing"]||0,Qa=this.style["symbol"+v+"VSpacing"]||Ba,
+Ja=this.style["symbol"+v+"ArcSpacing"];null!=Ja&&(Ja*=this.getArcSize(l+this.strokewidth,p+this.strokewidth),Ba+=Ja,Qa+=Ja);Ja=h;var la=q;Ja=I==mxConstants.ALIGN_CENTER?Ja+(l-Y)/2:I==mxConstants.ALIGN_RIGHT?Ja+(l-Y-Ba):Ja+Ba;la=y==mxConstants.ALIGN_MIDDLE?la+(p-M)/2:y==mxConstants.ALIGN_BOTTOM?la+(p-M-Qa):la+Qa;c.save();I=new w;I.style=this.style;w.prototype.paintVertexShape.call(I,c,Ja,la,Y,M);c.restore()}v++}while(null!=w)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+F);mxUtils.extend(L,mxCylinder);L.prototype.redrawPath=function(c,h,q,l,p,v){v?(c.moveTo(0,0),c.lineTo(l/2,p/2),c.lineTo(l,0),c.end()):(c.moveTo(0,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(0,p),c.close())};mxCellRenderer.registerShape("message",L);mxUtils.extend(T,mxShape);T.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.ellipse(l/4,0,l/2,p/4);c.fillAndStroke();c.begin();c.moveTo(l/2,p/4);c.lineTo(l/2,2*p/3);c.moveTo(l/2,p/3);c.lineTo(0,p/3);c.moveTo(l/2,p/3);c.lineTo(l,p/3);c.moveTo(l/
+2,2*p/3);c.lineTo(0,p);c.moveTo(l/2,2*p/3);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",T);mxUtils.extend(ca,mxShape);ca.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};ca.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,p/4);c.lineTo(0,3*p/4);c.end();c.stroke();c.begin();c.moveTo(0,p/2);c.lineTo(l/6,p/2);c.end();c.stroke();c.ellipse(l/6,0,5*l/6,p);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+ca);mxUtils.extend(fa,mxEllipse);fa.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/8,q+p);c.lineTo(h+7*l/8,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",fa);mxUtils.extend(wa,mxShape);wa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(l,0);c.lineTo(0,p);c.moveTo(0,0);c.lineTo(l,p);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",wa);mxUtils.extend(W,
mxShape);W.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};W.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,0);c.end();c.stroke();c.ellipse(0,p/8,l,7*p/8);c.fillAndStroke()};W.prototype.paintForeground=function(c,h,q,l,p){c.begin();c.moveTo(3*l/8,p/8*1.1);c.lineTo(5*l/8,p/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",W);mxUtils.extend(aa,mxRectangleShape);aa.prototype.size=
40;aa.prototype.isHtmlAllowed=function(){return!1};aa.prototype.getLabelBounds=function(c){var h=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,h)};aa.prototype.paintBackground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),w=mxUtils.getValue(this.style,"participant");null==w||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
c,h,q,l,v):(w=this.state.view.graph.cellRenderer.getShape(w),null!=w&&w!=aa&&(w=new w,w.apply(this.state),c.save(),w.paintVertexShape(c,h,q,l,v),c.restore()));v<p&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(h+l/2,q+v),c.lineTo(h+l/2,q+p),c.end(),c.stroke())};aa.prototype.paintForeground=function(c,h,q,l,p){var v=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,h,q,l,
Math.min(p,v))};mxCellRenderer.registerShape("umlLifeline",aa);mxUtils.extend(oa,mxShape);oa.prototype.width=60;oa.prototype.height=30;oa.prototype.corner=10;oa.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};oa.prototype.paintBackground=function(c,h,q,l,p){var v=this.corner,w=Math.min(l,Math.max(v,parseFloat(mxUtils.getValue(this.style,
-"width",this.width)))),J=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(c.setFillColor(y),c.rect(h,q,l,p),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,h,q,l,p),c.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
-c.moveTo(h,q);c.lineTo(h+w,q);c.lineTo(h+w,q+Math.max(0,J-1.5*v));c.lineTo(h+Math.max(0,w-v),q+J);c.lineTo(h,q+J);c.close();c.fillAndStroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+l,q);c.lineTo(h+l,q+p);c.lineTo(h,q+p);c.lineTo(h,q+J);c.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(c,h,q,l){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,h,
+"width",this.width)))),I=Math.min(p,Math.max(1.5*v,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),y=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);y!=mxConstants.NONE&&(c.setFillColor(y),c.rect(h,q,l,p),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,h,q,l,p),c.setGradient(this.fill,this.gradient,h,q,l,p,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
+c.moveTo(h,q);c.lineTo(h+w,q);c.lineTo(h+w,q+Math.max(0,I-1.5*v));c.lineTo(h+Math.max(0,w-v),q+I);c.lineTo(h,q+I);c.close();c.fillAndStroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+l,q);c.lineTo(h+l,q+p);c.lineTo(h,q+p);c.lineTo(h,q+I);c.stroke()};mxCellRenderer.registerShape("umlFrame",oa);mxPerimeter.CenterPerimeter=function(c,h,q,l){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,h,
q,l){l=aa.prototype.size;null!=h&&(l=mxUtils.getValue(h.style,"size",l)*h.view.scale);h=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;q.x<c.getCenterX()&&(h=-1*(h+1));return new mxPoint(c.getCenterX()+h,Math.min(c.y+c.height,Math.max(c.y+l,q.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,h,q,l){l=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,h,q,l){l=parseFloat(h.style[mxConstants.STYLE_STROKEWIDTH]||1)*h.view.scale/2-1;null!=h.style.backboneSize&&(l+=parseFloat(h.style.backboneSize)*h.view.scale/2-1);if("south"==h.style[mxConstants.STYLE_DIRECTION]||"north"==h.style[mxConstants.STYLE_DIRECTION])return q.x<c.getCenterX()&&(l=-1*(l+1)),new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y,q.y)));q.y<c.getCenterY()&&(l=-1*(l+1));return new mxPoint(Math.min(c.x+
c.width,Math.max(c.x,q.x)),c.getCenterY()+l)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,h,q,l){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(h.style,"size",ba.prototype.size))*h.view.scale))),h.style),h,q,l)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
-h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?R.prototype.fixedSize:R.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+
-y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,
-"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_WEST?
-(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,
-J)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(J,c,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=
-h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w,J+Y),new mxPoint(w+p,c),new mxPoint(w,J)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y,J),new mxPoint(w+y-p,c),new mxPoint(w+
-y,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J+p),new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y),new mxPoint(N,J+Y-p),new mxPoint(w,J+Y),new mxPoint(w,J+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w,J),new mxPoint(N,J+p),new mxPoint(w+y,J),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J)]);N=new mxPoint(N,
-c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?I.prototype.fixedSize:I.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,J=c.y,y=c.width,Y=c.height,N=c.getCenterX();c=c.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
-mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),J=[new mxPoint(N,J),new mxPoint(w+y,J+p),new mxPoint(w+y,J+Y-p),new mxPoint(N,J+Y),new mxPoint(w,J+Y-p),new mxPoint(w,J+p),new mxPoint(N,J)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),J=[new mxPoint(w+p,J),new mxPoint(w+y-p,J),new mxPoint(w+y,c),new mxPoint(w+y-p,J+Y),new mxPoint(w+p,J+Y),new mxPoint(w,c),new mxPoint(w+p,J)]);N=new mxPoint(N,
-c);l&&(q.x<w||q.x>w+y?N.y=q.y:N.x=q.x);return mxUtils.getPerimeterPoint(J,N,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ua,mxShape);ua.prototype.size=10;ua.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));c.translate(h,q);c.ellipse((l-v)/2,0,v,v);c.fillAndStroke();c.begin();c.moveTo(l/2,v);c.lineTo(l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",ua);mxUtils.extend(Ja,
-mxShape);Ja.prototype.size=10;Ja.prototype.inset=2;Ja.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.begin();c.moveTo(l/2,v+w);c.lineTo(l/2,p);c.end();c.stroke();c.begin();c.moveTo((l-v)/2-w,v/2);c.quadTo((l-v)/2-w,v+w,l/2,v+w);c.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",Ja);mxUtils.extend(Ga,
-mxShape);Ga.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Ga);mxUtils.extend(va,mxShape);va.prototype.inset=2;va.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.ellipse(0,v,l-2*v,p-2*v);c.fillAndStroke();c.begin();c.moveTo(l/2,0);c.quadTo(l,0,l,p/2);c.quadTo(l,
-p,l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",va);mxUtils.extend(za,mxCylinder);za.prototype.jettyWidth=20;za.prototype.jettyHeight=10;za.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=Math.min(h,p-h),y=Math.min(J+2*h,p-h);v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,
-y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("module",za);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var J=.3*p-h/2,y=.7*p-h/2;v?(c.moveTo(q,J),c.lineTo(w,J),c.lineTo(w,J+h),c.lineTo(q,J+h),c.moveTo(q,y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,J+h),c.lineTo(0,J+h),c.lineTo(0,J),c.lineTo(q,J),c.close());c.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Ha,mxRectangleShape);Ha.prototype.paintForeground=
-function(c,h,q,l,p){var v=l/2,w=p/2,J=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,J,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Ha);mxUtils.extend(Ta,mxDoubleEllipse);Ta.prototype.outerStroke=!0;Ta.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.min(4,
-Math.min(l/5,p/5));0<l&&0<p&&(c.ellipse(h+v,q+v,l-2*v,p-2*v),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(h,q,l,p),c.stroke())};mxCellRenderer.registerShape("endState",Ta);mxUtils.extend(db,Ta);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ua,mxArrowConnector);Ua.prototype.defaultWidth=4;Ua.prototype.isOpenEnded=function(){return!0};Ua.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
-this.strokewidth-1)};Ua.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",Ua);mxUtils.extend(Va,mxArrowConnector);Va.prototype.defaultWidth=10;Va.prototype.defaultArrowWidth=20;Va.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};Va.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Va.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.size=30;Ya.prototype.isRoundable=function(){return!0};Ya.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
-0),new mxPoint(l,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ya);mxUtils.extend(bb,mxRectangleShape);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.isHtmlAllowed=function(){return!1};bb.prototype.paintForeground=function(c,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
-Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(h,q+v);c.lineTo(h+l,q+v);c.end();c.stroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",bb);mxUtils.extend(cb,mxActor);cb.prototype.dx=20;cb.prototype.dy=20;cb.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
-"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("corner",cb);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(c,h,q,
-l,p){c.moveTo(0,0);c.lineTo(0,p);c.end();c.moveTo(l,0);c.lineTo(l,p);c.end();c.moveTo(0,p/2);c.lineTo(l,p/2);c.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("tee",$a);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(c,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(c,
-h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
+h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?R.prototype.fixedSize:R.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y,I+p),new mxPoint(w+
+y,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I)]):(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y,I),new mxPoint(w+y-p,I+Y),new mxPoint(w,I+Y),new mxPoint(w+p,I)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(I,c,q)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,
+"fixedSize","0"),v=p?P.prototype.fixedSize:P.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height;h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(.5*y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y-p,I),new mxPoint(w+y,I+Y),new mxPoint(w,I+Y),new mxPoint(w+p,I)]):h==mxConstants.DIRECTION_WEST?
+(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y,I),new mxPoint(w+y-p,I+Y),new mxPoint(w+p,I+Y),new mxPoint(w,I)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I+p),new mxPoint(w+y,I),new mxPoint(w+y,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y,I+p),new mxPoint(w+y,I+Y-p),new mxPoint(w,I+Y),new mxPoint(w,
+I)]);Y=c.getCenterX();c=c.getCenterY();c=new mxPoint(Y,c);l&&(q.x<w||q.x>w+y?c.y=q.y:c.x=q.x);return mxUtils.getPerimeterPoint(I,c,q)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?qa.prototype.fixedSize:qa.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height,M=c.getCenterX();c=c.getCenterY();h=null!=
+h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_EAST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(w+y-p,I),new mxPoint(w+y,c),new mxPoint(w+y-p,I+Y),new mxPoint(w,I+Y),new mxPoint(w+p,c),new mxPoint(w,I)]):h==mxConstants.DIRECTION_WEST?(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y,I),new mxPoint(w+y-p,c),new mxPoint(w+
+y,I+Y),new mxPoint(w+p,I+Y),new mxPoint(w,c),new mxPoint(w+p,I)]):h==mxConstants.DIRECTION_NORTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I+p),new mxPoint(M,I),new mxPoint(w+y,I+p),new mxPoint(w+y,I+Y),new mxPoint(M,I+Y-p),new mxPoint(w,I+Y),new mxPoint(w,I+p)]):(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w,I),new mxPoint(M,I+p),new mxPoint(w+y,I),new mxPoint(w+y,I+Y-p),new mxPoint(M,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I)]);M=new mxPoint(M,
+c);l&&(q.x<w||q.x>w+y?M.y=q.y:M.x=q.x);return mxUtils.getPerimeterPoint(I,M,q)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,h,q,l){var p="0"!=mxUtils.getValue(h.style,"fixedSize","0"),v=p?O.prototype.fixedSize:O.prototype.size;null!=h&&(v=mxUtils.getValue(h.style,"size",v));p&&(v*=h.view.scale);var w=c.x,I=c.y,y=c.width,Y=c.height,M=c.getCenterX();c=c.getCenterY();h=null!=h?mxUtils.getValue(h.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+mxConstants.DIRECTION_EAST;h==mxConstants.DIRECTION_NORTH||h==mxConstants.DIRECTION_SOUTH?(p=p?Math.max(0,Math.min(Y,v)):Y*Math.max(0,Math.min(1,v)),I=[new mxPoint(M,I),new mxPoint(w+y,I+p),new mxPoint(w+y,I+Y-p),new mxPoint(M,I+Y),new mxPoint(w,I+Y-p),new mxPoint(w,I+p),new mxPoint(M,I)]):(p=p?Math.max(0,Math.min(y,v)):y*Math.max(0,Math.min(1,v)),I=[new mxPoint(w+p,I),new mxPoint(w+y-p,I),new mxPoint(w+y,c),new mxPoint(w+y-p,I+Y),new mxPoint(w+p,I+Y),new mxPoint(w,c),new mxPoint(w+p,I)]);M=new mxPoint(M,
+c);l&&(q.x<w||q.x>w+y?M.y=q.y:M.x=q.x);return mxUtils.getPerimeterPoint(I,M,q)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(sa,mxShape);sa.prototype.size=10;sa.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size));c.translate(h,q);c.ellipse((l-v)/2,0,v,v);c.fillAndStroke();c.begin();c.moveTo(l/2,v);c.lineTo(l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",sa);mxUtils.extend(Ka,
+mxShape);Ka.prototype.size=10;Ka.prototype.inset=2;Ka.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"size",this.size)),w=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.begin();c.moveTo(l/2,v+w);c.lineTo(l/2,p);c.end();c.stroke();c.begin();c.moveTo((l-v)/2-w,v/2);c.quadTo((l-v)/2-w,v+w,l/2,v+w);c.quadTo((l+v)/2+w,v+w,(l+v)/2+w,v/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",Ka);mxUtils.extend(Ha,
+mxShape);Ha.prototype.paintBackground=function(c,h,q,l,p){c.translate(h,q);c.begin();c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",Ha);mxUtils.extend(ua,mxShape);ua.prototype.inset=2;ua.prototype.paintBackground=function(c,h,q,l,p){var v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(h,q);c.ellipse(0,v,l-2*v,p-2*v);c.fillAndStroke();c.begin();c.moveTo(l/2,0);c.quadTo(l,0,l,p/2);c.quadTo(l,
+p,l/2,p);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ua);mxUtils.extend(Ca,mxCylinder);Ca.prototype.jettyWidth=20;Ca.prototype.jettyHeight=10;Ca.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var I=Math.min(h,p-h),y=Math.min(I+2*h,p-h);v?(c.moveTo(q,I),c.lineTo(w,I),c.lineTo(w,I+h),c.lineTo(q,I+h),c.moveTo(q,
+y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,I+h),c.lineTo(0,I+h),c.lineTo(0,I),c.lineTo(q,I),c.close());c.end()};mxCellRenderer.registerShape("module",Ca);mxUtils.extend(ra,mxCylinder);ra.prototype.jettyWidth=32;ra.prototype.jettyHeight=12;ra.prototype.redrawPath=function(c,h,q,l,p,v){var w=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));h=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));q=w/2;w=q+w/2;var I=.3*p-h/2,y=.7*p-h/2;v?(c.moveTo(q,I),c.lineTo(w,I),c.lineTo(w,I+h),c.lineTo(q,I+h),c.moveTo(q,y),c.lineTo(w,y),c.lineTo(w,y+h),c.lineTo(q,y+h)):(c.moveTo(q,0),c.lineTo(l,0),c.lineTo(l,p),c.lineTo(q,p),c.lineTo(q,y+h),c.lineTo(0,y+h),c.lineTo(0,y),c.lineTo(q,y),c.lineTo(q,I+h),c.lineTo(0,I+h),c.lineTo(0,I),c.lineTo(q,I),c.close());c.end()};mxCellRenderer.registerShape("component",ra);mxUtils.extend(Da,mxRectangleShape);Da.prototype.paintForeground=
+function(c,h,q,l,p){var v=l/2,w=p/2,I=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(h+v,q),new mxPoint(h+l,q+w),new mxPoint(h+v,q+p),new mxPoint(h,q+w)],this.isRounded,I,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Da);mxUtils.extend(Ua,mxDoubleEllipse);Ua.prototype.outerStroke=!0;Ua.prototype.paintVertexShape=function(c,h,q,l,p){var v=Math.min(4,
+Math.min(l/5,p/5));0<l&&0<p&&(c.ellipse(h+v,q+v,l-2*v,p-2*v),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(h,q,l,p),c.stroke())};mxCellRenderer.registerShape("endState",Ua);mxUtils.extend(db,Ua);db.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",db);mxUtils.extend(Ta,mxArrowConnector);Ta.prototype.defaultWidth=4;Ta.prototype.isOpenEnded=function(){return!0};Ta.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+this.strokewidth-1)};Ta.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",Ta);mxUtils.extend($a,mxArrowConnector);$a.prototype.defaultWidth=10;$a.prototype.defaultArrowWidth=20;$a.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};$a.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};$a.prototype.getEdgeWidth=
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",$a);mxUtils.extend(Xa,mxActor);Xa.prototype.size=30;Xa.prototype.isRoundable=function(){return!0};Xa.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p),new mxPoint(0,h),new mxPoint(l,
+0),new mxPoint(l,p)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("manualInput",Xa);mxUtils.extend(Va,mxRectangleShape);Va.prototype.dx=20;Va.prototype.dy=20;Va.prototype.isHtmlAllowed=function(){return!1};Va.prototype.paintForeground=function(c,h,q,l,p){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var v=0;if(this.isRounded){var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;v=Math.max(v,Math.min(l*w,p*w))}w=
+Math.max(v,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));v=Math.max(v,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(h,q+v);c.lineTo(h+l,q+v);c.end();c.stroke();c.begin();c.moveTo(h+w,q);c.lineTo(h+w,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Va);mxUtils.extend(Ya,mxActor);Ya.prototype.dx=20;Ya.prototype.dy=20;Ya.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,
+"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint(h,q),new mxPoint(h,p),new mxPoint(0,p)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("corner",Ya);mxUtils.extend(jb,mxActor);jb.prototype.redrawPath=function(c,h,q,
+l,p){c.moveTo(0,0);c.lineTo(0,p);c.end();c.moveTo(l,0);c.lineTo(l,p);c.end();c.moveTo(0,p/2);c.lineTo(l,p/2);c.end()};mxCellRenderer.registerShape("crossbar",jb);mxUtils.extend(bb,mxActor);bb.prototype.dx=20;bb.prototype.dy=20;bb.prototype.redrawPath=function(c,h,q,l,p){h=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));q=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var v=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,q),new mxPoint((l+h)/2,q),new mxPoint((l+h)/2,p),new mxPoint((l-h)/2,p),new mxPoint((l-h)/2,q),new mxPoint(0,q)],this.isRounded,v,!0);c.end()};mxCellRenderer.registerShape("tee",bb);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(c,h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(0,v)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(t,mxActor);t.prototype.redrawPath=function(c,
+h,q,l,p){var v=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));h=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));q=(p-v)/2;v=q+v;var w=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,p/2),new mxPoint(h,0),new mxPoint(h,q),new mxPoint(l-h,q),new mxPoint(l-h,0),new mxPoint(l,p/2),new mxPoint(l-h,p),new mxPoint(l-h,v),new mxPoint(h,
v),new mxPoint(h,p)],this.isRounded,w,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",t);mxUtils.extend(z,mxActor);z.prototype.size=.1;z.prototype.fixedSize=20;z.prototype.redrawPath=function(c,h,q,l,p){h="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(h,0);c.lineTo(l,0);c.quadTo(l-2*h,p/2,l,p);c.lineTo(h,p);c.quadTo(h-
-2*h,p/2,h,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.close();c.end()};mxCellRenderer.registerShape("or",B);mxUtils.extend(E,mxActor);E.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.quadTo(l/2,p/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",E);mxUtils.extend(G,mxActor);G.prototype.size=20;
-G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("loopLimit",G);mxUtils.extend(M,mxActor);M.prototype.size=
-.375;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",M);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
-function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/2,q+p);c.lineTo(h+l,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ia,mxEllipse);ia.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke();c.begin();c.moveTo(h+l/2,q);c.lineTo(h+l/2,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",
-ia);mxUtils.extend(da,mxEllipse);da.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h+.145*l,q+.145*p);c.lineTo(h+.855*l,q+.855*p);c.end();c.stroke();c.begin();c.moveTo(h+.855*l,q+.145*p);c.lineTo(h+.145*l,q+.855*p);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",da);mxUtils.extend(ja,mxRhombus);ja.prototype.paintVertexShape=function(c,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
-arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ja);mxUtils.extend(sa,mxEllipse);sa.prototype.paintVertexShape=function(c,h,q,l,p){c.begin();c.moveTo(h,q);c.lineTo(h+l,q);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke();c.begin();c.moveTo(h,q+p);c.lineTo(h+l,q+p);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",sa);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
-function(c,h,q,l,p){var v=c.state.strokeWidth/2,w=10+2*v,J=q+p-w/2;c.begin();c.moveTo(h,q);c.lineTo(h,q+p);c.moveTo(h+v,J);c.lineTo(h+v+w,J-w/2);c.moveTo(h+v,J);c.lineTo(h+v+w,J+w/2);c.moveTo(h+v,J);c.lineTo(h+l-v,J);c.moveTo(h+l,q);c.lineTo(h+l,q+p);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J-w/2);c.moveTo(h+l-v,J);c.lineTo(h+l-w-v,J+w/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ba);mxUtils.extend(Da,mxEllipse);Da.prototype.drawHidden=!0;Da.prototype.paintVertexShape=function(c,h,q,
-l,p){this.outline||c.setStrokeColor(null);if(null!=this.style){var v=c.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(c.pointerEvents=!1);var J="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),N="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||J||Y||N||y?(c.rect(h,q,l,p),c.fill(),c.pointerEvents=
-v,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(h,q),this.outline||J?c.lineTo(h+l,q):c.moveTo(h+l,q),this.outline||Y?c.lineTo(h+l,q+p):c.moveTo(h+l,q+p),this.outline||N?c.lineTo(h,q+p):c.moveTo(h,q+p),(this.outline||y)&&c.lineTo(h,q),c.end(),c.stroke(),c.setLineCap("flat")):c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
+2*h,p/2,h,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",z);mxUtils.extend(A,mxActor);A.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.close();c.end()};mxCellRenderer.registerShape("or",A);mxUtils.extend(E,mxActor);E.prototype.redrawPath=function(c,h,q,l,p){c.moveTo(0,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,0,p);c.quadTo(l/2,p/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",E);mxUtils.extend(H,mxActor);H.prototype.size=20;
+H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l/2,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(h,0),new mxPoint(l-h,0),new mxPoint(l,.8*h),new mxPoint(l,p),new mxPoint(0,p),new mxPoint(0,.8*h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("loopLimit",H);mxUtils.extend(K,mxActor);K.prototype.size=
+.375;K.prototype.isRoundable=function(){return!0};K.prototype.redrawPath=function(c,h,q,l,p){h=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));q=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(l,0),new mxPoint(l,p-h),new mxPoint(l/2,p),new mxPoint(0,p-h)],this.isRounded,q,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",K);mxUtils.extend(X,mxEllipse);X.prototype.paintVertexShape=
+function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(h+l/2,q+p);c.lineTo(h+l,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",X);mxUtils.extend(ja,mxEllipse);ja.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke();c.begin();c.moveTo(h+l/2,q);c.lineTo(h+l/2,q+p);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",
+ja);mxUtils.extend(ea,mxEllipse);ea.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(h+.145*l,q+.145*p);c.lineTo(h+.855*l,q+.855*p);c.end();c.stroke();c.begin();c.moveTo(h+.855*l,q+.145*p);c.lineTo(h+.145*l,q+.855*p);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",ea);mxUtils.extend(ka,mxRhombus);ka.prototype.paintVertexShape=function(c,h,q,l,p){mxRhombus.prototype.paintVertexShape.apply(this,
+arguments);c.setShadow(!1);c.begin();c.moveTo(h,q+p/2);c.lineTo(h+l,q+p/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",ka);mxUtils.extend(ta,mxEllipse);ta.prototype.paintVertexShape=function(c,h,q,l,p){c.begin();c.moveTo(h,q);c.lineTo(h+l,q);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke();c.begin();c.moveTo(h,q+p);c.lineTo(h+l,q+p);c.lineTo(h+l/2,q+p/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",ta);mxUtils.extend(Aa,mxEllipse);Aa.prototype.paintVertexShape=
+function(c,h,q,l,p){var v=c.state.strokeWidth/2,w=10+2*v,I=q+p-w/2;c.begin();c.moveTo(h,q);c.lineTo(h,q+p);c.moveTo(h+v,I);c.lineTo(h+v+w,I-w/2);c.moveTo(h+v,I);c.lineTo(h+v+w,I+w/2);c.moveTo(h+v,I);c.lineTo(h+l-v,I);c.moveTo(h+l,q);c.lineTo(h+l,q+p);c.moveTo(h+l-v,I);c.lineTo(h+l-w-v,I-w/2);c.moveTo(h+l-v,I);c.lineTo(h+l-w-v,I+w/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Aa);mxUtils.extend(Ea,mxEllipse);Ea.prototype.drawHidden=!0;Ea.prototype.paintVertexShape=function(c,h,q,
+l,p){this.outline||c.setStrokeColor(null);if(null!=this.style){var v=c.pointerEvents,w=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||w||(c.pointerEvents=!1);var I="1"==mxUtils.getValue(this.style,"top","1"),y="1"==mxUtils.getValue(this.style,"left","1"),Y="1"==mxUtils.getValue(this.style,"right","1"),M="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||w||this.outline||I||Y||M||y?(c.rect(h,q,l,p),c.fill(),c.pointerEvents=
+v,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(h,q),this.outline||I?c.lineTo(h+l,q):c.moveTo(h+l,q),this.outline||Y?c.lineTo(h+l,q+p):c.moveTo(h+l,q+p),this.outline||M?c.lineTo(h,q+p):c.moveTo(h,q+p),(this.outline||y)&&c.lineTo(h,q),c.end(),c.stroke(),c.setLineCap("flat")):c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",Ea);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,h,q,l,p){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(h+l/2,q),c.lineTo(h+l/2,q+p)):(c.moveTo(h,q+p/2),c.lineTo(h+l,q+p/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ma);mxUtils.extend(La,mxActor);La.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(l,p/2);c.moveTo(0,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(0,p);c.close();c.end()};mxCellRenderer.registerShape("delay",La);mxUtils.extend(Ia,mxActor);Ia.prototype.size=
-.2;Ia.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;c.moveTo(0,h);c.lineTo(w,h);c.lineTo(w,0);c.lineTo(v,0);c.lineTo(v,h);c.lineTo(l,h);c.lineTo(l,q);c.lineTo(v,q);c.lineTo(v,p);c.lineTo(w,p);c.lineTo(w,q);c.lineTo(0,q);c.close();c.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Ea,mxActor);Ea.prototype.size=.25;Ea.prototype.redrawPath=function(c,
-h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.moveTo(0,p/2);c.lineTo(q,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(q,p);c.close();c.end()};mxCellRenderer.registerShape("display",Ea);mxUtils.extend(Fa,mxActor);Fa.prototype.cst={RECT2:"mxgraph.basic.rect"};Fa.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",
+.2;Ia.prototype.redrawPath=function(c,h,q,l,p){h=Math.min(p,l);var v=Math.max(0,Math.min(h,h*parseFloat(mxUtils.getValue(this.style,"size",this.size))));h=(p-v)/2;q=h+v;var w=(l-v)/2;v=w+v;c.moveTo(0,h);c.lineTo(w,h);c.lineTo(w,0);c.lineTo(v,0);c.lineTo(v,h);c.lineTo(l,h);c.lineTo(l,q);c.lineTo(v,q);c.lineTo(v,p);c.lineTo(w,p);c.lineTo(w,q);c.lineTo(0,q);c.close();c.end()};mxCellRenderer.registerShape("cross",Ia);mxUtils.extend(Fa,mxActor);Fa.prototype.size=.25;Fa.prototype.redrawPath=function(c,
+h,q,l,p){h=Math.min(l,p/2);q=Math.min(l-h,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.moveTo(0,p/2);c.lineTo(q,0);c.lineTo(l-h,0);c.quadTo(l,0,l,p/2);c.quadTo(l,p,l-h,p);c.lineTo(q,p);c.close();c.end()};mxCellRenderer.registerShape("display",Fa);mxUtils.extend(Ga,mxActor);Ga.prototype.cst={RECT2:"mxgraph.basic.rect"};Ga.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"}]}];Fa.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);this.strictDrawShape(c,0,0,l,p)};Fa.prototype.strictDrawShape=function(c,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),J=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
-"absoluteCornerSize",this.absoluteCornerSize),y=v&&v.size?v.size:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),Y=v&&v.rectOutline?v.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),N=v&&v.indent?v.indent:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),Ca=v&&v.dashed?v.dashed:mxUtils.getValue(this.style,"dashed",!1),Qa=v&&v.dashPattern?v.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),Ka=v&&
-v.relIndent?v.relIndent:Math.max(0,Math.min(50,N)),la=v&&v.top?v.top:mxUtils.getValue(this.style,"top",!0),pa=v&&v.right?v.right:mxUtils.getValue(this.style,"right",!0),na=v&&v.bottom?v.bottom:mxUtils.getValue(this.style,"bottom",!0),ma=v&&v.left?v.left:mxUtils.getValue(this.style,"left",!0),ta=v&&v.topLeftStyle?v.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),xa=v&&v.topRightStyle?v.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),ya=v&&v.bottomRightStyle?
-v.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),Aa=v&&v.bottomLeftStyle?v.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),zb=v&&v.fillColor?v.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");v&&v.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var Ab=v&&v.strokeWidth?v.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),wb=v&&v.fillColor2?v.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),yb=v&&v.gradientColor2?
-v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Fa.prototype;c.setDashed(Ca);Qa&&""!=Qa&&c.setDashPattern(Qa);c.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);J||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));J||(N=Math.min(Ka*Math.min(l,p)/100));N=Math.min(N,.5*Math.min(l,
-p)-y);(la||pa||na||ma)&&"frame"!=Y&&(c.begin(),la?v.moveNW(c,h,q,l,p,w,ta,y,ma):c.moveTo(0,0),la&&v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),na&&v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),ma&&v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(wb),Ca=J=Cb,"none"==wb&&(J=0),"none"==yb&&(Ca=0),c.setGradient(wb,yb,0,0,l,p,Bb,J,Ca),
-c.begin(),la?v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma):c.moveTo(N,0),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),ma&&na&&v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),na&&pa&&v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),pa&&la&&v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),la&&ma&&v.paintNWInner(c,h,q,l,p,w,ta,y,N),c.fill(),"none"==zb&&(c.begin(),v.paintFolds(c,h,q,l,p,w,ta,xa,ya,Aa,y,la,pa,na,ma),c.stroke()));
-la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,
-h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,
-p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&
-!ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,
-h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),
-v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),
-v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,
-ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,
-h,q,l,p,w,ta,y,N,ma,la)),c.stroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,
-Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,
-h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,
-l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),
-v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),
-v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,
-h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close(),c.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,
-h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,
-w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),c.close(),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,
-y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma),c.close()),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,
-l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.paintSW(c,h,q,l,p,w,Aa,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),c.close(),v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintSWInner(c,h,q,l,p,w,Aa,y,N,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,N),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,N),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),v.paintNWInner(c,h,q,l,p,w,ta,y,N),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,
-na,ma),c.close(),c.fillAndStroke())):"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,ta,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,N,pa),v.paintTopInner(c,h,q,l,p,w,ta,y,N,ma,la),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==
-Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,N,na),v.paintRightInner(c,h,q,l,p,w,xa,y,N,la,pa),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,
-h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,Aa,y,ma),v.lineSWInner(c,h,q,l,p,w,Aa,y,N,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,N,pa,na),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,w,Aa,y,N,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,ta,y,na),v.paintLeft(c,h,q,l,p,w,ta,y,la),v.lineNWInner(c,h,q,l,p,w,ta,y,N,la,ma),v.paintLeftInner(c,h,q,l,p,
-w,Aa,y,N,na,ma),c.close(),c.fillAndStroke());c.begin();v.paintFolds(c,h,q,l,p,w,ta,xa,ya,Aa,y,la,pa,na,ma);c.stroke()};Fa.prototype.moveNW=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,0):c.moveTo(0,J)};Fa.prototype.moveNE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,0):c.moveTo(l-J,0)};Fa.prototype.moveSE=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,p):c.moveTo(l,p-J)};Fa.prototype.moveSW=
-function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,p):c.moveTo(J,p)};Fa.prototype.paintNW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,J,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(J,0);else c.lineTo(0,0)};Fa.prototype.paintTop=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==
-w&&"square"==v||!y?c.lineTo(l,0):c.lineTo(l-J,0)};Fa.prototype.paintNE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l,J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l,J);else c.lineTo(l,0)};Fa.prototype.paintRight=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(l,p):c.lineTo(l,p-
-J)};Fa.prototype.paintLeft=function(c,h,q,l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,0):c.lineTo(0,J)};Fa.prototype.paintSE=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,l-J,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-J,p);else c.lineTo(l,p)};Fa.prototype.paintBottom=function(c,h,q,
-l,p,v,w,J,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,p):c.lineTo(J,p)};Fa.prototype.paintSW=function(c,h,q,l,p,v,w,J,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(J,J,0,0,h,0,p-J)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(0,p-J);else c.lineTo(0,p)};Fa.prototype.paintNWInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==
-w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,y,.5*y+J);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,y,y+J);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(y,.5*y+J);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,y+J),c.lineTo(y,y+J)};Fa.prototype.paintTopInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(0,y):Y&&!N?c.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
-v?c.lineTo(J+.5*y,y):c.lineTo(J+y,y):c.lineTo(0,y):c.lineTo(0,0)};Fa.prototype.paintNEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-J-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-J-y,y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-J-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,J+y),c.lineTo(l-J-y,y)};Fa.prototype.paintRightInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&
-N?c.lineTo(l-y,0):Y&&!N?c.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):c.lineTo(l-y,J+y):c.lineTo(l-y,0):c.lineTo(l,0)};Fa.prototype.paintLeftInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,p):Y&&!N?c.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*
-y):c.lineTo(y,p-J-y):c.lineTo(y,p):c.lineTo(0,p)};Fa.prototype.paintSEInner=function(c,h,q,l,p,v,w,J,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,l-y,p-J-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+y,J+y,0,0,1,l-y,p-J-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-y,p-J-.5*y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-J-y,p-J-y),c.lineTo(l-y,p-J-y)};Fa.prototype.paintBottomInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(l,
-p-y):Y&&!N?c.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-J-.5*y,p-y):c.lineTo(l-J-y,p-y):c.lineTo(l,p)};Fa.prototype.paintSWInner=function(c,h,q,l,p,v,w,J,y,Y){if(!Y)c.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)c.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(J-.5*y,J-.5*y,0,0,0,J+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(J+
-y,J+y,0,0,1,J+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(J+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+J,p-J-y),c.lineTo(y+J,p-y)};Fa.prototype.moveSWInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,p-J-y):c.moveTo(0,p-y)};Fa.prototype.lineSWInner=
-function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,p-J-y):c.lineTo(0,p-y)};Fa.prototype.moveSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-
-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,p-J-y):c.moveTo(l-y,p)};Fa.prototype.lineSEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,p-J-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,p-J-y):c.lineTo(l-y,p)};Fa.prototype.moveNEInner=function(c,h,
-q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,J+y):c.moveTo(l,y)};Fa.prototype.lineNEInner=function(c,h,q,l,p,v,w,J,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,J+.5*y):
-("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,J+y):c.lineTo(l,y)};Fa.prototype.moveNWInner=function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.moveTo(y,0):Y&&!N?c.moveTo(0,y):"square"==w||"default"==w&&"square"==v?c.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,J+y):c.moveTo(0,0)};Fa.prototype.lineNWInner=
-function(c,h,q,l,p,v,w,J,y,Y,N){Y||N?!Y&&N?c.lineTo(y,0):Y&&!N?c.lineTo(0,y):"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,J+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,J+y):c.lineTo(0,0)};Fa.prototype.paintFolds=function(c,h,q,l,p,v,w,J,y,Y,N,Ca,Qa,Ka,la){if("fold"==v||"fold"==w||"fold"==J||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
-Ca&&la&&(c.moveTo(0,N),c.lineTo(N,N),c.lineTo(N,0)),("fold"==J||"default"==J&&"fold"==v)&&Ca&&Qa&&(c.moveTo(l-N,0),c.lineTo(l-N,N),c.lineTo(l,N)),("fold"==y||"default"==y&&"fold"==v)&&Ka&&Qa&&(c.moveTo(l-N,p),c.lineTo(l-N,p-N),c.lineTo(l,p-N)),("fold"==Y||"default"==Y&&"fold"==v)&&Ka&&la&&(c.moveTo(0,p-N),c.lineTo(N,p-N),c.lineTo(N,p))};mxCellRenderer.registerShape(Fa.prototype.cst.RECT2,Fa);Fa.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
+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"}]}];Ga.prototype.paintVertexShape=function(c,h,q,l,p){c.translate(h,q);this.strictDrawShape(c,0,0,l,p)};Ga.prototype.strictDrawShape=function(c,h,q,l,p,v){var w=v&&v.rectStyle?v.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),I=v&&v.absoluteCornerSize?v.absoluteCornerSize:mxUtils.getValue(this.style,
+"absoluteCornerSize",this.absoluteCornerSize),y=v&&v.size?v.size:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),Y=v&&v.rectOutline?v.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),M=v&&v.indent?v.indent:Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),Ba=v&&v.dashed?v.dashed:mxUtils.getValue(this.style,"dashed",!1),Qa=v&&v.dashPattern?v.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),Ja=v&&
+v.relIndent?v.relIndent:Math.max(0,Math.min(50,M)),la=v&&v.top?v.top:mxUtils.getValue(this.style,"top",!0),pa=v&&v.right?v.right:mxUtils.getValue(this.style,"right",!0),na=v&&v.bottom?v.bottom:mxUtils.getValue(this.style,"bottom",!0),ma=v&&v.left?v.left:mxUtils.getValue(this.style,"left",!0),va=v&&v.topLeftStyle?v.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),xa=v&&v.topRightStyle?v.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),ya=v&&v.bottomRightStyle?
+v.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),za=v&&v.bottomLeftStyle?v.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),zb=v&&v.fillColor?v.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");v&&v.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var Ab=v&&v.strokeWidth?v.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),wb=v&&v.fillColor2?v.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),yb=v&&v.gradientColor2?
+v.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Bb=v&&v.gradientDirection2?v.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Cb=v&&v.opacity?v.opacity:mxUtils.getValue(this.style,"opacity","100"),Db=Math.max(0,Math.min(50,y));v=Ga.prototype;c.setDashed(Ba);Qa&&""!=Qa&&c.setDashPattern(Qa);c.setStrokeWidth(Ab);y=Math.min(.5*p,.5*l,y);I||(y=Db*Math.min(l,p)/100);y=Math.min(y,.5*Math.min(l,p));I||(M=Math.min(Ja*Math.min(l,p)/100));M=Math.min(M,.5*Math.min(l,
+p)-y);(la||pa||na||ma)&&"frame"!=Y&&(c.begin(),la?v.moveNW(c,h,q,l,p,w,va,y,ma):c.moveTo(0,0),la&&v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),pa&&v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),na&&v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),ma&&v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(wb),Ba=I=Cb,"none"==wb&&(I=0),"none"==yb&&(Ba=0),c.setGradient(wb,yb,0,0,l,p,Bb,I,Ba),
+c.begin(),la?v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma):c.moveTo(M,0),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),ma&&na&&v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),na&&pa&&v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),pa&&la&&v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),la&&ma&&v.paintNWInner(c,h,q,l,p,w,va,y,M),c.fill(),"none"==zb&&(c.begin(),v.paintFolds(c,h,q,l,p,w,va,xa,ya,za,y,la,pa,na,ma),c.stroke()));
+la||pa||na||!ma?la||pa||!na||ma?!la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,
+h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):la||!pa||na||ma?!la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma)),c.stroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,
+p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close(),c.fillAndStroke(),c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&
+!ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,
+h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):!la&&pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),
+v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),
+v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):!la||pa||na||ma?la&&!pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,
+ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close(),c.fillAndStroke()):la&&!pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,
+h,q,l,p,w,va,y,M,ma,la)),c.stroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke(),c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,h,q,l,p,w,
+za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):la&&!pa&&na&&ma?"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,
+h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,
+l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):la&&pa&&!na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),
+v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke()):la&&pa&&!na&&ma?"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),
+v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,
+h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close(),c.fillAndStroke()):la&&pa&&na&&!ma?"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,
+h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,
+w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke()):la&&pa&&na&&ma&&("frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),c.close(),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,
+y,M,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma),c.close()),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.paintNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,
+l,p,w,ya,y,na),v.paintSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.paintSW(c,h,q,l,p,w,za,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),c.close(),v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintSWInner(c,h,q,l,p,w,za,y,M,na),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),v.paintSEInner(c,h,q,l,p,w,ya,y,M),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),v.paintNEInner(c,h,q,l,p,w,xa,y,M),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),v.paintNWInner(c,h,q,l,p,w,va,y,M),v.paintLeftInner(c,h,q,l,p,w,za,y,M,
+na,ma),c.close(),c.fillAndStroke())):"frame"!=Y?(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),"double"==Y&&(v.moveNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la)),c.stroke()):(c.begin(),v.moveNW(c,h,q,l,p,w,va,y,ma),v.paintTop(c,h,q,l,p,w,xa,y,pa),v.lineNEInner(c,h,q,l,p,w,xa,y,M,pa),v.paintTopInner(c,h,q,l,p,w,va,y,M,ma,la),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),"double"==
+Y&&(v.moveSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa)),c.stroke()):(c.begin(),v.moveNE(c,h,q,l,p,w,xa,y,la),v.paintRight(c,h,q,l,p,w,ya,y,na),v.lineSEInner(c,h,q,l,p,w,ya,y,M,na),v.paintRightInner(c,h,q,l,p,w,xa,y,M,la,pa),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSE(c,h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),"double"==Y&&(v.moveSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na)),c.stroke()):(c.begin(),v.moveSE(c,
+h,q,l,p,w,ya,y,pa),v.paintBottom(c,h,q,l,p,w,za,y,ma),v.lineSWInner(c,h,q,l,p,w,za,y,M,ma),v.paintBottomInner(c,h,q,l,p,w,ya,y,M,pa,na),c.close(),c.fillAndStroke()):"frame"!=Y?(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),"double"==Y&&(v.moveNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,w,za,y,M,na,ma)),c.stroke()):(c.begin(),v.moveSW(c,h,q,l,p,w,va,y,na),v.paintLeft(c,h,q,l,p,w,va,y,la),v.lineNWInner(c,h,q,l,p,w,va,y,M,la,ma),v.paintLeftInner(c,h,q,l,p,
+w,za,y,M,na,ma),c.close(),c.fillAndStroke());c.begin();v.paintFolds(c,h,q,l,p,w,va,xa,ya,za,y,la,pa,na,ma);c.stroke()};Ga.prototype.moveNW=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,0):c.moveTo(0,I)};Ga.prototype.moveNE=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,0):c.moveTo(l-I,0)};Ga.prototype.moveSE=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(l,p):c.moveTo(l,p-I)};Ga.prototype.moveSW=
+function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.moveTo(0,p):c.moveTo(I,p)};Ga.prototype.paintNW=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,I,0)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(I,0);else c.lineTo(0,0)};Ga.prototype.paintTop=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==
+w&&"square"==v||!y?c.lineTo(l,0):c.lineTo(l-I,0)};Ga.prototype.paintNE=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,l,I)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l,I);else c.lineTo(l,0)};Ga.prototype.paintRight=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(l,p):c.lineTo(l,p-
+I)};Ga.prototype.paintLeft=function(c,h,q,l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,0):c.lineTo(0,I)};Ga.prototype.paintSE=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,l-I,p)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-I,p);else c.lineTo(l,p)};Ga.prototype.paintBottom=function(c,h,q,
+l,p,v,w,I,y){"square"==w||"default"==w&&"square"==v||!y?c.lineTo(0,p):c.lineTo(I,p)};Ga.prototype.paintSW=function(c,h,q,l,p,v,w,I,y){if(y)if("rounded"==w||"default"==w&&"rounded"==v||"invRound"==w||"default"==w&&"invRound"==v){h=0;if("rounded"==w||"default"==w&&"rounded"==v)h=1;c.arcTo(I,I,0,0,h,0,p-I)}else("snip"==w||"default"==w&&"snip"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(0,p-I);else c.lineTo(0,p)};Ga.prototype.paintNWInner=function(c,h,q,l,p,v,w,I,y){if("rounded"==w||"default"==
+w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,y,.5*y+I);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+y,I+y,0,0,1,y,y+I);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(y,.5*y+I);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+I,y+I),c.lineTo(y,y+I)};Ga.prototype.paintTopInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(0,y):Y&&!M?c.lineTo(y,0):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==
+v?c.lineTo(I+.5*y,y):c.lineTo(I+y,y):c.lineTo(0,y):c.lineTo(0,0)};Ga.prototype.paintNEInner=function(c,h,q,l,p,v,w,I,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,l-I-.5*y,y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+y,I+y,0,0,1,l-I-y,y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-I-.5*y,y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-I-y,I+y),c.lineTo(l-I-y,y)};Ga.prototype.paintRightInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&
+M?c.lineTo(l-y,0):Y&&!M?c.lineTo(l,y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,I+.5*y):c.lineTo(l-y,I+y):c.lineTo(l-y,0):c.lineTo(l,0)};Ga.prototype.paintLeftInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(y,p):Y&&!M?c.lineTo(0,p-y):Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-I-.5*
+y):c.lineTo(y,p-I-y):c.lineTo(y,p):c.lineTo(0,p)};Ga.prototype.paintSEInner=function(c,h,q,l,p,v,w,I,y){if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,l-y,p-I-.5*y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+y,I+y,0,0,1,l-y,p-I-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(l-y,p-I-.5*y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(l-I-y,p-I-y),c.lineTo(l-y,p-I-y)};Ga.prototype.paintBottomInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(l,
+p-y):Y&&!M?c.lineTo(l-y,p):"square"==w||"default"==w&&"square"==v||!Y?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-I-.5*y,p-y):c.lineTo(l-I-y,p-y):c.lineTo(l,p)};Ga.prototype.paintSWInner=function(c,h,q,l,p,v,w,I,y,Y){if(!Y)c.lineTo(y,p);else if("square"==w||"default"==w&&"square"==v)c.lineTo(y,p-y);else if("rounded"==w||"default"==w&&"rounded"==v)c.arcTo(I-.5*y,I-.5*y,0,0,0,I+.5*y,p-y);else if("invRound"==w||"default"==w&&"invRound"==v)c.arcTo(I+
+y,I+y,0,0,1,I+y,p-y);else if("snip"==w||"default"==w&&"snip"==v)c.lineTo(I+.5*y,p-y);else if("fold"==w||"default"==w&&"fold"==v)c.lineTo(y+I,p-I-y),c.lineTo(y+I,p-y)};Ga.prototype.moveSWInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,p-I-y):c.moveTo(0,p-y)};Ga.prototype.lineSWInner=
+function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,p-I-y):c.lineTo(0,p-y)};Ga.prototype.moveSEInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.moveTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-
+y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,p-I-y):c.moveTo(l-y,p)};Ga.prototype.lineSEInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v?c.lineTo(l-y,p-y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,p-I-.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,p-I-y):c.lineTo(l-y,p)};Ga.prototype.moveNEInner=function(c,h,
+q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.moveTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(l-y,I+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(l-y,I+y):c.moveTo(l,y)};Ga.prototype.lineNEInner=function(c,h,q,l,p,v,w,I,y,Y){Y?"square"==w||"default"==w&&"square"==v||Y?c.lineTo(l-y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(l-y,I+.5*y):
+("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(l-y,I+y):c.lineTo(l,y)};Ga.prototype.moveNWInner=function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.moveTo(y,0):Y&&!M?c.moveTo(0,y):"square"==w||"default"==w&&"square"==v?c.moveTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.moveTo(y,I+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.moveTo(y,I+y):c.moveTo(0,0)};Ga.prototype.lineNWInner=
+function(c,h,q,l,p,v,w,I,y,Y,M){Y||M?!Y&&M?c.lineTo(y,0):Y&&!M?c.lineTo(0,y):"square"==w||"default"==w&&"square"==v?c.lineTo(y,y):"rounded"==w||"default"==w&&"rounded"==v||"snip"==w||"default"==w&&"snip"==v?c.lineTo(y,I+.5*y):("invRound"==w||"default"==w&&"invRound"==v||"fold"==w||"default"==w&&"fold"==v)&&c.lineTo(y,I+y):c.lineTo(0,0)};Ga.prototype.paintFolds=function(c,h,q,l,p,v,w,I,y,Y,M,Ba,Qa,Ja,la){if("fold"==v||"fold"==w||"fold"==I||"fold"==y||"fold"==Y)("fold"==w||"default"==w&&"fold"==v)&&
+Ba&&la&&(c.moveTo(0,M),c.lineTo(M,M),c.lineTo(M,0)),("fold"==I||"default"==I&&"fold"==v)&&Ba&&Qa&&(c.moveTo(l-M,0),c.lineTo(l-M,M),c.lineTo(l,M)),("fold"==y||"default"==y&&"fold"==v)&&Ja&&Qa&&(c.moveTo(l-M,p),c.lineTo(l-M,p-M),c.lineTo(l,p-M)),("fold"==Y||"default"==Y&&"fold"==v)&&Ja&&la&&(c.moveTo(0,p-M),c.lineTo(M,p-M),c.lineTo(M,p))};mxCellRenderer.registerShape(Ga.prototype.cst.RECT2,Ga);Ga.prototype.constraints=null;mxUtils.extend(Oa,mxConnector);Oa.prototype.origPaintEdgeShape=Oa.prototype.paintEdgeShape;
Oa.prototype.paintEdgeShape=function(c,h,q){for(var l=[],p=0;p<h.length;p++)l.push(mxUtils.clone(h[p]));p=c.state.dashed;var v=c.state.fixDash;Oa.prototype.origPaintEdgeShape.apply(this,[c,l,q]);3<=c.state.strokeWidth&&(l=mxUtils.getValue(this.style,"fillColor",null),null!=l&&(c.setStrokeColor(l),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(p,v),Oa.prototype.origPaintEdgeShape.apply(this,[c,h,q])))};mxCellRenderer.registerShape("filledEdge",Oa);"undefined"!==typeof StyleFormatPanel&&function(){var c=
-StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=c.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);c.stroke()}});mxMarker.addMarker("box",
-function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.x+N/2,Ka=l.y+Ca/2;l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa-N/2-Ca/2,Ka-Ca/2+N/2);c.lineTo(Qa-N/2+Ca/2,Ka-Ca/2-N/2);c.lineTo(Qa+Ca/2-3*N/2,Ka-3*Ca/2-N/2);c.lineTo(Qa-Ca/2-3*N/2,Ka-3*Ca/2+N/2);c.close();Y?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-N/2-Ca/2,l.y-Ca/2+N/2);c.lineTo(l.x+Ca/2-3*N/2,l.y-3*Ca/2-N/2);
-c.moveTo(l.x-N/2+Ca/2,l.y-Ca/2-N/2);c.lineTo(l.x-Ca/2-3*N/2,l.y-3*Ca/2+N/2);c.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(c,h,q,l,p,v,w,J,y,Y){var N=l.clone(),Ca=Pa.apply(this,arguments),Qa=p*(w+2*y),Ka=v*(w+2*y);return function(){Ca.apply(this,arguments);c.begin();c.moveTo(N.x-p*y,N.y-v*y);c.lineTo(N.x-2*Qa+p*y,N.y-2*Ka+v*y);c.moveTo(N.x-Qa-Ka+v*y,N.y-Ka+Qa-p*y);c.lineTo(N.x+Ka-Qa-v*y,N.y-Ka-Qa+p*y);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,
-h,q,l,p,v,w,J,y,Y){var N=p*(w+y+1),Ca=v*(w+y+1),Qa=l.clone();l.x-=N;l.y-=Ca;return function(){c.begin();c.moveTo(Qa.x-Ca,Qa.y+N);c.quadTo(l.x-Ca,l.y+N,l.x,l.y);c.quadTo(l.x+Ca,l.y-N,Qa.x+Ca,Qa.y-N);c.stroke()}});mxMarker.addMarker("async",function(c,h,q,l,p,v,w,J,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var N=l.clone();N.x-=h;N.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){c.begin();c.moveTo(N.x,N.y);J?c.lineTo(N.x-p-v/2,N.y-v+p/2):c.lineTo(N.x+v/2-p,N.y-v-p/2);c.lineTo(N.x-p,N.y-v);c.close();Y?c.fillAndStroke():
-c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(h,q,l,p,v,w,J,y,Y,N){v*=J+Y;w*=J+Y;var Ca=p.clone();return function(){h.begin();h.moveTo(Ca.x,Ca.y);y?h.lineTo(Ca.x-v-w/c,Ca.y-w+v/c):h.lineTo(Ca.x+w/c-v,Ca.y-w-v/c);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(c,h,q){return Xa(c,["width"],h,function(l,p,v,w,J){J=c.shape.getEdgeWidth()*c.view.scale+q;return new mxPoint(w.x+p*l/4+v*J/2,w.y+v*l/4-p*J/2)},function(l,p,v,w,J,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
-w.y,J.x,J.y,y.x,y.y));c.style.width=Math.round(2*l)/c.view.scale-q})},Xa=function(c,h,q,l,p){return Ra(c,h,function(v){var w=c.absolutePoints,J=w.length-1;v=c.view.translate;var y=c.view.scale,Y=q?w[0]:w[J];w=q?w[1]:w[J-1];J=w.x-Y.x;var N=w.y-Y.y,Ca=Math.sqrt(J*J+N*N);Y=l.call(this,Ca,J/Ca,N/Ca,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,J){var y=c.absolutePoints,Y=y.length-1;v=c.view.translate;var N=c.view.scale,Ca=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ca.x;var Qa=y.y-Ca.y,Ka=Math.sqrt(Y*
-Y+Qa*Qa);w.x=(w.x+v.x)*N;w.y=(w.y+v.y)*N;p.call(this,Ka,Y/Ka,Qa/Ka,Ca,y,w,J)})},ib=function(c){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),p=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
+StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var h=this.editorUi.getSelectionState(),q=c.apply(this,arguments);"umlFrame"==h.style.shape&&q.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return q}}();mxMarker.addMarker("dash",function(c,h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-M/2-Ba/2,l.y-Ba/2+M/2);c.lineTo(l.x+Ba/2-3*M/2,l.y-3*Ba/2-M/2);c.stroke()}});mxMarker.addMarker("box",
+function(c,h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1),Qa=l.x+M/2,Ja=l.y+Ba/2;l.x-=M;l.y-=Ba;return function(){c.begin();c.moveTo(Qa-M/2-Ba/2,Ja-Ba/2+M/2);c.lineTo(Qa-M/2+Ba/2,Ja-Ba/2-M/2);c.lineTo(Qa+Ba/2-3*M/2,Ja-3*Ba/2-M/2);c.lineTo(Qa-Ba/2-3*M/2,Ja-3*Ba/2+M/2);c.close();Y?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1);return function(){c.begin();c.moveTo(l.x-M/2-Ba/2,l.y-Ba/2+M/2);c.lineTo(l.x+Ba/2-3*M/2,l.y-3*Ba/2-M/2);
+c.moveTo(l.x-M/2+Ba/2,l.y-Ba/2-M/2);c.lineTo(l.x-Ba/2-3*M/2,l.y-3*Ba/2+M/2);c.stroke()}});mxMarker.addMarker("circle",Pa);mxMarker.addMarker("circlePlus",function(c,h,q,l,p,v,w,I,y,Y){var M=l.clone(),Ba=Pa.apply(this,arguments),Qa=p*(w+2*y),Ja=v*(w+2*y);return function(){Ba.apply(this,arguments);c.begin();c.moveTo(M.x-p*y,M.y-v*y);c.lineTo(M.x-2*Qa+p*y,M.y-2*Ja+v*y);c.moveTo(M.x-Qa-Ja+v*y,M.y-Ja+Qa-p*y);c.lineTo(M.x+Ja-Qa-v*y,M.y-Ja-Qa+p*y);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,
+h,q,l,p,v,w,I,y,Y){var M=p*(w+y+1),Ba=v*(w+y+1),Qa=l.clone();l.x-=M;l.y-=Ba;return function(){c.begin();c.moveTo(Qa.x-Ba,Qa.y+M);c.quadTo(l.x-Ba,l.y+M,l.x,l.y);c.quadTo(l.x+Ba,l.y-M,Qa.x+Ba,Qa.y-M);c.stroke()}});mxMarker.addMarker("async",function(c,h,q,l,p,v,w,I,y,Y){h=p*y*1.118;q=v*y*1.118;p*=w+y;v*=w+y;var M=l.clone();M.x-=h;M.y-=q;l.x+=-p-h;l.y+=-v-q;return function(){c.begin();c.moveTo(M.x,M.y);I?c.lineTo(M.x-p-v/2,M.y-v+p/2):c.lineTo(M.x+v/2-p,M.y-v-p/2);c.lineTo(M.x-p,M.y-v);c.close();Y?c.fillAndStroke():
+c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(h,q,l,p,v,w,I,y,Y,M){v*=I+Y;w*=I+Y;var Ba=p.clone();return function(){h.begin();h.moveTo(Ba.x,Ba.y);y?h.lineTo(Ba.x-v-w/c,Ba.y-w+v/c):h.lineTo(Ba.x+w/c-v,Ba.y-w-v/c);h.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var mb=function(c,h,q){return Za(c,["width"],h,function(l,p,v,w,I){I=c.shape.getEdgeWidth()*c.view.scale+q;return new mxPoint(w.x+p*l/4+v*I/2,w.y+v*l/4-p*I/2)},function(l,p,v,w,I,y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,
+w.y,I.x,I.y,y.x,y.y));c.style.width=Math.round(2*l)/c.view.scale-q})},Za=function(c,h,q,l,p){return Ra(c,h,function(v){var w=c.absolutePoints,I=w.length-1;v=c.view.translate;var y=c.view.scale,Y=q?w[0]:w[I];w=q?w[1]:w[I-1];I=w.x-Y.x;var M=w.y-Y.y,Ba=Math.sqrt(I*I+M*M);Y=l.call(this,Ba,I/Ba,M/Ba,Y,w);return new mxPoint(Y.x/y-v.x,Y.y/y-v.y)},function(v,w,I){var y=c.absolutePoints,Y=y.length-1;v=c.view.translate;var M=c.view.scale,Ba=q?y[0]:y[Y];y=q?y[1]:y[Y-1];Y=y.x-Ba.x;var Qa=y.y-Ba.y,Ja=Math.sqrt(Y*
+Y+Qa*Qa);w.x=(w.x+v.x)*M;w.y=(w.y+v.y)*M;p.call(this,Ja,Y/Ja,Qa/Ja,Ba,y,w,I)})},ib=function(c){return function(h){return[Ra(h,["arrowWidth","arrowSize"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),p=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(q.x+(1-p)*q.width,q.y+(1-l)*q.height/2)},function(q,l){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(q.y+q.height/
2-l.y)/q.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(q.x+q.width-l.x)/q.width))})]}},gb=function(c){return function(h){return[Ra(h,["size"],function(q){var l=Math.max(0,Math.min(.5*q.height,parseFloat(mxUtils.getValue(this.state.style,"size",c))));return new mxPoint(q.x,q.y+l)},function(q,l){this.state.style.size=Math.max(0,l.y-q.y)},!0)]}},Wa=function(c,h,q){return function(l){var p=[Ra(l,["size"],function(v){var w=Math.max(0,Math.min(v.width,Math.min(v.height,parseFloat(mxUtils.getValue(this.state.style,
-"size",h)))))*c;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/c)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(c,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(J){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:c));return new mxPoint(J.x+
-Math.max(0,Math.min(.5*J.width,Y*(y?1:J.width))),J.getCenterY())},function(J,y,Y){J=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-J.x:Math.max(0,Math.min(q,(y.x-J.x)/J.width));this.state.style.size=J},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(c,h,q){c=null!=c?c:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,J=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
-"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*c,J*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(c,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(c){var h=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));return h}},fb=function(c,h){return Ra(c,
+"size",h)))))*c;return new mxPoint(v.x+w,v.y+w)},function(v,w){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(v.width,w.x-v.x),Math.min(v.height,w.y-v.y)))/c)},!1)];q&&mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},qb=function(c,h,q,l,p){q=null!=q?q:.5;return function(v){var w=[Ra(v,["size"],function(I){var y=null!=p?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,Y=parseFloat(mxUtils.getValue(this.state.style,"size",y?p:c));return new mxPoint(I.x+
+Math.max(0,Math.min(.5*I.width,Y*(y?1:I.width))),I.getCenterY())},function(I,y,Y){I=null!=p&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?y.x-I.x:Math.max(0,Math.min(q,(y.x-I.x)/I.width));this.state.style.size=I},!1,l)];h&&mxUtils.getValue(v.style,mxConstants.STYLE_ROUNDED,!1)&&w.push(fb(v));return w}},tb=function(c,h,q){c=null!=c?c:.5;return function(l){var p=[Ra(l,["size"],function(v){var w=null!=q?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,I=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,
+"size",w?q:h)));return new mxPoint(v.x+Math.min(.75*v.width*c,I*(w?.75:.75*v.width)),v.y+v.height/4)},function(v,w){v=null!=q&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?w.x-v.x:Math.max(0,Math.min(c,(w.x-v.x)/v.width*.75));this.state.style.size=v},!1,!0)];mxUtils.getValue(l.style,mxConstants.STYLE_ROUNDED,!1)&&p.push(fb(l));return p}},nb=function(){return function(c){var h=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));return h}},fb=function(c,h){return Ra(c,
[mxConstants.STYLE_ARCSIZE],function(q){var l=null!=h?h:q.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var p=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(q.x+q.width-Math.min(q.width/2,p),q.y+l)}p=Math.max(0,parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(q.x+q.width-Math.min(Math.max(q.width/2,q.height/2),Math.min(q.width,q.height)*
-p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(c,h,q,l,p,v,w){var J=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);J.execute=function(Y){for(var N=0;N<h.length;N++)this.copyStyle(h[N]);
-w&&w(Y)};J.getPosition=q;J.setPosition=l;J.ignoreGrid=null!=p?p:!0;if(v){var y=J.positionChanged;J.positionChanged=function(){y.apply(this,arguments);c.view.invalidate(this.state.cell);c.view.validate()}}return J},rb={link:function(c){return[mb(c,!0,10),mb(c,!1,10)]},flexArrow:function(c){var h=c.view.graph.gridSize/c.view.scale,q=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!0,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
-3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
-!0,function(l,p,v,w,J){l=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
+p),q.y+l)},function(q,l,p){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(q.width,2*(q.x+q.width-l.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(q.width-l.x+q.x)/Math.min(q.width,q.height))))})},Ra=function(c,h,q,l,p,v,w){var I=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);I.execute=function(Y){for(var M=0;M<h.length;M++)this.copyStyle(h[M]);
+w&&w(Y)};I.getPosition=q;I.setPosition=l;I.ignoreGrid=null!=p?p:!0;if(v){var y=I.positionChanged;I.positionChanged=function(){y.apply(this,arguments);c.view.invalidate(this.state.cell);c.view.validate()}}return I},rb={link:function(c){return[mb(c,!0,10),mb(c,!1,10)]},flexArrow:function(c){var h=c.view.graph.gridSize/c.view.scale,q=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Za(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(l,p,v,w,I){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
+3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(Y.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),q.push(Za(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],
+!0,function(l,p,v,w,I){l=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*c.view.scale)+v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)-p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(p-c.shape.strokewidth)/
3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<h/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),
-Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<h&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Xa(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
-c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
-Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),q.push(Xa(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,J){l=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;J=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(J+c.shape.strokewidth*
-c.view.scale)-v*l/2,w.y+v*(J+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,J,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,J.x,J.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],
+Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<h&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(q.push(Za(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,I){l=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*
+c.view.scale)-v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*l)/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(Y.getEvent())||
+Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),q.push(Za(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(l,p,v,w,I){l=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;I=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(w.x+p*(I+c.shape.strokewidth*
+c.view.scale)-v*l/2,w.y+v*(I+c.shape.strokewidth*c.view.scale)+p*l/2)},function(l,p,v,w,I,y,Y){l=Math.sqrt(mxUtils.ptSegDistSq(w.x,w.y,I.x,I.y,y.x,y.y));p=mxUtils.ptLineDist(w.x,w.y,w.x+v,w.y-p,y.x,y.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(p-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*l)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(Y.getEvent())||mxEvent.isControlDown(Y.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],
c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(Y.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<h/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<h&&(c.style.endWidth=c.style.startWidth))})));return q},swimlane:function(c){var h=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var q=parseFloat(mxUtils.getValue(c.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));h.push(fb(c,q/2))}h.push(Ra(c,[mxConstants.STYLE_STARTSIZE],function(l){var p=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(c.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(l.getCenterX(),l.y+Math.max(0,Math.min(l.height,p))):new mxPoint(l.x+Math.max(0,Math.min(l.width,p)),l.getCenterY())},function(l,p){c.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,
-mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=c.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(c.cell)||p.isTableCell(c.cell))){l=p.getSwimlaneDirection(c.style);var v=p.model.getParent(c.cell);v=p.model.getChildCells(v,!0);for(var w=[],J=0;J<v.length;J++)v[J]!=c.cell&&p.isSwimlane(v[J])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[J]))==
-l&&w.push(v[J]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(c){return[Ra(c,
+mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(l.height,p.y-l.y))):Math.round(Math.max(0,Math.min(l.width,p.x-l.x)))},!1,null,function(l){var p=c.view.graph;if(!mxEvent.isShiftDown(l.getEvent())&&!mxEvent.isControlDown(l.getEvent())&&(p.isTableRow(c.cell)||p.isTableCell(c.cell))){l=p.getSwimlaneDirection(c.style);var v=p.model.getParent(c.cell);v=p.model.getChildCells(v,!0);for(var w=[],I=0;I<v.length;I++)v[I]!=c.cell&&p.isSwimlane(v[I])&&p.getSwimlaneDirection(p.getCurrentCellStyle(v[I]))==
+l&&w.push(v[I]);p.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],w)}}));return h},label:nb(),ext:nb(),rectangle:nb(),triangle:nb(),rhombus:nb(),umlLifeline:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},umlFrame:function(c){return[Ra(c,
["width","height"],function(h){var q=Math.max(oa.prototype.corner,Math.min(h.width,mxUtils.getValue(this.state.style,"width",oa.prototype.width))),l=Math.max(1.5*oa.prototype.corner,Math.min(h.height,mxUtils.getValue(this.state.style,"height",oa.prototype.height)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.width=Math.round(Math.max(oa.prototype.corner,Math.min(h.width,q.x-h.x)));this.state.style.height=Math.round(Math.max(1.5*oa.prototype.corner,Math.min(h.height,q.y-h.y)))},
-!1)]},process:function(c){var h=[Ra(c,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
+!1)]},process:function(c){var h=[Ra(c,["size"],function(q){var l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",ia.prototype.size));return l?new mxPoint(q.x+p,q.y+q.height/4):new mxPoint(q.x+q.width*p,q.y+q.height/4)},function(q,l){q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*q.width,l.x-q.x)):Math.max(0,Math.min(.5,(l.x-q.x)/q.width));this.state.style.size=q},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,
!1)&&h.push(fb(c));return h},cross:function(c){return[Ra(c,["size"],function(h){var q=Math.min(h.width,h.height);q=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ia.prototype.size)))*q/2;return new mxPoint(h.getCenterX()-q,h.getCenterY()-q)},function(h,q){var l=Math.min(h.width,h.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,h.getCenterY()-q.y)/l*2,Math.max(0,h.getCenterX()-q.x)/l*2)))})]},note:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,
Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",u.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},note2:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(h.width,Math.min(h.height,parseFloat(mxUtils.getValue(this.state.style,"size",m.prototype.size)))));return new mxPoint(h.x+h.width-q,h.y+q)},
-function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(c){var h=[Ra(c,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Ya.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
+function(h,q){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(h.width,h.x+h.width-q.x),Math.min(h.height,q.y-h.y))))})]},manualInput:function(c){var h=[Ra(c,["size"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",Xa.prototype.size)));return new mxPoint(q.x+q.width/4,q.y+3*l/4)},function(q,l){this.state.style.size=Math.round(Math.max(0,Math.min(q.height,4*(l.y-q.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
return h},dataStorage:function(c){return[Ra(c,["size"],function(h){var q="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),l=parseFloat(mxUtils.getValue(this.state.style,"size",q?z.prototype.fixedSize:z.prototype.size));return new mxPoint(h.x+h.width-l*(q?1:h.width),h.getCenterY())},function(h,q){h="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(h.width,h.x+h.width-q.x)):Math.max(0,Math.min(1,(h.x+h.width-q.x)/h.width));this.state.style.size=h},!1)]},callout:function(c){var h=
[Ra(c,["size","position"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));mxUtils.getValue(this.state.style,"base",ba.prototype.base);return new mxPoint(q.x+p*q.width,q.y+q.height-l)},function(q,l){mxUtils.getValue(this.state.style,"base",ba.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(q.height,q.y+q.height-l.y)));this.state.style.position=
Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["position2"],function(q){var l=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ba.prototype.position2)));return new mxPoint(q.x+l*q.width,q.y+q.height)},function(q,l){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(l.x-q.x)/q.width)))/100},!1),Ra(c,["base"],function(q){var l=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"size",ba.prototype.size))),p=Math.max(0,Math.min(1,
mxUtils.getValue(this.state.style,"position",ba.prototype.position))),v=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"base",ba.prototype.base)));return new mxPoint(q.x+Math.min(q.width,p*q.width+v),q.y+q.height-l)},function(q,l){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ba.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(q.width,l.x-q.x-p*q.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&h.push(fb(c));
-return h},internalStorage:function(c){var h=[Ra(c,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&
-h.push(fb(c));return h},module:function(c){return[Ra(c,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",za.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",za.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
-q.y-h.y))/2)})]},corner:function(c){return[Ra(c,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",cb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",cb.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(c){return[Ra(c,["dx","dy"],function(h){var q=
-Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",$a.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(c){return[Ra(c,["tabWidth","tabHeight"],function(h){var q=
-Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"tabWidth",F.prototype.tabWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"tabHeight",F.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",F.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(q=h.width-q);return new mxPoint(h.x+q,h.y+l)},function(h,q){var l=Math.max(0,Math.min(h.width,q.x-h.x));mxUtils.getValue(this.state.style,"tabPosition",F.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&
+return h},internalStorage:function(c){var h=[Ra(c,["dx","dy"],function(q){var l=Math.max(0,Math.min(q.width,mxUtils.getValue(this.state.style,"dx",Va.prototype.dx))),p=Math.max(0,Math.min(q.height,mxUtils.getValue(this.state.style,"dy",Va.prototype.dy)));return new mxPoint(q.x+l,q.y+p)},function(q,l){this.state.style.dx=Math.round(Math.max(0,Math.min(q.width,l.x-q.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(q.height,l.y-q.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&
+h.push(fb(c));return h},module:function(c){return[Ra(c,["jettyWidth","jettyHeight"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"jettyWidth",Ca.prototype.jettyWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"jettyHeight",Ca.prototype.jettyHeight)));return new mxPoint(h.x+q/2,h.y+2*l)},function(h,q){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(h.height,
+q.y-h.y))/2)})]},corner:function(c){return[Ra(c,["dx","dy"],function(h){var q=Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",Ya.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",Ya.prototype.dy)));return new mxPoint(h.x+q,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,Math.min(h.width,q.x-h.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},tee:function(c){return[Ra(c,["dx","dy"],function(h){var q=
+Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"dx",bb.prototype.dx))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"dy",bb.prototype.dy)));return new mxPoint(h.x+(h.width+q)/2,h.y+l)},function(h,q){this.state.style.dx=Math.round(Math.max(0,2*Math.min(h.width/2,q.x-h.x-h.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},singleArrow:ib(1),doubleArrow:ib(.5),folder:function(c){return[Ra(c,["tabWidth","tabHeight"],function(h){var q=
+Math.max(0,Math.min(h.width,mxUtils.getValue(this.state.style,"tabWidth",G.prototype.tabWidth))),l=Math.max(0,Math.min(h.height,mxUtils.getValue(this.state.style,"tabHeight",G.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",G.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(q=h.width-q);return new mxPoint(h.x+q,h.y+l)},function(h,q){var l=Math.max(0,Math.min(h.width,q.x-h.x));mxUtils.getValue(this.state.style,"tabPosition",G.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&
(l=h.width-l);this.state.style.tabWidth=Math.round(l);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(h.height,q.y-h.y)))},!1)]},document:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Q.prototype.size))));return new mxPoint(h.x+3*h.width/4,h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},tape:function(c){return[Ra(c,["size"],function(h){var q=
-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",O.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(c){return[Ra(c,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
-Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(A.prototype.size),offPageConnector:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",M.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(c){var h=[Graph.createHandle(c,["size"],function(q){var l=
+Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",N.prototype.size))));return new mxPoint(h.getCenterX(),h.y+q*h.height/2)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(q.y-h.y)/h.height*2))},!1)]},isoCube2:function(c){return[Ra(c,["isoAngle"],function(h){var q=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",r.isoAngle))))*Math.PI/200;return new mxPoint(h.x,h.y+Math.min(h.width*Math.tan(q),.5*h.height))},function(h,q){this.state.style.isoAngle=
+Math.max(0,50*(q.y-h.y)/h.height)},!0)]},cylinder2:gb(x.prototype.size),cylinder3:gb(B.prototype.size),offPageConnector:function(c){return[Ra(c,["size"],function(h){var q=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",K.prototype.size))));return new mxPoint(h.getCenterX(),h.y+(1-q)*h.height)},function(h,q){this.state.style.size=Math.max(0,Math.min(1,(h.y+h.height-q.y)/h.height))},!1)]},"mxgraph.basic.rect":function(c){var h=[Graph.createHandle(c,["size"],function(q){var l=
Math.max(0,Math.min(q.width/2,q.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(q.x+l,q.y+l)},function(q,l){this.state.style.size=Math.round(100*Math.max(0,Math.min(q.height/2,q.width/2,l.x-q.x)))/100})];c=Graph.createHandle(c,["indent"],function(q){var l=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(q.x+.75*q.width,q.y+l*q.height/200)},function(q,l){this.state.style.indent=Math.round(100*
-Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(c);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(I.prototype.size,!0,.5,!0,I.prototype.fixedSize),curlyBracket:qb(Z.prototype.size,!1),display:qb(Ea.prototype.size,!1),cube:Wa(1,d.prototype.size,!1),card:Wa(.5,D.prototype.size,!0),loopLimit:Wa(.5,G.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,R.prototype.size,R.prototype.fixedSize)};Graph.createHandle=
+Math.max(0,Math.min(100,200*(l.y-q.y)/q.height)))/100});h.push(c);return h},step:qb(qa.prototype.size,!0,null,!0,qa.prototype.fixedSize),hexagon:qb(O.prototype.size,!0,.5,!0,O.prototype.fixedSize),curlyBracket:qb(Z.prototype.size,!1),display:qb(Fa.prototype.size,!1),cube:Wa(1,d.prototype.size,!1),card:Wa(.5,D.prototype.size,!0),loopLimit:Wa(.5,H.prototype.size,!0),trapezoid:tb(.5,P.prototype.size,P.prototype.fixedSize),parallelogram:tb(1,R.prototype.size,R.prototype.fixedSize)};Graph.createHandle=
Ra;Graph.handleFactory=rb;var xb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=xb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var h=this.state.style.shape;null==mxCellRenderer.defaultShapes[h]&&null==mxStencilRegistry.getStencil(h)?h=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(h=mxConstants.SHAPE_SWIMLANE);h=rb[h];null==h&&null!=this.state.shape&&this.state.shape.isRoundable()&&
(h=rb[mxConstants.SHAPE_RECTANGLE]);null!=h&&(h=h(this.state),null!=h&&(c=null==c?h:c.concat(h)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var kb=new mxPoint(1,0),hb=new mxPoint(1,0),ob=mxUtils.toRadians(-30);kb=mxUtils.getRotatedPoint(kb,
-Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,h,q,l,p){var v=c.view;l=null!=l&&0<l.length?l[0]:null;var w=c.absolutePoints,J=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(c,l));null==J&&null!=h&&(J=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,N=hb.x,Ca=hb.y,Qa="horizontal"==mxUtils.getValue(c.style,
-"elbow","horizontal");if(null!=w&&null!=J){c=function(la,pa,na){la-=Ka.x;var ma=pa-Ka.y;pa=(Ca*la-N*ma)/(y*Ca-Y*N);la=(Y*la-y*ma)/(Y*N-y*Ca);Qa?(na&&(Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa),p.push(Ka)),Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la)):(na&&(Ka=new mxPoint(Ka.x+N*la,Ka.y+Ca*la),p.push(Ka)),Ka=new mxPoint(Ka.x+y*pa,Ka.y+Y*pa));p.push(Ka)};var Ka=J;null==l&&(l=new mxPoint(J.x+(w.x-J.x)/2,J.y+(w.y-J.y)/2));c(l.x,l.y,!0);c(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
+Math.cos(ob),Math.sin(ob));var lb=mxUtils.toRadians(-150);hb=mxUtils.getRotatedPoint(hb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,h,q,l,p){var v=c.view;l=null!=l&&0<l.length?l[0]:null;var w=c.absolutePoints,I=w[0];w=w[w.length-1];null!=l&&(l=v.transformControlPoint(c,l));null==I&&null!=h&&(I=new mxPoint(h.getCenterX(),h.getCenterY()));null==w&&null!=q&&(w=new mxPoint(q.getCenterX(),q.getCenterY()));var y=kb.x,Y=kb.y,M=hb.x,Ba=hb.y,Qa="horizontal"==mxUtils.getValue(c.style,
+"elbow","horizontal");if(null!=w&&null!=I){c=function(la,pa,na){la-=Ja.x;var ma=pa-Ja.y;pa=(Ba*la-M*ma)/(y*Ba-Y*M);la=(Y*la-y*ma)/(Y*M-y*Ba);Qa?(na&&(Ja=new mxPoint(Ja.x+y*pa,Ja.y+Y*pa),p.push(Ja)),Ja=new mxPoint(Ja.x+M*la,Ja.y+Ba*la)):(na&&(Ja=new mxPoint(Ja.x+M*la,Ja.y+Ba*la),p.push(Ja)),Ja=new mxPoint(Ja.x+y*pa,Ja.y+Y*pa));p.push(Ja)};var Ja=I;null==l&&(l=new mxPoint(I.x+(w.x-I.x)/2,I.y+(w.y-I.y)/2));c(l.x,l.y,!0);c(w.x,w.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);
var sb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,h){if(h==mxEdgeStyle.IsometricConnector){var q=new mxElbowEdgeHandler(c);q.snapToTerminals=!1;return q}return sb.apply(this,arguments)};e.prototype.constraints=[];k.prototype.getConstraints=function(c,h,q){c=[];var l=Math.tan(mxUtils.toRadians(30)),p=(.5-l)/2;l=Math.min(h,q/(.5+l));h=(h-l)/2;q=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h+.5*l,q+l*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.25*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+l,q+.75*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h+.5*l,q+(1-p)*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q+.75*l));return c};r.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;l=Math.min(h*
Math.tan(l),.5*q);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
@@ -3736,62 +3736,62 @@ Math.tan(l),.5*q);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.pus
0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q-l)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,
q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),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(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(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,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))];Da.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=
-mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
+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))];Ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=
+mxRectangleShape.prototype.constraints;S.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;u.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,
0),!1));return c};D.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));h>=2*l&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};d.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(q+l)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return c};A.prototype.getConstraints=function(c,h,q){c=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,
+0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-l)));return c};B.prototype.getConstraints=function(c,h,q){c=[];h=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-h));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,h+.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(1,
-0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return c};F.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
+0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-h-.5*(.5*q-h)));c.push(new mxConnectionConstraint(new mxPoint(.145,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,0),!1,null,0,.29*h));c.push(new mxConnectionConstraint(new mxPoint(.855,1),!1,null,0,.29*-h));c.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-h));return c};G.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,
"tabWidth",this.tabWidth)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
.5*(h+l),p))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-.5*l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,p)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(q-p)+p));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,q));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};bb.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxEllipse.prototype.constraints;da.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
-mxEllipse.prototype.constraints;Ya.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Ea.prototype.getConstraints=function(c,h,q){c=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-.5*(p+h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};za.prototype.getConstraints=function(c,h,q){h=parseFloat(mxUtils.getValue(c,"jettyWidth",za.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,
-"jettyHeight",za.prototype.jettyHeight));var l=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,h),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,
+0),!1,null,0,q));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};Va.prototype.constraints=mxRectangleShape.prototype.constraints;z.prototype.constraints=mxRectangleShape.prototype.constraints;X.prototype.constraints=mxEllipse.prototype.constraints;ja.prototype.constraints=mxEllipse.prototype.constraints;ea.prototype.constraints=mxEllipse.prototype.constraints;Ma.prototype.constraints=
+mxEllipse.prototype.constraints;Xa.prototype.constraints=mxRectangleShape.prototype.constraints;La.prototype.constraints=mxRectangleShape.prototype.constraints;Fa.prototype.getConstraints=function(c,h,q){c=[];var l=Math.min(h,q/2),p=Math.min(h-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*h);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
+.5*(p+h-l),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(p+h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};Ca.prototype.getConstraints=function(c,h,q){h=parseFloat(mxUtils.getValue(c,"jettyWidth",Ca.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,
+"jettyHeight",Ca.prototype.jettyHeight));var l=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,h),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,
h),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(q-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(q-.5*c,3.5*c))];q>5*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,h));q>8*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h));q>
-15*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};G.prototype.constraints=mxRectangleShape.prototype.constraints;M.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)];V.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,
+15*c&&l.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,h));return l};H.prototype.constraints=mxRectangleShape.prototype.constraints;K.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)];T.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)];ra.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)];C.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)];O.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,
+.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];N.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)];qa.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)];ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,
+.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)];sa.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)];R.prototype.constraints=mxRectangleShape.prototype.constraints;P.prototype.constraints=mxRectangleShape.prototype.constraints;Q.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;$a.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
+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;bb.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*h+.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(h+l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*h-.25*l,p));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return c};cb.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*p));return c};Ya.prototype.getConstraints=function(c,h,q){c=[];var l=Math.max(0,Math.min(h,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),p=Math.max(0,Math.min(q,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+l),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(q+p)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*l,q));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
-1),!1));return c};jb.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)];ca.prototype.getConstraints=
+1),!1));return c};jb.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)];da.prototype.getConstraints=
function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,
-.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return c};t.prototype.getConstraints=function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h-p),q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,q-l));return c};t.prototype.getConstraints=function(c,h,q){c=[];var l=q*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),p=h*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));l=(q-l)/2;c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h-p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*h,q-l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));return c};Ia.prototype.getConstraints=
function(c,h,q){c=[];var l=Math.min(q,h),p=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(q-p)/2;var v=l+p,w=(h-p)/2;p=w+p;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,0));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,q));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,q-.5*l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),l));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,h,l));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(h+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,l));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,l));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return c};aa.prototype.constraints=null;B.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
-.9),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];Ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];va.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*w,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,w,l));return c};aa.prototype.constraints=null;A.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,
+.9),!1)];E.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];Ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ua.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()}
-Actions.prototype.init=function(){function a(m){e.escape();m=e.deleteCells(e.getDeletableCells(e.getSelectionCells()),m);null!=m&&e.setSelectionCells(m)}function b(){if(!e.isSelectionEmpty()){e.getModel().beginUpdate();try{for(var m=e.getSelectionCells(),r=0;r<m.length;r++)e.cellLabelChanged(m[r],"")}finally{e.getModel().endUpdate()}}}function f(m,r,x,A,C){C.getModel().beginUpdate();try{var F=C.getCellGeometry(m);null!=F&&x&&A&&(x/=A,F=F.clone(),1<x?F.height=F.width/x:F.width=F.height*x,C.getModel().setGeometry(m,
-F));C.setCellStyles(mxConstants.STYLE_CLIP_PATH,r,[m]);C.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[m])}finally{C.getModel().endUpdate()}}var d=this.editorUi,g=d.editor,e=g.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&e.isEnabled()};this.addAction("new...",function(){e.openLink(d.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";d.openFile()});this.addAction("smartFit",function(){e.popupMenuHandler.hideMenu();var m=e.view.scale,
+Actions.prototype.init=function(){function a(m){e.escape();m=e.deleteCells(e.getDeletableCells(e.getSelectionCells()),m);null!=m&&e.setSelectionCells(m)}function b(){if(!e.isSelectionEmpty()){e.getModel().beginUpdate();try{for(var m=e.getSelectionCells(),r=0;r<m.length;r++)e.cellLabelChanged(m[r],"")}finally{e.getModel().endUpdate()}}}function f(m,r,x,B,C){C.getModel().beginUpdate();try{var G=C.getCellGeometry(m);null!=G&&x&&B&&(x/=B,G=G.clone(),1<x?G.height=G.width/x:G.width=G.height*x,C.getModel().setGeometry(m,
+G));C.setCellStyles(mxConstants.STYLE_CLIP_PATH,r,[m]);C.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[m])}finally{C.getModel().endUpdate()}}var d=this.editorUi,g=d.editor,e=g.graph,k=function(){return Action.prototype.isEnabled.apply(this,arguments)&&e.isEnabled()};this.addAction("new...",function(){e.openLink(d.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";d.openFile()});this.addAction("smartFit",function(){e.popupMenuHandler.hideMenu();var m=e.view.scale,
r=e.view.translate.x,x=e.view.translate.y;d.actions.get("resetView").funct();1E-5>Math.abs(m-e.view.scale)&&r==e.view.translate.x&&x==e.view.translate.y&&d.actions.get(e.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){e.isEnabled()&&(e.isSelectionEmpty()?d.actions.get("smartFit").funct():e.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){d.hideDialog()}));
-window.openFile.setConsumer(mxUtils.bind(this,function(m,r){try{var x=mxUtils.parseXml(m);g.graph.setSelectionCells(g.graph.importGraphModel(x.documentElement))}catch(A){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+A.message)}}));d.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){d.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){d.saveFile(!0)},null,
+window.openFile.setConsumer(mxUtils.bind(this,function(m,r){try{var x=mxUtils.parseXml(m);g.graph.setSelectionCells(g.graph.importGraphModel(x.documentElement))}catch(B){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+B.message)}}));d.showDialog((new OpenDialog(this)).container,320,220,!0,!0,function(){window.openFile=null})}).isEnabled=k;this.addAction("save",function(){d.saveFile(!1)},null,null,Editor.ctrlKey+"+S").isEnabled=k;this.addAction("saveAs...",function(){d.saveFile(!0)},null,
null,Editor.ctrlKey+"+Shift+S").isEnabled=k;this.addAction("export...",function(){d.showDialog((new ExportDialog(d)).container,300,340,!0,!0)});this.addAction("editDiagram...",function(){var m=new EditDiagramDialog(d);d.showDialog(m.container,620,420,!0,!1);m.init()});this.addAction("pageSetup...",function(){d.showDialog((new PageSetupDialog(d)).container,320,240,!0,!0)}).isEnabled=k;this.addAction("print...",function(){d.showDialog((new PrintDialog(d)).container,300,180,!0,!0)},null,"sprite-print",
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(e,null,10,10)});this.addAction("undo",function(){d.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){d.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var m=null;try{m=d.copyXml(),null!=m&&e.removeCells(m,!1)}catch(r){}null==m&&mxClipboard.cut(e)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{d.copyXml()}catch(m){}try{mxClipboard.copy(e)}catch(m){d.handleError(m)}},
-null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())){var m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(r){if(null!=r){e.getModel().beginUpdate();try{d.pasteXml(r,!0)}finally{e.getModel().endUpdate()}}else mxClipboard.paste(e)}),m=!0)}catch(r){}m||mxClipboard.paste(e)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(m){function r(A){if(null!=A){for(var C=!0,F=0;F<
-A.length&&C;F++)C=C&&e.model.isEdge(A[F]);var K=e.view.translate;F=e.view.scale;var D=K.x,O=K.y;K=null;if(1==A.length&&C){var Q=e.getCellGeometry(A[0]);null!=Q&&(K=Q.getTerminalPoint(!0))}K=null!=K?K:e.getBoundingBoxFromGeometry(A,C);null!=K&&(C=Math.round(e.snap(e.popupMenuHandler.triggerX/F-D)),F=Math.round(e.snap(e.popupMenuHandler.triggerY/F-O)),e.cellsMoved(A,C-K.x,F-K.y))}}function x(){e.getModel().beginUpdate();try{r(mxClipboard.paste(e))}finally{e.getModel().endUpdate()}}if(e.isEnabled()&&
-!e.isCellLocked(e.getDefaultParent())){m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(A){if(null!=A){e.getModel().beginUpdate();try{r(d.pasteXml(A,!0))}finally{e.getModel().endUpdate()}}else x()}),m=!0)}catch(A){}m||x()}});this.addAction("copySize",function(){var m=e.getSelectionCell();e.isEnabled()&&null!=m&&e.getModel().isVertex(m)&&(m=e.getCellGeometry(m),null!=m&&(d.copiedSize=new mxRectangle(m.x,m.y,m.width,m.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
+null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())){var m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(r){if(null!=r){e.getModel().beginUpdate();try{d.pasteXml(r,!0)}finally{e.getModel().endUpdate()}}else mxClipboard.paste(e)}),m=!0)}catch(r){}m||mxClipboard.paste(e)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(m){function r(B){if(null!=B){for(var C=!0,G=0;G<
+B.length&&C;G++)C=C&&e.model.isEdge(B[G]);var J=e.view.translate;G=e.view.scale;var D=J.x,N=J.y;J=null;if(1==B.length&&C){var Q=e.getCellGeometry(B[0]);null!=Q&&(J=Q.getTerminalPoint(!0))}J=null!=J?J:e.getBoundingBoxFromGeometry(B,C);null!=J&&(C=Math.round(e.snap(e.popupMenuHandler.triggerX/G-D)),G=Math.round(e.snap(e.popupMenuHandler.triggerY/G-N)),e.cellsMoved(B,C-J.x,G-J.y))}}function x(){e.getModel().beginUpdate();try{r(mxClipboard.paste(e))}finally{e.getModel().endUpdate()}}if(e.isEnabled()&&
+!e.isCellLocked(e.getDefaultParent())){m=!1;try{Editor.enableNativeCipboard&&(d.readGraphModelFromClipboard(function(B){if(null!=B){e.getModel().beginUpdate();try{r(d.pasteXml(B,!0))}finally{e.getModel().endUpdate()}}else x()}),m=!0)}catch(B){}m||x()}});this.addAction("copySize",function(){var m=e.getSelectionCell();e.isEnabled()&&null!=m&&e.getModel().isVertex(m)&&(m=e.getCellGeometry(m),null!=m&&(d.copiedSize=new mxRectangle(m.x,m.y,m.width,m.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(e.isEnabled()&&!e.isSelectionEmpty()&&null!=d.copiedSize){e.getModel().beginUpdate();try{for(var m=e.getResizableCells(e.getSelectionCells()),r=0;r<m.length;r++)if(e.getModel().isVertex(m[r])){var x=e.getCellGeometry(m[r]);null!=x&&(x=x.clone(),x.width=d.copiedSize.width,x.height=d.copiedSize.height,e.getModel().setGeometry(m[r],x))}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var m=e.getSelectionCell()||e.getModel().getRoot();e.isEnabled()&&
-null!=m&&(m=m.cloneValue(),null==m||isNaN(m.nodeType)||(d.copiedValue=m))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(m,r){function x(F,K){var D=A.getValue(F);K=F.cloneValue(K);K.removeAttribute("placeholders");null==D||isNaN(D.nodeType)||K.setAttribute("placeholders",D.getAttribute("placeholders"));null!=m&&mxEvent.isShiftDown(m)||K.setAttribute("label",e.convertValueToString(F));A.setValue(F,K)}m=null!=r?r:m;var A=e.getModel();if(e.isEnabled()&&!e.isSelectionEmpty()&&null!=d.copiedValue){A.beginUpdate();
-try{var C=e.getEditableCells(e.getSelectionCells());if(0==C.length)x(A.getRoot(),d.copiedValue);else for(r=0;r<C.length;r++)x(C[r],d.copiedValue)}finally{A.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?b():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+
+null!=m&&(m=m.cloneValue(),null==m||isNaN(m.nodeType)||(d.copiedValue=m))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(m,r){function x(G,J){var D=B.getValue(G);J=G.cloneValue(J);J.removeAttribute("placeholders");null==D||isNaN(D.nodeType)||J.setAttribute("placeholders",D.getAttribute("placeholders"));null!=m&&mxEvent.isShiftDown(m)||J.setAttribute("label",e.convertValueToString(G));B.setValue(G,J)}m=null!=r?r:m;var B=e.getModel();if(e.isEnabled()&&!e.isSelectionEmpty()&&null!=d.copiedValue){B.beginUpdate();
+try{var C=e.getEditableCells(e.getSelectionCells());if(0==C.length)x(B.getRoot(),d.copiedValue);else for(r=0;r<C.length;r++)x(C[r],d.copiedValue)}finally{B.endUpdate()}}},null,null,"Alt+Shift+E");this.addAction("delete",function(m,r){m=null!=r?r:m;null!=m&&mxEvent.isShiftDown(m)?b():a(null!=m&&(mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)||mxEvent.isAltDown(m)))},null,null,"Delete");this.addAction("deleteAll",function(){a(!0)});this.addAction("deleteLabels",function(){b()},null,null,Editor.ctrlKey+
"+Delete");this.addAction("duplicate",function(){try{e.setSelectionCells(e.duplicateCells()),e.scrollCellToVisible(e.getSelectionCell())}catch(m){d.handleError(m)}},null,null,Editor.ctrlKey+"+D");this.put("mergeCells",new Action(mxResources.get("merge"),function(){var m=d.getSelectionState();if(null!=m.mergeCell){e.getModel().beginUpdate();try{e.setCellStyles("rowspan",m.rowspan,[m.mergeCell]),e.setCellStyles("colspan",m.colspan,[m.mergeCell])}finally{e.getModel().endUpdate()}}}));this.put("unmergeCells",
new Action(mxResources.get("unmerge"),function(){var m=d.getSelectionState();if(0<m.cells.length){e.getModel().beginUpdate();try{e.setCellStyles("rowspan",null,m.cells),e.setCellStyles("colspan",null,m.cells)}finally{e.getModel().endUpdate()}}}));this.put("turn",new Action(mxResources.get("turn")+" / "+mxResources.get("reverse"),function(m,r){m=null!=r?r:m;e.turnShapes(e.getResizableCells(e.getSelectionCells()),null!=m?mxEvent.isShiftDown(m):!1)},null,null,mxClient.IS_SF?null:Editor.ctrlKey+"+R"));
this.put("selectConnections",new Action(mxResources.get("selectEdges"),function(m){m=e.getSelectionCell();e.isEnabled()&&null!=m&&e.addSelectionCells(e.getEdges(m))}));this.addAction("selectVertices",function(){e.selectVertices(null,!0)},null,null,Editor.ctrlKey+"+Shift+I");this.addAction("selectEdges",function(){e.selectEdges()},null,null,Editor.ctrlKey+"+Shift+E");this.addAction("selectAll",function(){e.selectAll(null,!0)},null,null,Editor.ctrlKey+"+A");this.addAction("selectNone",function(){e.clearSelection()},
@@ -3800,14 +3800,14 @@ x,m);e.setCellStyles("connectable",x,m)}finally{e.getModel().endUpdate()}}},null
null,null,Editor.ctrlKey+"+End");this.addAction("toFront",function(){e.orderCells(!1)},null,null,Editor.ctrlKey+"+Shift+F");this.addAction("toBack",function(){e.orderCells(!0)},null,null,Editor.ctrlKey+"+Shift+B");this.addAction("bringForward",function(m){e.orderCells(!1,null,!0)});this.addAction("sendBackward",function(m){e.orderCells(!0,null,!0)});this.addAction("group",function(){if(e.isEnabled()){var m=mxUtils.sortCells(e.getSelectionCells(),!0);1!=m.length||e.isTable(m[0])||e.isTableRow(m[0])?
(m=e.getCellsForGroup(m),1<m.length&&e.setSelectionCell(e.groupCells(null,0,m))):e.setCellStyles("container","1")}},null,null,Editor.ctrlKey+"+G");this.addAction("ungroup",function(){if(e.isEnabled()){var m=e.getEditableCells(e.getSelectionCells());e.model.beginUpdate();try{var r=e.ungroupCells();if(null!=m)for(var x=0;x<m.length;x++)e.model.contains(m[x])&&(0==e.model.getChildCount(m[x])&&e.model.isVertex(m[x])&&e.setCellStyles("container","0",[m[x]]),r.push(m[x]))}finally{e.model.endUpdate()}0<
r.length&&e.setSelectionCells(r)}},null,null,Editor.ctrlKey+"+Shift+U");this.addAction("removeFromGroup",function(){if(e.isEnabled()){var m=e.getSelectionCells();if(null!=m){for(var r=[],x=0;x<m.length;x++)e.isTableRow(m[x])||e.isTableCell(m[x])||r.push(m[x]);e.removeCellsFromParent(r)}}});this.addAction("edit",function(){e.isEnabled()&&e.startEditingAtCell()},null,null,"F2/Enter");this.addAction("editData...",function(){var m=e.getSelectionCell()||e.getModel().getRoot();d.showDataDialog(m)},null,
-null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r="";if(mxUtils.isNode(m.value)){var x=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&m.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(x=m.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==x&&(x=m.value.getAttribute("tooltip"));null!=x&&(r=x)}r=new TextareaDialog(d,mxResources.get("editTooltip")+":",r,function(A){e.setTooltipForCell(m,
-A)});d.showDialog(r.container,320,200,!0,!0);r.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var m=e.getLinkForCell(e.getSelectionCell());null!=m&&e.openLink(m)});this.addAction("editLink...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r=e.getLinkForCell(m)||"";d.showLinkDialog(r,mxResources.get("apply"),function(x,A,C){x=mxUtils.trim(x);e.setLinkForCell(m,0<x.length?x:null);e.setAttributeForCell(m,"linkTarget",C)},!0,e.getLinkTargetForCell(m))}},
-null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&(e.clearSelection(),d.actions.get("image").funct())})).isEnabled=k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&d.showLinkDialog("",mxResources.get("insert"),function(m,r,x){m=mxUtils.trim(m);if(0<m.length){var A=null,C=e.getLinkTitle(m);null!=r&&0<r.length&&(A=r[0].iconUrl,
-C=r[0].name||r[0].type,C=C.charAt(0).toUpperCase()+C.substring(1),30<C.length&&(C=C.substring(0,30)+"..."));r=new mxCell(C,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=A?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+A:"spacing=10;"));r.vertex=!0;A=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry([r],!0));r.geometry.x=A.x;r.geometry.y=A.y;e.setAttributeForCell(r,"linkTarget",x);e.setLinkForCell(r,m);e.cellSizeUpdated(r,
-!0);e.getModel().beginUpdate();try{r=e.addCell(r),e.fireEvent(new mxEventObject("cellsInserted","cells",[r]))}finally{e.getModel().endUpdate()}e.setSelectionCell(r);e.scrollCellToVisible(e.getSelectionCell())}},!0)})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){if(e.isEnabled())if(e.cellEditor.isContentEditing()){var m=e.getSelectedElement(),r=e.getParentByName(m,"A",e.cellEditor.textarea),x="";if(null==r&&null!=m&&null!=m.getElementsByTagName)for(var A=m.getElementsByTagName("a"),
-C=0;C<A.length&&null==r;C++)A[C].textContent==m.textContent&&(r=A[C]);null!=r&&"A"==r.nodeName&&(x=r.getAttribute("href")||"",e.selectNode(r));var F=e.cellEditor.saveSelection();d.showLinkDialog(x,mxResources.get("apply"),mxUtils.bind(this,function(K){e.cellEditor.restoreSelection(F);null!=K&&e.insertLink(K)}))}else e.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var m=e.getSelectionCells();if(null!=m){e.getModel().beginUpdate();
+null,Editor.ctrlKey+"+M");this.addAction("editTooltip...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r="";if(mxUtils.isNode(m.value)){var x=null;Graph.translateDiagram&&null!=Graph.diagramLanguage&&m.value.hasAttribute("tooltip_"+Graph.diagramLanguage)&&(x=m.value.getAttribute("tooltip_"+Graph.diagramLanguage));null==x&&(x=m.value.getAttribute("tooltip"));null!=x&&(r=x)}r=new TextareaDialog(d,mxResources.get("editTooltip")+":",r,function(B){e.setTooltipForCell(m,
+B)});d.showDialog(r.container,320,200,!0,!0);r.init()}},null,null,"Alt+Shift+T");this.addAction("openLink",function(){var m=e.getLinkForCell(e.getSelectionCell());null!=m&&e.openLink(m)});this.addAction("editLink...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&null!=m&&e.isCellEditable(m)){var r=e.getLinkForCell(m)||"";d.showLinkDialog(r,mxResources.get("apply"),function(x,B,C){x=mxUtils.trim(x);e.setLinkForCell(m,0<x.length?x:null);e.setAttributeForCell(m,"linkTarget",C)},!0,e.getLinkTargetForCell(m))}},
+null,null,"Alt+Shift+L");this.put("insertImage",new Action(mxResources.get("image")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&(e.clearSelection(),d.actions.get("image").funct())})).isEnabled=k;this.put("insertLink",new Action(mxResources.get("link")+"...",function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&d.showLinkDialog("",mxResources.get("insert"),function(m,r,x){m=mxUtils.trim(m);if(0<m.length){var B=null,C=e.getLinkTitle(m);null!=r&&0<r.length&&(B=r[0].iconUrl,
+C=r[0].name||r[0].type,C=C.charAt(0).toUpperCase()+C.substring(1),30<C.length&&(C=C.substring(0,30)+"..."));r=new mxCell(C,new mxGeometry(0,0,100,40),"fontColor=#0000EE;fontStyle=4;rounded=1;overflow=hidden;"+(null!=B?"shape=label;imageWidth=16;imageHeight=16;spacingLeft=26;align=left;image="+B:"spacing=10;"));r.vertex=!0;B=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry([r],!0));r.geometry.x=B.x;r.geometry.y=B.y;e.setAttributeForCell(r,"linkTarget",x);e.setLinkForCell(r,m);e.cellSizeUpdated(r,
+!0);e.getModel().beginUpdate();try{r=e.addCell(r),e.fireEvent(new mxEventObject("cellsInserted","cells",[r]))}finally{e.getModel().endUpdate()}e.setSelectionCell(r);e.scrollCellToVisible(e.getSelectionCell())}},!0)})).isEnabled=k;this.addAction("link...",mxUtils.bind(this,function(){if(e.isEnabled())if(e.cellEditor.isContentEditing()){var m=e.getSelectedElement(),r=e.getParentByName(m,"A",e.cellEditor.textarea),x="";if(null==r&&null!=m&&null!=m.getElementsByTagName)for(var B=m.getElementsByTagName("a"),
+C=0;C<B.length&&null==r;C++)B[C].textContent==m.textContent&&(r=B[C]);null!=r&&"A"==r.nodeName&&(x=r.getAttribute("href")||"",e.selectNode(r));var G=e.cellEditor.saveSelection();d.showLinkDialog(x,mxResources.get("apply"),mxUtils.bind(this,function(J){e.cellEditor.restoreSelection(G);null!=J&&e.insertLink(J)}))}else e.isSelectionEmpty()?this.get("insertLink").funct():this.get("editLink").funct()})).isEnabled=k;this.addAction("autosize",function(){var m=e.getSelectionCells();if(null!=m){e.getModel().beginUpdate();
try{for(var r=0;r<m.length;r++){var x=m[r];0<e.getModel().getChildCount(x)?e.updateGroupBounds([x],0,!0):e.updateCellSize(x)}}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 m=e.getCommonStyle(e.getSelectionCells());m="1"==mxUtils.getValue(m,"html","0")?null:"1";e.getModel().beginUpdate();try{for(var r=e.getEditableCells(e.getSelectionCells()),
-x=0;x<r.length;x++)if(state=e.getView().getState(r[x]),null!=state){var A=mxUtils.getValue(state.style,"html","0");if("1"==A&&null==m){var C=e.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(C=C.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var F=document.createElement("div");F.innerHTML=e.sanitizeHtml(C);C=mxUtils.extractTextWithWhitespace(F.childNodes);e.cellLabelChanged(state.cell,C);e.setCellStyles("html",m,[r[x]])}else"0"==A&&"1"==m&&(C=mxUtils.htmlEntities(e.convertValueToString(state.cell),
+x=0;x<r.length;x++)if(state=e.getView().getState(r[x]),null!=state){var B=mxUtils.getValue(state.style,"html","0");if("1"==B&&null==m){var C=e.convertValueToString(state.cell);"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(C=C.replace(/\n/g,"").replace(/<br\s*.?>/g,"\n"));var G=document.createElement("div");G.innerHTML=e.sanitizeHtml(C);C=mxUtils.extractTextWithWhitespace(G.childNodes);e.cellLabelChanged(state.cell,C);e.setCellStyles("html",m,[r[x]])}else"0"==B&&"1"==m&&(C=mxUtils.htmlEntities(e.convertValueToString(state.cell),
!1),"0"!=mxUtils.getValue(state.style,"nl2Br","1")&&(C=C.replace(/\n/g,"<br/>")),e.cellLabelChanged(state.cell,e.sanitizeHtml(C)),e.setCellStyles("html",m,[r[x]]))}d.fireEvent(new mxEventObject("styleChanged","keys",["html"],"values",[null!=m?m:"0"],"cells",r))}finally{e.getModel().endUpdate()}});this.addAction("wordWrap",function(){var m=e.getView().getState(e.getSelectionCell()),r="wrap";e.stopEditing();null!=m&&"wrap"==m.style[mxConstants.STYLE_WHITE_SPACE]&&(r=null);e.setCellStyles(mxConstants.STYLE_WHITE_SPACE,
r)});this.addAction("rotation",function(){var m="0",r=e.getView().getState(e.getSelectionCell());null!=r&&(m=r.style[mxConstants.STYLE_ROTATION]||m);m=new FilenameDialog(d,m,mxResources.get("apply"),function(x){null!=x&&0<x.length&&e.setCellStyles(mxConstants.STYLE_ROTATION,x)},mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)");d.showDialog(m.container,375,80,!0,!0);m.init()});this.addAction("resetView",function(){e.zoomTo(1);d.resetScrollbars()},null,null,"Enter/Home");this.addAction("zoomIn",
function(m){e.isFastZoomEnabled()?e.lazyZoom(!0,!0,d.buttonZoomDelay):e.zoomIn()},null,null,Editor.ctrlKey+" + (Numpad) / Alt+Mousewheel");this.addAction("zoomOut",function(m){e.isFastZoomEnabled()?e.lazyZoom(!1,!0,d.buttonZoomDelay):e.zoomOut()},null,null,Editor.ctrlKey+" - (Numpad) / Alt+Mousewheel");this.addAction("fitWindow",function(){var m=e.isSelectionEmpty()?e.getGraphBounds():e.getBoundingBox(e.getSelectionCells()),r=e.view.translate,x=e.view.scale;m.x=m.x/x-r.x;m.y=m.y/x-r.y;m.width/=x;
@@ -3821,9 +3821,9 @@ n.setEnabled(!1);n=this.addAction("tooltips",function(){e.tooltipHandler.setEnab
n.isEnabled=k;n=this.addAction("scrollbars",function(){d.setScrollbars(!d.hasScrollbars())});n.setToggleAction(!0);n.setSelectedCallback(function(){return e.scrollbars});n=this.addAction("pageView",mxUtils.bind(this,function(){d.setPageVisible(!e.pageVisible)}));n.setToggleAction(!0);n.setSelectedCallback(function(){return e.pageVisible});n=this.addAction("connectionArrows",function(){e.connectionArrowsEnabled=!e.connectionArrowsEnabled;d.fireEvent(new mxEventObject("connectionArrowsChanged"))},null,
null,"Alt+Shift+A");n.setToggleAction(!0);n.setSelectedCallback(function(){return e.connectionArrowsEnabled});n=this.addAction("connectionPoints",function(){e.setConnectable(!e.connectionHandler.isEnabled());d.fireEvent(new mxEventObject("connectionPointsChanged"))},null,null,"Alt+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(function(){return e.connectionHandler.isEnabled()});n=this.addAction("copyConnect",function(){e.connectionHandler.setCreateTarget(!e.connectionHandler.isCreateTarget());
d.fireEvent(new mxEventObject("copyConnectChanged"))});n.setToggleAction(!0);n.setSelectedCallback(function(){return e.connectionHandler.isCreateTarget()});n.isEnabled=k;n=this.addAction("autosave",function(){d.editor.setAutosave(!d.editor.autosave)});n.setToggleAction(!0);n.setSelectedCallback(function(){return d.editor.autosave});n.isEnabled=k;n.visible=!1;this.addAction("help",function(){var m="";mxResources.isLanguageSupported(mxClient.language)&&(m="_"+mxClient.language);e.openLink(RESOURCES_PATH+
-"/help"+m+".html")});var u=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){u||(d.showDialog((new AboutDialog(d)).container,320,280,!0,!0,function(){u=!1}),u=!0)}));n=mxUtils.bind(this,function(m,r,x,A){return this.addAction(m,function(){if(null!=x&&e.cellEditor.isContentEditing())x();else{e.stopEditing(!1);e.getModel().beginUpdate();try{var C=e.getEditableCells(e.getSelectionCells());e.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,r,C);(r&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD?e.updateLabelElements(C,function(K){K.style.fontWeight=null;"B"==K.nodeName&&e.replaceElement(K)}):(r&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?e.updateLabelElements(C,function(K){K.style.fontStyle=null;"I"==K.nodeName&&e.replaceElement(K)}):(r&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.updateLabelElements(C,function(K){K.style.textDecoration=null;"U"==K.nodeName&&e.replaceElement(K)});for(var F=0;F<C.length;F++)0==e.model.getChildCount(C[F])&&e.autoSizeCell(C[F],
-!1)}finally{e.getModel().endUpdate()}}},null,null,A)});n("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");n("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");n("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...",
+"/help"+m+".html")});var u=!1;this.put("about",new Action(mxResources.get("about")+" Graph Editor...",function(){u||(d.showDialog((new AboutDialog(d)).container,320,280,!0,!0,function(){u=!1}),u=!0)}));n=mxUtils.bind(this,function(m,r,x,B){return this.addAction(m,function(){if(null!=x&&e.cellEditor.isContentEditing())x();else{e.stopEditing(!1);e.getModel().beginUpdate();try{var C=e.getEditableCells(e.getSelectionCells());e.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,r,C);(r&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD?e.updateLabelElements(C,function(J){J.style.fontWeight=null;"B"==J.nodeName&&e.replaceElement(J)}):(r&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?e.updateLabelElements(C,function(J){J.style.fontStyle=null;"I"==J.nodeName&&e.replaceElement(J)}):(r&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.updateLabelElements(C,function(J){J.style.textDecoration=null;"U"==J.nodeName&&e.replaceElement(J)});for(var G=0;G<C.length;G++)0==e.model.getChildCount(C[G])&&e.autoSizeCell(C[G],
+!1)}finally{e.getModel().endUpdate()}}},null,null,B)});n("bold",mxConstants.FONT_BOLD,function(){document.execCommand("bold",!1,null)},Editor.ctrlKey+"+B");n("italic",mxConstants.FONT_ITALIC,function(){document.execCommand("italic",!1,null)},Editor.ctrlKey+"+I");n("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",
@@ -3832,14 +3832,14 @@ this.addAction("rounded",function(){e.getModel().beginUpdate();try{e.setCellStyl
x="1"==mxUtils.getValue(r,mxConstants.STYLE_ROUNDED,"0")?"0":"1";e.setCellStyles(mxConstants.STYLE_ROUNDED,x);e.setCellStyles(mxConstants.STYLE_CURVED,null);d.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_ROUNDED,mxConstants.STYLE_CURVED],"values",[x,"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 m=e.view.getState(e.getSelectionCell()),r="1";null!=m&&null!=e.getFoldingImage(m)&&(r="0");e.setCellStyles("collapsible",r);d.fireEvent(new mxEventObject("styleChanged","keys",["collapsible"],"values",[r],"cells",e.getSelectionCells()))});this.addAction("editStyle...",
mxUtils.bind(this,function(){var m=e.getEditableCells(e.getSelectionCells());if(null!=m&&0<m.length){var r=e.getModel();r=new TextareaDialog(this.editorUi,mxResources.get("editStyle")+":",r.getStyle(m[0])||"",function(x){null!=x&&e.setCellStyle(mxUtils.trim(x),m)},null,null,400,220);this.editorUi.showDialog(r.container,420,300,!0,!0);r.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 m=e.getSelectionCell();if(null!=m&&e.getModel().isEdge(m)){var r=g.graph.selectionCellsHandler.getHandler(m);if(r instanceof mxEdgeHandler){var x=e.view.translate,A=e.view.scale,C=x.x;x=x.y;m=e.getModel().getParent(m);for(var F=e.getCellGeometry(m);e.getModel().isVertex(m)&&null!=F;)C+=F.x,x+=F.y,m=
-e.getModel().getParent(m),F=e.getCellGeometry(m);C=Math.round(e.snap(e.popupMenuHandler.triggerX/A-C));A=Math.round(e.snap(e.popupMenuHandler.triggerY/A-x));r.addPointAt(r.state,C,A)}}});this.addAction("removeWaypoint",function(){var m=d.actions.get("removeWaypoint");null!=m.handler&&m.handler.removePoint(m.handler.state,m.index)});this.addAction("clearWaypoints",function(m,r){m=null!=r?r:m;var x=e.getSelectionCells();if(null!=x){x=e.getEditableCells(e.addAllEdges(x));e.getModel().beginUpdate();try{for(var A=
-0;A<x.length;A++){var C=x[A];if(e.getModel().isEdge(C)){var F=e.getCellGeometry(C);null!=r&&mxEvent.isShiftDown(m)?(e.setCellStyles(mxConstants.STYLE_EXIT_X,null,[C]),e.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[C])):null!=F&&(F=F.clone(),F.points=null,F.x=0,F.y=0,F.offset=null,e.getModel().setGeometry(C,F))}}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+C");n=this.addAction("subscript",
+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 m=e.getSelectionCell();if(null!=m&&e.getModel().isEdge(m)){var r=g.graph.selectionCellsHandler.getHandler(m);if(r instanceof mxEdgeHandler){var x=e.view.translate,B=e.view.scale,C=x.x;x=x.y;m=e.getModel().getParent(m);for(var G=e.getCellGeometry(m);e.getModel().isVertex(m)&&null!=G;)C+=G.x,x+=G.y,m=
+e.getModel().getParent(m),G=e.getCellGeometry(m);C=Math.round(e.snap(e.popupMenuHandler.triggerX/B-C));B=Math.round(e.snap(e.popupMenuHandler.triggerY/B-x));r.addPointAt(r.state,C,B)}}});this.addAction("removeWaypoint",function(){var m=d.actions.get("removeWaypoint");null!=m.handler&&m.handler.removePoint(m.handler.state,m.index)});this.addAction("clearWaypoints",function(m,r){m=null!=r?r:m;var x=e.getSelectionCells();if(null!=x){x=e.getEditableCells(e.addAllEdges(x));e.getModel().beginUpdate();try{for(var B=
+0;B<x.length;B++){var C=x[B];if(e.getModel().isEdge(C)){var G=e.getCellGeometry(C);null!=r&&mxEvent.isShiftDown(m)?(e.setCellStyles(mxConstants.STYLE_EXIT_X,null,[C]),e.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[C]),e.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[C])):null!=G&&(G=G.clone(),G.points=null,G.x=0,G.y=0,G.offset=null,e.getModel().setGeometry(C,G))}}}finally{e.getModel().endUpdate()}}},null,null,"Alt+Shift+C");n=this.addAction("subscript",
mxUtils.bind(this,function(){e.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");n=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 m=mxResources.get("image")+" ("+mxResources.get("url")+"):",r=e.getView().getState(e.getSelectionCell()),
-x="",A=null;null!=r&&(x=r.style[mxConstants.STYLE_IMAGE]||x,A=r.style[mxConstants.STYLE_CLIP_PATH]||A);var C=e.cellEditor.saveSelection();d.showImageDialog(m,x,function(F,K,D,O,Q,R){if(e.cellEditor.isContentEditing())e.cellEditor.restoreSelection(C),e.insertImage(F,K,D);else{var P=e.getSelectionCells();if(null!=F&&(0<F.length||0<P.length)){var Z=null;e.getModel().beginUpdate();try{if(0==P.length){P=[e.insertVertex(e.getDefaultParent(),null,"",0,0,K,D,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-var T=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(P,!0));P[0].geometry.x=T.x;P[0].geometry.y=T.y;null!=O&&f(P[0],O,Q,R,e);Z=P;e.fireEvent(new mxEventObject("cellsInserted","cells",Z))}e.setCellStyles(mxConstants.STYLE_IMAGE,0<F.length?F:null,P);var U=e.getCurrentCellStyle(P[0]);"image"!=U[mxConstants.STYLE_SHAPE]&&"label"!=U[mxConstants.STYLE_SHAPE]?e.setCellStyles(mxConstants.STYLE_SHAPE,"image",P):0==F.length&&e.setCellStyles(mxConstants.STYLE_SHAPE,null,P);if(1==e.getSelectionCount()&&
-null!=K&&null!=D){var fa=P[0],ha=e.getModel().getGeometry(fa);null!=ha&&(ha=ha.clone(),ha.width=K,ha.height=D,e.getModel().setGeometry(fa,ha));null!=O?f(fa,O,Q,R,e):e.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,P)}}finally{e.getModel().endUpdate()}null!=Z&&(e.setSelectionCells(Z),e.scrollCellToVisible(Z[0]))}}},e.cellEditor.isContentEditing(),!e.cellEditor.isContentEditing(),!0,A)}}).isEnabled=k;this.addAction("crop...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&
-null!=m){var r=e.getCurrentCellStyle(m),x=r[mxConstants.STYLE_IMAGE],A=r[mxConstants.STYLE_SHAPE];x&&"image"==A&&(r=new CropImageDialog(d,x,r[mxConstants.STYLE_CLIP_PATH],function(C,F,K){f(m,C,F,K,e)}),d.showDialog(r.container,300,390,!0,!0))}}).isEnabled=k;n=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"))})),
+x="",B=null;null!=r&&(x=r.style[mxConstants.STYLE_IMAGE]||x,B=r.style[mxConstants.STYLE_CLIP_PATH]||B);var C=e.cellEditor.saveSelection();d.showImageDialog(m,x,function(G,J,D,N,Q,R){if(e.cellEditor.isContentEditing())e.cellEditor.restoreSelection(C),e.insertImage(G,J,D);else{var P=e.getSelectionCells();if(null!=G&&(0<G.length||0<P.length)){var Z=null;e.getModel().beginUpdate();try{if(0==P.length){P=[e.insertVertex(e.getDefaultParent(),null,"",0,0,J,D,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+var U=e.getCenterInsertPoint(e.getBoundingBoxFromGeometry(P,!0));P[0].geometry.x=U.x;P[0].geometry.y=U.y;null!=N&&f(P[0],N,Q,R,e);Z=P;e.fireEvent(new mxEventObject("cellsInserted","cells",Z))}e.setCellStyles(mxConstants.STYLE_IMAGE,0<G.length?G:null,P);var V=e.getCurrentCellStyle(P[0]);"image"!=V[mxConstants.STYLE_SHAPE]&&"label"!=V[mxConstants.STYLE_SHAPE]?e.setCellStyles(mxConstants.STYLE_SHAPE,"image",P):0==G.length&&e.setCellStyles(mxConstants.STYLE_SHAPE,null,P);if(1==e.getSelectionCount()&&
+null!=J&&null!=D){var ia=P[0],ha=e.getModel().getGeometry(ia);null!=ha&&(ha=ha.clone(),ha.width=J,ha.height=D,e.getModel().setGeometry(ia,ha));null!=N?f(ia,N,Q,R,e):e.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,P)}}finally{e.getModel().endUpdate()}null!=Z&&(e.setSelectionCells(Z),e.scrollCellToVisible(Z[0]))}}},e.cellEditor.isContentEditing(),!e.cellEditor.isContentEditing(),!0,B)}}).isEnabled=k;this.addAction("crop...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&
+null!=m){var r=e.getCurrentCellStyle(m),x=r[mxConstants.STYLE_IMAGE],B=r[mxConstants.STYLE_SHAPE];x&&"image"==B&&(r=new CropImageDialog(d,x,r[mxConstants.STYLE_CLIP_PATH],function(C,G,J){f(m,C,G,J,e)}),d.showDialog(r.container,300,390,!0,!0))}}).isEnabled=k;n=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.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");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));n=this.addAction("formatPanel",mxUtils.bind(this,
function(){d.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return 0<d.formatWidth}));n=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.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");n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var m=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&null!=m){var r=new ConnectionPointsDialog(d,
@@ -3851,7 +3851,7 @@ function(u){u.removeAttribute("face");u.style.fontFamily=null;"PRE"==u.nodeName&
mxResources.get("custom")+"...","",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,g,!0,mxUtils.bind(this,function(n){0>mxUtils.indexOf(this.customFonts,n)&&(this.customFonts.push(n),this.editorUi.fireEvent(new mxEventObject("customFontsChanged")))}))})));this.put("formatBlock",new Menu(mxUtils.bind(this,function(d,g){function e(k,n){return d.addItem(k,null,mxUtils.bind(this,function(){null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),document.execCommand("formatBlock",!1,"<"+
n+">"))}),g)}e(mxResources.get("normal"),"p");e("","h1").firstChild.nextSibling.innerHTML='<h1 style="margin:0px;">'+mxResources.get("heading")+" 1</h1>";e("","h2").firstChild.nextSibling.innerHTML='<h2 style="margin:0px;">'+mxResources.get("heading")+" 2</h2>";e("","h3").firstChild.nextSibling.innerHTML='<h3 style="margin:0px;">'+mxResources.get("heading")+" 3</h3>";e("","h4").firstChild.nextSibling.innerHTML='<h4 style="margin:0px;">'+mxResources.get("heading")+" 4</h4>";e("","h5").firstChild.nextSibling.innerHTML=
'<h5 style="margin:0px;">'+mxResources.get("heading")+" 5</h5>";e("","h6").firstChild.nextSibling.innerHTML='<h6 style="margin:0px;">'+mxResources.get("heading")+" 6</h6>";e("","pre").firstChild.nextSibling.innerHTML='<pre style="margin:0px;">'+mxResources.get("formatted")+"</pre>";e("","blockquote").firstChild.nextSibling.innerHTML='<blockquote style="margin-top:0px;margin-bottom:0px;">'+mxResources.get("blockquote")+"</blockquote>"})));this.put("fontSize",new Menu(mxUtils.bind(this,function(d,g){var e=
-[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(x,A){return x-A}));for(var k=mxUtils.bind(this,function(x){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var A=b.cellEditor.textarea.getElementsByTagName("font"),C=0;C<A.length;C++)if("3"==A[C].getAttribute("size")){A[C].removeAttribute("size");A[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
+[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(x,B){return x-B}));for(var k=mxUtils.bind(this,function(x){if(null!=b.cellEditor.textarea){document.execCommand("fontSize",!1,"3");for(var B=b.cellEditor.textarea.getElementsByTagName("font"),C=0;C<B.length;C++)if("3"==B[C].getAttribute("size")){B[C].removeAttribute("size");B[C].style.fontSize=x+"px";break}a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTSIZE],
"values",[x],"cells",[b.cellEditor.getEditingCell()]))}}),n=mxUtils.bind(this,function(x){this.styleChange(d,x,[mxConstants.STYLE_FONTSIZE],[x],null,g,function(){k(x)})}),u=0;u<e.length;u++)n(e[u]);d.addSeparator(g);if(0<this.customFontSizes.length){var m=0;for(u=0;u<this.customFontSizes.length;u++)0>mxUtils.indexOf(e,this.customFontSizes[u])&&(n(this.customFontSizes[u]),m++);0<m&&d.addSeparator(g);d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){this.customFontSizes=[]}),g);d.addSeparator(g)}var r=
null;this.promptChange(d,mxResources.get("custom")+"...","("+mxResources.get("points")+")",this.defaultFontSize,mxConstants.STYLE_FONTSIZE,g,!0,mxUtils.bind(this,function(x){null!=r&&null!=b.cellEditor.textarea&&(b.cellEditor.textarea.focus(),b.cellEditor.restoreSelection(r));null!=x&&0<x.length&&(this.customFontSizes.push(x),k(x))}),null,function(){r=b.cellEditor.saveSelection();return!1})})));this.put("direction",new Menu(mxUtils.bind(this,function(d,g){d.addItem(mxResources.get("flipH"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPH,
!1)},g);d.addItem(mxResources.get("flipV"),null,function(){b.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},g);this.addMenuItems(d,["-","rotation"],g)})));this.put("align",new Menu(mxUtils.bind(this,function(d,g){var e=1<this.editorUi.getSelectionState().vertices.length;d.addItem(mxResources.get("leftAlign"),null,function(){b.alignCells(mxConstants.ALIGN_LEFT)},g,null,e);d.addItem(mxResources.get("center"),null,function(){b.alignCells(mxConstants.ALIGN_CENTER)},g,null,e);d.addItem(mxResources.get("rightAlign"),
@@ -3874,24 +3874,24 @@ g){this.addMenuItems(d,["resetView","-"],g);for(var e=[.25,.5,.75,1,1.25,1.5,2,3
"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(d,g){this.addMenuItems(d,["copyConnect","collapseExpand","-","editDiagram"])})));this.put("help",new Menu(mxUtils.bind(this,function(d,g){this.addMenuItems(d,["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,f,d){var g=this.get(a);null!=g&&(g=g.isEnabled(),b.showDisabled||g)&&(f=b.addItem(d||mxResources.get(a),null,null,f,null,g),this.addMenu(a,b,f))};Menus.prototype.addMenu=function(a,b,f){var d=this.get(a);null!=d&&(b.showDisabled||d.isEnabled())&&this.get(a).execute(b,f)};
Menus.prototype.addInsertTableCellItem=function(a,b){var f=this.editorUi.editor.graph,d=f.getSelectionCell(),g=f.getCurrentCellStyle(d);1<f.getSelectionCount()&&(f.isTableCell(d)&&(d=f.model.getParent(d)),f.isTableRow(d)&&(d=f.model.getParent(d)));var e=f.isTable(d)||f.isTableRow(d)||f.isTableCell(d),k=f.isStack(d)||f.isStackChild(d),n=e,u=e;k&&(g=f.isStack(d)?g:f.getCellStyle(f.model.getParent(d)),u="0"==g.horizontalStack,n=!u);null!=b||!e&&!k?this.addInsertTableItem(a,mxUtils.bind(this,function(m,
-r,x,A,C){r=C||mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)?f.createCrossFunctionalSwimlane(r,x,null,null,A||mxEvent.isShiftDown(m)?"Cross-Functional Flowchart":null):f.createTable(r,x,null,null,A||mxEvent.isShiftDown(m)?"Table":null);m=mxEvent.isAltDown(m)?f.getFreeInsertPoint():f.getCenterInsertPoint(f.getBoundingBoxFromGeometry([r],!0));x=null;f.getModel().beginUpdate();try{x=f.importCells([r],m.x,m.y),f.fireEvent(new mxEventObject("cellsInserted","cells",f.model.getDescendants(x[0])))}finally{f.getModel().endUpdate()}null!=
+r,x,B,C){r=C||mxEvent.isControlDown(m)||mxEvent.isMetaDown(m)?f.createCrossFunctionalSwimlane(r,x,null,null,B||mxEvent.isShiftDown(m)?"Cross-Functional Flowchart":null):f.createTable(r,x,null,null,B||mxEvent.isShiftDown(m)?"Table":null);m=mxEvent.isAltDown(m)?f.getFreeInsertPoint():f.getCenterInsertPoint(f.getBoundingBoxFromGeometry([r],!0));x=null;f.getModel().beginUpdate();try{x=f.importCells([r],m.x,m.y),f.fireEvent(new mxEventObject("cellsInserted","cells",f.model.getDescendants(x[0])))}finally{f.getModel().endUpdate()}null!=
x&&0<x.length&&(f.scrollCellToVisible(x[0]),f.setSelectionCells(x))}),b):(n&&(b=a.addItem(mxResources.get("insertColumnBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!0):f.insertTableColumn(d,!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertcolumnbefore"),b.setAttribute("title",mxResources.get("insertColumnBefore")),b=a.addItem(mxResources.get("insertColumnAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!1):f.insertTableColumn(d,!1)}catch(m){this.editorUi.handleError(m)}}),
null,"geIcon geSprite geSprite-insertcolumnafter"),b.setAttribute("title",mxResources.get("insertColumnAfter")),b=a.addItem(mxResources.get("deleteColumn"),null,mxUtils.bind(this,function(){if(null!=d)try{k?f.deleteLane(d):f.deleteTableColumn(d)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deletecolumn"),b.setAttribute("title",mxResources.get("deleteColumn"))),u&&(b=a.addItem(mxResources.get("insertRowBefore"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!0):f.insertTableRow(d,
!0)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowbefore"),b.setAttribute("title",mxResources.get("insertRowBefore")),b=a.addItem(mxResources.get("insertRowAfter"),null,mxUtils.bind(this,function(){try{k?f.insertLane(d,!1):f.insertTableRow(d,!1)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-insertrowafter"),b.setAttribute("title",mxResources.get("insertRowAfter")),b=a.addItem(mxResources.get("deleteRow"),null,mxUtils.bind(this,function(){try{k?
f.deleteLane(d):f.deleteTableRow(d)}catch(m){this.editorUi.handleError(m)}}),null,"geIcon geSprite geSprite-deleterow"),b.setAttribute("title",mxResources.get("deleteRow")),u=this.editorUi.getSelectionState(),null!=u.mergeCell?this.addMenuItem(a,"mergeCells"):(1<u.style.colspan||1<u.style.rowspan)&&this.addMenuItem(a,"unmergeCells")))};
-Menus.prototype.addInsertTableItem=function(a,b,f,d){function g(C){n=e.getParentByName(mxEvent.getSource(C),"TD");var F=!1;if(null!=n){k=e.getParentByName(n,"TR");var K=mxEvent.isMouseEvent(C)?2:4,D=x,O=Math.min(20,k.sectionRowIndex+K);K=Math.min(20,n.cellIndex+K);for(var Q=D.rows.length;Q<O;Q++)for(var R=D.insertRow(Q),P=0;P<D.rows[0].cells.length;P++)R.insertCell(-1);for(Q=0;Q<D.rows.length;Q++)for(R=D.rows[Q],P=R.cells.length;P<K;P++)R.insertCell(-1);A.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
-1);for(D=0;D<x.rows.length;D++)for(O=x.rows[D],K=0;K<O.cells.length;K++)Q=O.cells[K],D==k.sectionRowIndex&&K==n.cellIndex&&(F="blue"==Q.style.backgroundColor),Q.style.backgroundColor=D<=k.sectionRowIndex&&K<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return F}d=null!=d?d:!0;b=null!=b?b:mxUtils.bind(this,function(C,F,K){var D=this.editorUi.editor.graph;C=D.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=D.cellEditor.textarea){D.getParentByName(C,"TR");var O=D.cellEditor.textarea.getElementsByTagName("table");
-C=[];for(var Q=0;Q<O.length;Q++)C.push(O[Q]);D.container.focus();Q=D.pasteHtmlAtCaret;O=["<table>"];for(var R=0;R<F;R++){O.push("<tr>");for(var P=0;P<K;P++)O.push("<td><br></td>");O.push("</tr>")}O.push("</table>");F=O.join("");Q.call(D,F);F=D.cellEditor.textarea.getElementsByTagName("table");if(F.length==C.length+1)for(Q=F.length-1;0<=Q;Q--)if(0==Q||F[Q]!=C[Q-1]){D.selectNode(F[Q].rows[0].cells[0]);break}}});var e=this.editorUi.editor.graph,k=null,n=null;null==f&&(a.div.className+=" geToolbarMenu",
+Menus.prototype.addInsertTableItem=function(a,b,f,d){function g(C){n=e.getParentByName(mxEvent.getSource(C),"TD");var G=!1;if(null!=n){k=e.getParentByName(n,"TR");var J=mxEvent.isMouseEvent(C)?2:4,D=x,N=Math.min(20,k.sectionRowIndex+J);J=Math.min(20,n.cellIndex+J);for(var Q=D.rows.length;Q<N;Q++)for(var R=D.insertRow(Q),P=0;P<D.rows[0].cells.length;P++)R.insertCell(-1);for(Q=0;Q<D.rows.length;Q++)for(R=D.rows[Q],P=R.cells.length;P<J;P++)R.insertCell(-1);B.innerHTML=n.cellIndex+1+"x"+(k.sectionRowIndex+
+1);for(D=0;D<x.rows.length;D++)for(N=x.rows[D],J=0;J<N.cells.length;J++)Q=N.cells[J],D==k.sectionRowIndex&&J==n.cellIndex&&(G="blue"==Q.style.backgroundColor),Q.style.backgroundColor=D<=k.sectionRowIndex&&J<=n.cellIndex?"blue":"transparent"}mxEvent.consume(C);return G}d=null!=d?d:!0;b=null!=b?b:mxUtils.bind(this,function(C,G,J){var D=this.editorUi.editor.graph;C=D.getParentByName(mxEvent.getSource(C),"TD");if(null!=C&&null!=D.cellEditor.textarea){D.getParentByName(C,"TR");var N=D.cellEditor.textarea.getElementsByTagName("table");
+C=[];for(var Q=0;Q<N.length;Q++)C.push(N[Q]);D.container.focus();Q=D.pasteHtmlAtCaret;N=["<table>"];for(var R=0;R<G;R++){N.push("<tr>");for(var P=0;P<J;P++)N.push("<td><br></td>");N.push("</tr>")}N.push("</table>");G=N.join("");Q.call(D,G);G=D.cellEditor.textarea.getElementsByTagName("table");if(G.length==C.length+1)for(Q=G.length-1;0<=Q;Q--)if(0==Q||G[Q]!=C[Q-1]){D.selectNode(G[Q].rows[0].cells[0]);break}}});var e=this.editorUi.editor.graph,k=null,n=null;null==f&&(a.div.className+=" geToolbarMenu",
a.labels=!1);a=a.addItem("",null,null,f,null,null,null,!0);a.firstChild.style.fontSize=Menus.prototype.defaultFontSize+"px";a.firstChild.innerText="";var u=document.createElement("input");u.setAttribute("id","geTitleOption");u.setAttribute("type","checkbox");f=document.createElement("label");mxUtils.write(f,mxResources.get("title"));f.setAttribute("for","geTitleOption");mxEvent.addGestureListeners(f,null,null,mxUtils.bind(this,function(C){mxEvent.consume(C)}));mxEvent.addGestureListeners(u,null,null,
mxUtils.bind(this,function(C){mxEvent.consume(C)}));var m=document.createElement("input");m.setAttribute("id","geContainerOption");m.setAttribute("type","checkbox");var r=document.createElement("label");mxUtils.write(r,mxResources.get("container"));r.setAttribute("for","geContainerOption");mxEvent.addGestureListeners(r,null,null,mxUtils.bind(this,function(C){mxEvent.consume(C)}));mxEvent.addGestureListeners(m,null,null,mxUtils.bind(this,function(C){mxEvent.consume(C)}));d&&(a.firstChild.appendChild(u),
-a.firstChild.appendChild(f),mxUtils.br(a.firstChild),a.firstChild.appendChild(m),a.firstChild.appendChild(r),mxUtils.br(a.firstChild),mxUtils.br(a.firstChild));var x=function(C,F){var K=document.createElement("table");K.setAttribute("border","1");K.style.borderCollapse="collapse";K.style.borderStyle="solid";K.setAttribute("cellPadding","8");for(var D=0;D<C;D++)for(var O=K.insertRow(D),Q=0;Q<F;Q++)O.insertCell(-1);return K}(5,5);a.firstChild.appendChild(x);var A=document.createElement("div");A.style.padding=
-"4px";A.innerHTML="1x1";a.firstChild.appendChild(A);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var F=g(C);null!=n&&null!=k&&F&&(b(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
-Menus.prototype.edgeStyleChange=function(a,b,f,d,g,e,k,n){return this.showIconOnly(a.addItem(b,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var A=m[x];if(u.getModel().isEdge(A)){if(k){var C=u.getCellGeometry(A);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(A,C))}for(var F=0;F<f.length;F++)u.setCellStyles(f[F],d[F],[A]);r.push(A)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
+a.firstChild.appendChild(f),mxUtils.br(a.firstChild),a.firstChild.appendChild(m),a.firstChild.appendChild(r),mxUtils.br(a.firstChild),mxUtils.br(a.firstChild));var x=function(C,G){var J=document.createElement("table");J.setAttribute("border","1");J.style.borderCollapse="collapse";J.style.borderStyle="solid";J.setAttribute("cellPadding","8");for(var D=0;D<C;D++)for(var N=J.insertRow(D),Q=0;Q<G;Q++)N.insertCell(-1);return J}(5,5);a.firstChild.appendChild(x);var B=document.createElement("div");B.style.padding=
+"4px";B.innerHTML="1x1";a.firstChild.appendChild(B);mxEvent.addGestureListeners(x,null,null,mxUtils.bind(this,function(C){var G=g(C);null!=n&&null!=k&&G&&(b(C,k.sectionRowIndex+1,n.cellIndex+1,u.checked,m.checked),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0))}));mxEvent.addListener(x,"mouseover",g)};
+Menus.prototype.edgeStyleChange=function(a,b,f,d,g,e,k,n){return this.showIconOnly(a.addItem(b,n,mxUtils.bind(this,function(){var u=this.editorUi.editor.graph;u.stopEditing(!1);u.getModel().beginUpdate();try{for(var m=u.getSelectionCells(),r=[],x=0;x<m.length;x++){var B=m[x];if(u.getModel().isEdge(B)){if(k){var C=u.getCellGeometry(B);null!=C&&(C=C.clone(),C.points=null,u.getModel().setGeometry(B,C))}for(var G=0;G<f.length;G++)u.setCellStyles(f[G],d[G],[B]);r.push(B)}}this.editorUi.fireEvent(new mxEventObject("styleChanged",
"keys",f,"values",d,"cells",r))}finally{u.getModel().endUpdate()}}),e,g))};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,f,d,g,e,k,n,u){var m=this.createStyleChangeFunction(f,d);a=a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph;null!=k&&r.cellEditor.isContentEditing()?k():m(n)}),e,g);u&&this.showIconOnly(a);return a};
Menus.prototype.createStyleChangeFunction=function(a,b){return mxUtils.bind(this,function(f){var d=this.editorUi.editor.graph;d.stopEditing(!1);d.getModel().beginUpdate();try{for(var g=d.getEditableCells(d.getSelectionCells()),e=!1,k=0;k<a.length;k++)if(d.setCellStyles(a[k],b[k],g),a[k]==mxConstants.STYLE_ALIGN&&d.updateLabelElements(g,function(n){n.removeAttribute("align");n.style.textAlign=null}),a[k]==mxConstants.STYLE_FONTFAMILY||"fontSource"==a[k])e=!0;if(e)for(e=0;e<g.length;e++)0==d.model.getChildCount(g[e])&&
d.autoSizeCell(g[e],!1);null!=f&&f();this.editorUi.fireEvent(new mxEventObject("styleChanged","keys",a,"values",b,"cells",g))}finally{d.getModel().endUpdate()}})};
-Menus.prototype.promptChange=function(a,b,f,d,g,e,k,n,u,m){return a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=d,A=r.getView().getState(r.getSelectionCell());null!=A&&(x=A.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(F){if(null!=F&&0<F.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,F)}finally{r.getModel().endUpdate()}}null!=n&&n(F)}}),mxResources.get("enterValue")+
+Menus.prototype.promptChange=function(a,b,f,d,g,e,k,n,u,m){return a.addItem(b,null,mxUtils.bind(this,function(){var r=this.editorUi.editor.graph,x=d,B=r.getView().getState(r.getSelectionCell());null!=B&&(x=B.style[g]||x);var C=null!=m?m():!0;x=new FilenameDialog(this.editorUi,x,mxResources.get("apply"),mxUtils.bind(this,function(G){if(null!=G&&0<G.length){if(C){r.getModel().beginUpdate();try{r.stopEditing(!1),r.setCellStyles(g,G)}finally{r.getModel().endUpdate()}}null!=n&&n(G)}}),mxResources.get("enterValue")+
(0<f.length?" "+f:""),null,null,null,null,function(){null!=n&&null!=m&&n(null)});this.editorUi.showDialog(x.container,300,80,!0,!0);x.init()}),e,u,k)};
Menus.prototype.pickColor=function(a,b,f){var d=this.editorUi,g=d.editor.graph,e=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12));if(null!=b&&g.cellEditor.isContentEditing()){var k=g.cellEditor.saveSelection();a=new ColorDialog(this.editorUi,f||g.shapeForegroundColor,mxUtils.bind(this,function(u){g.cellEditor.restoreSelection(k);document.execCommand(b,!1,u!=mxConstants.NONE?u:"transparent");var m={forecolor:mxConstants.STYLE_FONTCOLOR,
backcolor:mxConstants.STYLE_LABEL_BACKGROUNDCOLOR}[b];null!=m&&d.fireEvent(new mxEventObject("styleChanged","keys",[m],"values",[u],"cells",[g.cellEditor.getEditingCell()]))}),function(){g.cellEditor.restoreSelection(k)});this.editorUi.showDialog(a.container,230,e,!0,!0);a.init()}else{null==this.colorDialog&&(this.colorDialog=new ColorDialog(this.editorUi));this.colorDialog.currentColorKey=a;f=g.getView().getState(g.getSelectionCell());var n=mxConstants.NONE;null!=f&&(n=f.style[a]||n);n==mxConstants.NONE?
@@ -3949,9 +3949,9 @@ this.addSeparator();d=this.addMenuFunction("",mxResources.get("insert"),!0,mxUti
!1,mxUtils.bind(this,function(e){var k=b.getSelectedElement(),n=b.getParentByNames(k,["TD","TH"],b.cellEditor.text2),u=b.getParentByName(k,"TR",b.cellEditor.text2);if(null==u)this.editorUi.menus.addInsertTableItem(e);else{var m=b.getParentByName(u,"TABLE",b.cellEditor.text2);k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex:0))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnbefore");k.setAttribute("title",mxResources.get("insertColumnBefore"));
k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertColumn(m,null!=n?n.cellIndex+1:-1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertcolumnafter");k.setAttribute("title",mxResources.get("insertColumnAfter"));k=e.addItem("Delete column",null,mxUtils.bind(this,function(){if(null!=n)try{b.deleteColumn(m,n.cellIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deletecolumn");k.setAttribute("title",mxResources.get("deleteColumn"));
k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowbefore");k.setAttribute("title",mxResources.get("insertRowBefore"));k=e.addItem("",null,mxUtils.bind(this,function(){try{b.selectNode(b.insertRow(m,u.sectionRowIndex+1))}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-insertrowafter");k.setAttribute("title",mxResources.get("insertRowAfter"));k=e.addItem("",
-null,mxUtils.bind(this,function(){try{b.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,
-function(x){null==x||x==mxConstants.NONE?(m.removeAttribute("border"),m.style.border="",m.style.borderCollapse=""):(m.setAttribute("border","1"),m.style.border="1px solid "+x,m.style.borderCollapse="collapse")})}),null,"geIcon geSprite geSprite-strokecolor");k.setAttribute("title",mxResources.get("borderColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,A,C,F){return"#"+("0"+Number(A).toString(16)).substr(-2)+
-("0"+Number(C).toString(16)).substr(-2)+("0"+Number(F).toString(16)).substr(-2)});this.editorUi.pickColor(r,function(x){m.style.backgroundColor=null==x||x==mxConstants.NONE?"":x})}),null,"geIcon geSprite geSprite-fillcolor");k.setAttribute("title",mxResources.get("backgroundColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.getAttribute("cellPadding")||0;r=new FilenameDialog(this.editorUi,r,mxResources.get("apply"),mxUtils.bind(this,function(x){null!=x&&0<x.length?m.setAttribute("cellPadding",
+null,mxUtils.bind(this,function(){try{b.deleteRow(m,u.sectionRowIndex)}catch(r){this.editorUi.handleError(r)}}),null,"geIcon geSprite geSprite-deleterow");k.setAttribute("title",mxResources.get("deleteRow"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.borderColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,B,C,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(r,
+function(x){null==x||x==mxConstants.NONE?(m.removeAttribute("border"),m.style.border="",m.style.borderCollapse=""):(m.setAttribute("border","1"),m.style.border="1px solid "+x,m.style.borderCollapse="collapse")})}),null,"geIcon geSprite geSprite-strokecolor");k.setAttribute("title",mxResources.get("borderColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.style.backgroundColor.replace(/\brgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g,function(x,B,C,G){return"#"+("0"+Number(B).toString(16)).substr(-2)+
+("0"+Number(C).toString(16)).substr(-2)+("0"+Number(G).toString(16)).substr(-2)});this.editorUi.pickColor(r,function(x){m.style.backgroundColor=null==x||x==mxConstants.NONE?"":x})}),null,"geIcon geSprite geSprite-fillcolor");k.setAttribute("title",mxResources.get("backgroundColor"));k=e.addItem("",null,mxUtils.bind(this,function(){var r=m.getAttribute("cellPadding")||0;r=new FilenameDialog(this.editorUi,r,mxResources.get("apply"),mxUtils.bind(this,function(x){null!=x&&0<x.length?m.setAttribute("cellPadding",
x):m.removeAttribute("cellPadding")}),mxResources.get("spacing"));this.editorUi.showDialog(r.container,300,80,!0,!0);r.init()}),null,"geIcon geSprite geSprite-fit");k.setAttribute("title",mxResources.get("spacing"));k=e.addItem("",null,mxUtils.bind(this,function(){m.setAttribute("align","left")}),null,"geIcon geSprite geSprite-left");k.setAttribute("title",mxResources.get("left"));k=e.addItem("",null,mxUtils.bind(this,function(){m.setAttribute("align","center")}),null,"geIcon geSprite geSprite-center");
k.setAttribute("title",mxResources.get("center"));k=e.addItem("",null,mxUtils.bind(this,function(){m.setAttribute("align","right")}),null,"geIcon geSprite geSprite-right");k.setAttribute("title",mxResources.get("right"))}}));g.style.position="relative";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.width="30px";g.innerText="";f=document.createElement("div");f.className="geSprite geSprite-table";f.style.marginLeft="-2px";g.appendChild(f);this.appendDropDownImageHtml(g);EditorUi.compactUi&&
(g.getElementsByTagName("img")[0].style.left="22px",g.getElementsByTagName("img")[0].style.top="5px")};Toolbar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};Toolbar.prototype.addMenu=function(a,b,f,d,g,e,k){var n=this.editorUi.menus.get(d),u=this.addMenuFunction(a,b,f,function(){n.funct.apply(n,arguments)},g,e);k||"function"!==typeof u.setEnabled||n.addListener("stateChanged",function(){u.setEnabled(n.enabled)});return u};
@@ -3961,90 +3961,90 @@ Toolbar.prototype.addButton=function(a,b,f,d){a=this.createButton(a);d=null!=d?d
Toolbar.prototype.addClickHandler=function(a,b){null!=b&&(mxEvent.addListener(a,"click",function(f){a.enabled&&b(f);mxEvent.consume(f)}),mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(f){f.preventDefault()})))};Toolbar.prototype.createButton=function(a){var b=document.createElement("a");b.className="geButton";var f=document.createElement("div");null!=a&&(f.className="geSprite "+a);b.appendChild(f);return b};
Toolbar.prototype.createLabel=function(a,b){b=document.createElement("a");b.className="geLabel";mxUtils.write(b,a);return b};
Toolbar.prototype.addMenuHandler=function(a,b,f,d){if(null!=f){var g=this.editorUi.editor.graph,e=null,k=!0;mxEvent.addListener(a,"click",mxUtils.bind(this,function(n){if(k&&(null==a.enabled||a.enabled)){g.popupMenuHandler.hideMenu();e=new mxPopupMenu(f);e.div.className+=" geToolbarMenu";e.showDisabled=d;e.labels=b;e.autoExpand=!0;!b&&e.div.scrollHeight>e.div.clientHeight&&(e.div.style.width="40px");e.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(e,arguments);this.editorUi.resetCurrentMenu();
-e.destroy()});var u=mxUtils.getOffset(a);e.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(e,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==e||null==e.div||null==e.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,f,d){function g(){var K=k.value;/(^#?[a-zA-Z0-9]*$)/.test(K)?("none"!=K&&"#"!=
-K.charAt(0)&&(K="#"+K),ColorDialog.addRecentColor("none"!=K?K.substring(1):K,12),n(K),a.hideDialog()):a.handleError({message:mxResources.get("invalidInput")})}function e(){var K=r(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);K.style.marginBottom="8px";return K}this.editorUi=a;var k=document.createElement("input");k.style.marginBottom="10px";mxClient.IS_IE&&(k.style.marginTop="10px",document.body.appendChild(k));var n=null!=f?f:this.createApplyFunction();this.init=
-function(){mxClient.IS_TOUCH||k.focus()};var u=new mxJSColor.color(k);u.pickerOnfocus=!1;u.showPicker();f=document.createElement("div");mxJSColor.picker.box.style.position="relative";mxJSColor.picker.box.style.width="230px";mxJSColor.picker.box.style.height="100px";mxJSColor.picker.box.style.paddingBottom="10px";f.appendChild(mxJSColor.picker.box);var m=document.createElement("center"),r=mxUtils.bind(this,function(K,D,O,Q){D=null!=D?D:12;var R=document.createElement("table");R.style.borderCollapse=
-"collapse";R.setAttribute("cellspacing","0");R.style.marginBottom="20px";R.style.cellSpacing="0px";R.style.marginLeft="1px";var P=document.createElement("tbody");R.appendChild(P);for(var Z=K.length/D,T=0;T<Z;T++){for(var U=document.createElement("tr"),fa=0;fa<D;fa++)mxUtils.bind(this,function(ha){var ba=document.createElement("td");ba.style.border="0px solid black";ba.style.padding="0px";ba.style.width="16px";ba.style.height="16px";null==ha&&(ha=O);if(null!=ha){ba.style.borderWidth="1px";"none"==
-ha?ba.style.background="url('"+Dialog.prototype.noColorImage+"')":ba.style.backgroundColor="#"+ha;var qa=this.colorNames[ha.toUpperCase()];null!=qa&&ba.setAttribute("title",qa)}U.appendChild(ba);null!=ha&&(ba.style.cursor="pointer",mxEvent.addListener(ba,"click",function(){"none"==ha?(u.fromString("ffffff"),k.value="none"):u.fromString(ha)}),mxEvent.addListener(ba,"dblclick",g))})(K[T*D+fa]);P.appendChild(U)}Q&&(K=document.createElement("td"),K.setAttribute("title",mxResources.get("reset")),K.style.border=
-"1px solid black",K.style.padding="0px",K.style.width="16px",K.style.height="16px",K.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",K.style.backgroundPosition="center center",K.style.backgroundRepeat="no-repeat",K.style.cursor="pointer",U.appendChild(K),mxEvent.addListener(K,"click",function(){ColorDialog.resetRecentColors();R.parentNode.replaceChild(e(),R)}));m.appendChild(R);return R});f.appendChild(k);if(mxClient.IS_IE||mxClient.IS_IE11)k.style.width="216px";else{k.style.width=
-"182px";var x=document.createElement("input");x.setAttribute("type","color");x.style.visibility="hidden";x.style.width="0px";x.style.height="0px";x.style.border="none";x.style.marginLeft="2px";f.style.whiteSpace="nowrap";f.appendChild(x);f.appendChild(mxUtils.button("...",function(){document.activeElement==x?k.focus():(x.value="#"+k.value,x.click())}));mxEvent.addListener(x,"input",function(){u.fromString(x.value.substring(1))})}mxUtils.br(f);e();var A=r(this.presetColors);A.style.marginBottom="8px";
-A=r(this.defaultColors);A.style.marginBottom="16px";f.appendChild(m);A=document.createElement("div");A.style.textAlign="right";A.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});C.className="geBtn";a.editor.cancelFirst&&A.appendChild(C);var F=mxUtils.button(mxResources.get("apply"),g);F.className="geBtn gePrimaryBtn";A.appendChild(F);a.editor.cancelFirst||A.appendChild(C);null!=b&&("none"==b?(u.fromString("ffffff"),k.value="none"):u.fromString(b));
-f.appendChild(A);this.picker=u;this.colorInput=k;mxEvent.addListener(f,"keydown",function(K){27==K.keyCode&&(a.hideDialog(),null!=d&&d(),mxEvent.consume(K))});this.container=f};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(" ");
+e.destroy()});var u=mxUtils.getOffset(a);e.popup(u.x,u.y+a.offsetHeight,null,n);this.editorUi.setCurrentMenu(e,a)}k=!0;mxEvent.consume(n)}));mxEvent.addListener(a,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(n){k=null==e||null==e.div||null==e.div.parentNode;n.preventDefault()}))}};Toolbar.prototype.destroy=function(){null!=this.gestureHandler&&(mxEvent.removeGestureListeners(document,this.gestureHandler),this.gestureHandler=null)};var OpenDialog=function(){var a=document.createElement("iframe");a.style.backgroundColor="transparent";a.allowTransparency="true";a.style.borderStyle="none";a.style.borderWidth="0px";a.style.overflow="hidden";a.frameBorder="0";a.setAttribute("width",(Editor.useLocalStorage?640:320)+"px");a.setAttribute("height",(Editor.useLocalStorage?480:220)+"px");a.setAttribute("src",OPEN_FORM);this.container=a},ColorDialog=function(a,b,f,d){function g(){var J=k.value;/(^#?[a-zA-Z0-9]*$)/.test(J)?("none"!=J&&"#"!=
+J.charAt(0)&&(J="#"+J),ColorDialog.addRecentColor("none"!=J?J.substring(1):J,12),n(J),a.hideDialog()):a.handleError({message:mxResources.get("invalidInput")})}function e(){var J=r(0==ColorDialog.recentColors.length?["FFFFFF"]:ColorDialog.recentColors,11,"FFFFFF",!0);J.style.marginBottom="8px";return J}this.editorUi=a;var k=document.createElement("input");k.style.marginBottom="10px";mxClient.IS_IE&&(k.style.marginTop="10px",document.body.appendChild(k));var n=null!=f?f:this.createApplyFunction();this.init=
+function(){mxClient.IS_TOUCH||k.focus()};var u=new mxJSColor.color(k);u.pickerOnfocus=!1;u.showPicker();f=document.createElement("div");mxJSColor.picker.box.style.position="relative";mxJSColor.picker.box.style.width="230px";mxJSColor.picker.box.style.height="100px";mxJSColor.picker.box.style.paddingBottom="10px";f.appendChild(mxJSColor.picker.box);var m=document.createElement("center"),r=mxUtils.bind(this,function(J,D,N,Q){D=null!=D?D:12;var R=document.createElement("table");R.style.borderCollapse=
+"collapse";R.setAttribute("cellspacing","0");R.style.marginBottom="20px";R.style.cellSpacing="0px";R.style.marginLeft="1px";var P=document.createElement("tbody");R.appendChild(P);for(var Z=J.length/D,U=0;U<Z;U++){for(var V=document.createElement("tr"),ia=0;ia<D;ia++)mxUtils.bind(this,function(ha){var ba=document.createElement("td");ba.style.border="0px solid black";ba.style.padding="0px";ba.style.width="16px";ba.style.height="16px";null==ha&&(ha=N);if(null!=ha){ba.style.borderWidth="1px";"none"==
+ha?ba.style.background="url('"+Dialog.prototype.noColorImage+"')":ba.style.backgroundColor="#"+ha;var qa=this.colorNames[ha.toUpperCase()];null!=qa&&ba.setAttribute("title",qa)}V.appendChild(ba);null!=ha&&(ba.style.cursor="pointer",mxEvent.addListener(ba,"click",function(){"none"==ha?(u.fromString("ffffff"),k.value="none"):u.fromString(ha)}),mxEvent.addListener(ba,"dblclick",g))})(J[U*D+ia]);P.appendChild(V)}Q&&(J=document.createElement("td"),J.setAttribute("title",mxResources.get("reset")),J.style.border=
+"1px solid black",J.style.padding="0px",J.style.width="16px",J.style.height="16px",J.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')",J.style.backgroundPosition="center center",J.style.backgroundRepeat="no-repeat",J.style.cursor="pointer",V.appendChild(J),mxEvent.addListener(J,"click",function(){ColorDialog.resetRecentColors();R.parentNode.replaceChild(e(),R)}));m.appendChild(R);return R});f.appendChild(k);if(mxClient.IS_IE||mxClient.IS_IE11)k.style.width="216px";else{k.style.width=
+"182px";var x=document.createElement("input");x.setAttribute("type","color");x.style.visibility="hidden";x.style.width="0px";x.style.height="0px";x.style.border="none";x.style.marginLeft="2px";f.style.whiteSpace="nowrap";f.appendChild(x);f.appendChild(mxUtils.button("...",function(){document.activeElement==x?k.focus():(x.value="#"+k.value,x.click())}));mxEvent.addListener(x,"input",function(){u.fromString(x.value.substring(1))})}mxUtils.br(f);e();var B=r(this.presetColors);B.style.marginBottom="8px";
+B=r(this.defaultColors);B.style.marginBottom="16px";f.appendChild(m);B=document.createElement("div");B.style.textAlign="right";B.style.whiteSpace="nowrap";var C=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d()});C.className="geBtn";a.editor.cancelFirst&&B.appendChild(C);var G=mxUtils.button(mxResources.get("apply"),g);G.className="geBtn gePrimaryBtn";B.appendChild(G);a.editor.cancelFirst||B.appendChild(C);null!=b&&("none"==b?(u.fromString("ffffff"),k.value="none"):u.fromString(b));
+f.appendChild(B);this.picker=u;this.colorInput=k;mxEvent.addListener(f,"keydown",function(J){27==J.keyCode&&(a.hideDialog(),null!=d&&d(),mxEvent.consume(J))});this.container=f};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 f=document.createElement("h3");mxUtils.write(f,mxResources.get("about")+" GraphEditor");b.appendChild(f);f=document.createElement("img");f.style.border="0px";f.setAttribute("width","176");f.setAttribute("width","151");f.setAttribute("src",IMAGE_PATH+"/logo.png");b.appendChild(f);mxUtils.br(b);mxUtils.write(b,"Powered by mxGraph "+mxClient.VERSION);mxUtils.br(b);f=document.createElement("a");f.setAttribute("href",
-"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");b.appendChild(f);mxUtils.br(b);mxUtils.br(b);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";b.appendChild(f);this.container=b},TextareaDialog=function(a,b,f,d,g,e,k,n,u,m,r,x,A,C,F){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
-n.style.position="absolute";n.style.left="0px";n.style.right="0px";var K=n.cloneNode(!1),D=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";K.style.top="20px";K.style.bottom="64px";D.style.bottom="0px";D.style.height="60px";D.style.textAlign="center";mxUtils.write(n,b);k.appendChild(n);k.appendChild(K);k.appendChild(D);null!=F&&n.appendChild(F);var O=document.createElement("textarea");r&&O.setAttribute("wrap","off");O.setAttribute("spellcheck","false");O.setAttribute("autocorrect","off");O.setAttribute("autocomplete",
-"off");O.setAttribute("autocapitalize","off");mxUtils.write(O,f||"");O.style.resize="none";O.style.outline="none";O.style.position="absolute";O.style.boxSizing="border-box";O.style.top="0px";O.style.left="0px";O.style.height="100%";O.style.width="100%";this.textarea=O;this.init=function(){O.focus();O.scrollTop=0};K.appendChild(O);null!=A&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(A)}),b.className="geBtn",D.appendChild(b));if(null!=C)for(b=0;b<C.length;b++)(function(R,
-P,Z){R=mxUtils.button(R,function(T){P(T,O)});null!=Z&&R.setAttribute("title",Z);R.className="geBtn";D.appendChild(R)})(C[b][0],C[b][1],C[b][2]);e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});e.setAttribute("title","Escape");e.className="geBtn";a.editor.cancelFirst&&D.appendChild(e);null!=u&&u(D,O);if(null!=d){var Q=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();d(O.value)});Q.setAttribute("title","Ctrl+Enter");Q.className="geBtn gePrimaryBtn";
-D.appendChild(Q);mxEvent.addListener(O,"keypress",function(R){13==R.keyCode&&mxEvent.isControlDown(R)&&Q.click()})}a.editor.cancelFirst||D.appendChild(e);this.container=k},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
+"http://www.jgraph.com/");f.setAttribute("target","_blank");mxUtils.write(f,"www.jgraph.com");b.appendChild(f);mxUtils.br(b);mxUtils.br(b);f=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.className="geBtn gePrimaryBtn";b.appendChild(f);this.container=b},TextareaDialog=function(a,b,f,d,g,e,k,n,u,m,r,x,B,C,G){m=null!=m?m:!1;k=document.createElement("div");k.style.position="absolute";k.style.top="20px";k.style.bottom="20px";k.style.left="20px";k.style.right="20px";n=document.createElement("div");
+n.style.position="absolute";n.style.left="0px";n.style.right="0px";var J=n.cloneNode(!1),D=n.cloneNode(!1);n.style.top="0px";n.style.height="20px";J.style.top="20px";J.style.bottom="64px";D.style.bottom="0px";D.style.height="60px";D.style.textAlign="center";mxUtils.write(n,b);k.appendChild(n);k.appendChild(J);k.appendChild(D);null!=G&&n.appendChild(G);var N=document.createElement("textarea");r&&N.setAttribute("wrap","off");N.setAttribute("spellcheck","false");N.setAttribute("autocorrect","off");N.setAttribute("autocomplete",
+"off");N.setAttribute("autocapitalize","off");mxUtils.write(N,f||"");N.style.resize="none";N.style.outline="none";N.style.position="absolute";N.style.boxSizing="border-box";N.style.top="0px";N.style.left="0px";N.style.height="100%";N.style.width="100%";this.textarea=N;this.init=function(){N.focus();N.scrollTop=0};J.appendChild(N);null!=B&&(b=mxUtils.button(mxResources.get("help"),function(){a.editor.graph.openLink(B)}),b.className="geBtn",D.appendChild(b));if(null!=C)for(b=0;b<C.length;b++)(function(R,
+P,Z){R=mxUtils.button(R,function(U){P(U,N)});null!=Z&&R.setAttribute("title",Z);R.className="geBtn";D.appendChild(R)})(C[b][0],C[b][1],C[b][2]);e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});e.setAttribute("title","Escape");e.className="geBtn";a.editor.cancelFirst&&D.appendChild(e);null!=u&&u(D,N);if(null!=d){var Q=mxUtils.button(x||mxResources.get("apply"),function(){m||a.hideDialog();d(N.value)});Q.setAttribute("title","Ctrl+Enter");Q.className="geBtn gePrimaryBtn";
+D.appendChild(Q);mxEvent.addListener(N,"keypress",function(R){13==R.keyCode&&mxEvent.isControlDown(R)&&Q.click()})}a.editor.cancelFirst||D.appendChild(e);this.container=k},EditDiagramDialog=function(a){var b=document.createElement("div");b.style.textAlign="right";var f=document.createElement("textarea");f.setAttribute("wrap","off");f.setAttribute("spellcheck","false");f.setAttribute("autocorrect","off");f.setAttribute("autocomplete","off");f.setAttribute("autocapitalize","off");f.style.overflow="auto";
f.style.resize="none";f.style.width="600px";f.style.height="360px";f.style.marginBottom="16px";f.value=mxUtils.getPrettyXml(a.editor.getGraphXml());b.appendChild(f);this.init=function(){f.focus()};Graph.fileSupport&&(f.addEventListener("dragover",function(k){k.stopPropagation();k.preventDefault()},!1),f.addEventListener("drop",function(k){k.stopPropagation();k.preventDefault();if(0<k.dataTransfer.files.length){k=k.dataTransfer.files[0];var n=new FileReader;n.onload=function(u){f.value=u.target.result};
n.readAsText(k)}else f.value=a.extractGraphModelFromEvent(k)},!1));var d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&b.appendChild(d);var g=document.createElement("select");g.style.width="180px";g.className="geBtn";if(a.editor.graph.isEnabled()){var e=document.createElement("option");e.setAttribute("value","replace");mxUtils.write(e,mxResources.get("replaceExistingDrawing"));g.appendChild(e)}e=document.createElement("option");e.setAttribute("value",
"new");mxUtils.write(e,mxResources.get("openInNewWindow"));EditDiagramDialog.showNewWindowOption&&g.appendChild(e);a.editor.graph.isEnabled()&&(e=document.createElement("option"),e.setAttribute("value","import"),mxUtils.write(e,mxResources.get("addToExistingDrawing")),g.appendChild(e));b.appendChild(g);e=mxUtils.button(mxResources.get("ok"),function(){var k=Graph.zapGremlins(mxUtils.trim(f.value)),n=null;if("new"==g.value)a.hideDialog(),a.editor.editAsNew(k);else if("replace"==g.value){a.editor.graph.model.beginUpdate();
try{a.editor.setGraphXml(mxUtils.parseXml(k).documentElement),a.hideDialog()}catch(x){n=x}finally{a.editor.graph.model.endUpdate()}}else if("import"==g.value){a.editor.graph.model.beginUpdate();try{var u=mxUtils.parseXml(k),m=new mxGraphModel;(new mxCodec(u)).decode(u.documentElement,m);var r=m.getChildren(m.getChildAt(m.getRoot(),0));a.editor.graph.setSelectionCells(a.editor.graph.importCells(r));a.hideDialog()}catch(x){n=x}finally{a.editor.graph.model.endUpdate()}}null!=n&&mxUtils.alert(n.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 U=r.value,fa=U.lastIndexOf(".");r.value=0<fa?U.substring(0,fa+1)+x.value:U+"."+x.value;"xml"===x.value?(A.setAttribute("disabled","true"),C.setAttribute("disabled","true"),F.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(A.removeAttribute("disabled"),C.removeAttribute("disabled"),F.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?Q.removeAttribute("disabled"):Q.setAttribute("disabled",
-"disabled");"png"===x.value||"jpg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled","disabled");"png"===x.value?(K.removeAttribute("disabled"),D.removeAttribute("disabled")):(K.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"))}function f(){C.style.backgroundColor=C.value*F.value>MAX_AREA||0>=C.value?"red":"";F.style.backgroundColor=C.value*F.value>MAX_AREA||0>=F.value?"red":""}var d=a.editor.graph,g=d.getGraphBounds(),e=d.view.scale,k=Math.ceil(g.width/
+var ExportDialog=function(a){function b(){var V=r.value,ia=V.lastIndexOf(".");r.value=0<ia?V.substring(0,ia+1)+x.value:V+"."+x.value;"xml"===x.value?(B.setAttribute("disabled","true"),C.setAttribute("disabled","true"),G.setAttribute("disabled","true"),P.setAttribute("disabled","true")):(B.removeAttribute("disabled"),C.removeAttribute("disabled"),G.removeAttribute("disabled"),P.removeAttribute("disabled"));"png"===x.value||"svg"===x.value||"pdf"===x.value?Q.removeAttribute("disabled"):Q.setAttribute("disabled",
+"disabled");"png"===x.value||"jpg"===x.value||"pdf"===x.value?R.removeAttribute("disabled"):R.setAttribute("disabled","disabled");"png"===x.value?(J.removeAttribute("disabled"),D.removeAttribute("disabled")):(J.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"))}function f(){C.style.backgroundColor=C.value*G.value>MAX_AREA||0>=C.value?"red":"";G.style.backgroundColor=C.value*G.value>MAX_AREA||0>=G.value?"red":""}var d=a.editor.graph,g=d.getGraphBounds(),e=d.view.scale,k=Math.ceil(g.width/
e),n=Math.ceil(g.height/e);e=document.createElement("table");var u=document.createElement("tbody");e.setAttribute("cellpadding",mxClient.IS_SF?"0":"2");g=document.createElement("tr");var m=document.createElement("td");m.style.fontSize="10pt";m.style.width="100px";mxUtils.write(m,mxResources.get("filename")+":");g.appendChild(m);var r=document.createElement("input");r.setAttribute("value",a.editor.getOrCreateFilename());r.style.width="180px";m=document.createElement("td");m.appendChild(r);g.appendChild(m);
u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("format")+":");g.appendChild(m);var x=document.createElement("select");x.style.width="180px";m=document.createElement("option");m.setAttribute("value","png");mxUtils.write(m,mxResources.get("formatPng"));x.appendChild(m);m=document.createElement("option");ExportDialog.showGifOption&&(m.setAttribute("value","gif"),mxUtils.write(m,mxResources.get("formatGif")),x.appendChild(m));
m=document.createElement("option");m.setAttribute("value","jpg");mxUtils.write(m,mxResources.get("formatJpg"));x.appendChild(m);m=document.createElement("option");m.setAttribute("value","pdf");mxUtils.write(m,mxResources.get("formatPdf"));x.appendChild(m);m=document.createElement("option");m.setAttribute("value","svg");mxUtils.write(m,mxResources.get("formatSvg"));x.appendChild(m);ExportDialog.showXmlOption&&(m=document.createElement("option"),m.setAttribute("value","xml"),mxUtils.write(m,mxResources.get("formatXml")),
-x.appendChild(m));m=document.createElement("td");m.appendChild(x);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("zoom")+" (%):");g.appendChild(m);var A=document.createElement("input");A.setAttribute("type","number");A.setAttribute("value","100");A.style.width="180px";m=document.createElement("td");m.appendChild(A);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");
-m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("width")+":");g.appendChild(m);var C=document.createElement("input");C.setAttribute("value",k);C.style.width="180px";m=document.createElement("td");m.appendChild(C);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("height")+":");g.appendChild(m);var F=document.createElement("input");F.setAttribute("value",n);F.style.width="180px";m=document.createElement("td");
-m.appendChild(F);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("dpi")+":");g.appendChild(m);var K=document.createElement("select");K.style.width="180px";m=document.createElement("option");m.setAttribute("value","100");mxUtils.write(m,"100dpi");K.appendChild(m);m=document.createElement("option");m.setAttribute("value","200");mxUtils.write(m,"200dpi");K.appendChild(m);m=document.createElement("option");
-m.setAttribute("value","300");mxUtils.write(m,"300dpi");K.appendChild(m);m=document.createElement("option");m.setAttribute("value","400");mxUtils.write(m,"400dpi");K.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom"));K.appendChild(m);var D=document.createElement("input");D.style.width="180px";D.style.display="none";D.setAttribute("value","100");D.setAttribute("type","number");D.setAttribute("min","50");D.setAttribute("step",
-"50");var O=!1;mxEvent.addListener(K,"change",function(){"custom"==this.value?(this.style.display="none",D.style.display="",D.focus()):(D.value=this.value,O||(A.value=this.value))});mxEvent.addListener(D,"change",function(){var U=parseInt(D.value);isNaN(U)||0>=U?D.style.backgroundColor="red":(D.style.backgroundColor="",O||(A.value=U))});m=document.createElement("td");m.appendChild(K);m.appendChild(D);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize=
+x.appendChild(m));m=document.createElement("td");m.appendChild(x);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("zoom")+" (%):");g.appendChild(m);var B=document.createElement("input");B.setAttribute("type","number");B.setAttribute("value","100");B.style.width="180px";m=document.createElement("td");m.appendChild(B);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");
+m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("width")+":");g.appendChild(m);var C=document.createElement("input");C.setAttribute("value",k);C.style.width="180px";m=document.createElement("td");m.appendChild(C);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("height")+":");g.appendChild(m);var G=document.createElement("input");G.setAttribute("value",n);G.style.width="180px";m=document.createElement("td");
+m.appendChild(G);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("dpi")+":");g.appendChild(m);var J=document.createElement("select");J.style.width="180px";m=document.createElement("option");m.setAttribute("value","100");mxUtils.write(m,"100dpi");J.appendChild(m);m=document.createElement("option");m.setAttribute("value","200");mxUtils.write(m,"200dpi");J.appendChild(m);m=document.createElement("option");
+m.setAttribute("value","300");mxUtils.write(m,"300dpi");J.appendChild(m);m=document.createElement("option");m.setAttribute("value","400");mxUtils.write(m,"400dpi");J.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom"));J.appendChild(m);var D=document.createElement("input");D.style.width="180px";D.style.display="none";D.setAttribute("value","100");D.setAttribute("type","number");D.setAttribute("min","50");D.setAttribute("step",
+"50");var N=!1;mxEvent.addListener(J,"change",function(){"custom"==this.value?(this.style.display="none",D.style.display="",D.focus()):(D.value=this.value,N||(B.value=this.value))});mxEvent.addListener(D,"change",function(){var V=parseInt(D.value);isNaN(V)||0>=V?D.style.backgroundColor="red":(D.style.backgroundColor="",N||(B.value=V))});m=document.createElement("td");m.appendChild(J);m.appendChild(D);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize=
"10pt";mxUtils.write(m,mxResources.get("background")+":");g.appendChild(m);var Q=document.createElement("input");Q.setAttribute("type","checkbox");Q.checked=null==d.background||d.background==mxConstants.NONE;m=document.createElement("td");m.appendChild(Q);mxUtils.write(m,mxResources.get("transparent"));g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("grid")+":");g.appendChild(m);var R=document.createElement("input");
R.setAttribute("type","checkbox");R.checked=!1;m=document.createElement("td");m.appendChild(R);g.appendChild(m);u.appendChild(g);g=document.createElement("tr");m=document.createElement("td");m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("borderWidth")+":");g.appendChild(m);var P=document.createElement("input");P.setAttribute("type","number");P.setAttribute("value",ExportDialog.lastBorderValue);P.style.width="180px";m=document.createElement("td");m.appendChild(P);g.appendChild(m);u.appendChild(g);
-e.appendChild(u);mxEvent.addListener(x,"change",b);b();mxEvent.addListener(A,"change",function(){O=!0;var U=Math.max(0,parseFloat(A.value)||100)/100;A.value=parseFloat((100*U).toFixed(2));0<k?(C.value=Math.floor(k*U),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(C,"change",function(){var U=parseInt(C.value)/k;0<U?(A.value=parseFloat((100*U).toFixed(2)),F.value=Math.floor(n*U)):(A.value="100",C.value=k,F.value=n);f()});mxEvent.addListener(F,"change",function(){var U=
-parseInt(F.value)/n;0<U?(A.value=parseFloat((100*U).toFixed(2)),C.value=Math.floor(k*U)):(A.value="100",C.value=k,F.value=n);f()});g=document.createElement("tr");m=document.createElement("td");m.setAttribute("align","right");m.style.paddingTop="22px";m.colSpan=2;var Z=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(A.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var U=r.value,fa=x.value,ha=Math.max(0,parseFloat(A.value)||100)/100,ba=Math.max(0,parseInt(P.value)),
-qa=d.background,I=Math.max(1,parseInt(D.value));if(("svg"==fa||"png"==fa||"pdf"==fa)&&Q.checked)qa=null;else if(null==qa||qa==mxConstants.NONE)qa="#ffffff";ExportDialog.lastBorderValue=ba;ExportDialog.exportFile(a,U,fa,qa,ha,ba,I,R.checked)}}));Z.className="geBtn gePrimaryBtn";var T=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});T.className="geBtn";a.editor.cancelFirst?(m.appendChild(T),m.appendChild(Z)):(m.appendChild(Z),m.appendChild(T));g.appendChild(m);u.appendChild(g);e.appendChild(u);
+e.appendChild(u);mxEvent.addListener(x,"change",b);b();mxEvent.addListener(B,"change",function(){N=!0;var V=Math.max(0,parseFloat(B.value)||100)/100;B.value=parseFloat((100*V).toFixed(2));0<k?(C.value=Math.floor(k*V),G.value=Math.floor(n*V)):(B.value="100",C.value=k,G.value=n);f()});mxEvent.addListener(C,"change",function(){var V=parseInt(C.value)/k;0<V?(B.value=parseFloat((100*V).toFixed(2)),G.value=Math.floor(n*V)):(B.value="100",C.value=k,G.value=n);f()});mxEvent.addListener(G,"change",function(){var V=
+parseInt(G.value)/n;0<V?(B.value=parseFloat((100*V).toFixed(2)),C.value=Math.floor(k*V)):(B.value="100",C.value=k,G.value=n);f()});g=document.createElement("tr");m=document.createElement("td");m.setAttribute("align","right");m.style.paddingTop="22px";m.colSpan=2;var Z=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(){if(0>=parseInt(B.value))mxUtils.alert(mxResources.get("drawingEmpty"));else{var V=r.value,ia=x.value,ha=Math.max(0,parseFloat(B.value)||100)/100,ba=Math.max(0,parseInt(P.value)),
+qa=d.background,O=Math.max(1,parseInt(D.value));if(("svg"==ia||"png"==ia||"pdf"==ia)&&Q.checked)qa=null;else if(null==qa||qa==mxConstants.NONE)qa="#ffffff";ExportDialog.lastBorderValue=ba;ExportDialog.exportFile(a,V,ia,qa,ha,ba,O,R.checked)}}));Z.className="geBtn gePrimaryBtn";var U=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});U.className="geBtn";a.editor.cancelFirst?(m.appendChild(U),m.appendChild(Z)):(m.appendChild(Z),m.appendChild(U));g.appendChild(m);u.appendChild(g);e.appendChild(u);
this.container=e};ExportDialog.lastBorderValue=0;ExportDialog.showGifOption=!0;ExportDialog.showXmlOption=!0;
ExportDialog.exportFile=function(a,b,f,d,g,e,k,n){n=a.editor.graph;if("xml"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(a.editor.getGraphXml()),b,f);else if("svg"==f)ExportDialog.saveLocalFile(a,mxUtils.getXml(n.getSvg(d,g,e)),b,f);else{var u=n.getGraphBounds(),m=mxUtils.createXmlDocument(),r=m.createElement("output");m.appendChild(r);m=new mxXmlCanvas2D(r);m.translate(Math.floor((e/g-u.x)/n.view.scale),Math.floor((e/g-u.y)/n.view.scale));m.scale(g/n.view.scale);(new mxImageExport).drawState(n.getView().getState(n.model.root),
m);r="xml="+encodeURIComponent(mxUtils.getXml(r));m=Math.ceil(u.width*g/n.view.scale+2*e);g=Math.ceil(u.height*g/n.view.scale+2*e);r.length<=MAX_REQUEST_SIZE&&m*g<MAX_AREA?(a.hideDialog(),(new mxXmlRequest(EXPORT_URL,"format="+f+"&filename="+encodeURIComponent(b)+"&bg="+(null!=d?d:"none")+"&w="+m+"&h="+g+"&"+r+"&dpi="+k)).simulate(document,"_blank")):mxUtils.alert(mxResources.get("drawingTooLarge"))}};
ExportDialog.saveLocalFile=function(a,b,f,d){b.length<MAX_REQUEST_SIZE?(a.hideDialog(),(new mxXmlRequest(SAVE_URL,"xml="+encodeURIComponent(b)+"&filename="+encodeURIComponent(f)+"&format="+d)).simulate(document,"_blank")):(mxUtils.alert(mxResources.get("drawingTooLarge")),mxUtils.popup(xml))};
-var EditDataDialog=function(a,b){function f(){0<R.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var d=document.createElement("div"),g=a.editor.graph,e=g.getModel().getValue(b);if(!mxUtils.isNode(e)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",e||"");e=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(T){}var m=new mxForm("properties");m.table.style.width=
-"100%";var r=e.attributes,x=[],A=[],C=0,F=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,K=function(T,U){var fa=document.createElement("div");fa.style.position="relative";fa.style.paddingRight="20px";fa.style.boxSizing="border-box";fa.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
-ha.setAttribute("title",mxResources.get("delete"));ha.style.position="absolute";ha.style.top="4px";ha.style.right="0px";ha.style.margin="0px";ha.style.width="9px";ha.style.height="9px";ha.style.cursor="pointer";ha.appendChild(ba);U=function(qa){return function(){for(var I=0,L=0;L<x.length;L++){if(x[L]==qa){A[L]=null;m.table.deleteRow(I+(null!=F?1:0));break}null!=A[L]&&I++}}}(U);mxEvent.addListener(ha,"click",U);U=T.parentNode;fa.appendChild(T);fa.appendChild(ha);U.appendChild(fa)};k=function(T,U,
-fa){x[T]=U;A[T]=m.addTextarea(x[C]+":",fa,2);A[T].style.width="100%";0<fa.indexOf("\n")&&A[T].setAttribute("rows","2");K(A[T],U);null!=n[U]&&0==n[U].editable&&A[T].setAttribute("disabled","disabled")};u=[];for(var D=g.getModel().getParent(b)==g.getModel().getRoot(),O=0;O<r.length;O++)!D&&"label"==r[O].nodeName||"placeholders"==r[O].nodeName||u.push({name:r[O].nodeName,value:r[O].nodeValue});u.sort(function(T,U){return T.name<U.name?-1:T.name>U.name?1:0});if(null!=F){r=document.createElement("div");
-r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,F);var Q=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(T){mxEvent.isShiftDown(T)&&(T=new FilenameDialog(a,F,mxResources.get("apply"),mxUtils.bind(this,function(U){null!=U&&0<U.length&&U!=F&&(null==g.getModel().getCell(U)?(g.getModel().cellRemoved(b),b.setId(U),F=U,Q.innerHTML=mxUtils.htmlEntities(U),g.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",
-[U])}))}),mxResources.get("id")),a.showDialog(T.container,300,80,!0,!0),T.init())});r.setAttribute("title","Shift+Double Click to Edit ID")}for(O=0;O<u.length;O++)k(C,u[O].name,u[O].value),C++;u=document.createElement("div");u.style.position="absolute";u.style.top="30px";u.style.left="30px";u.style.right="30px";u.style.bottom="80px";u.style.overflowY="auto";u.appendChild(m.table);k=document.createElement("div");k.style.boxSizing="border-box";k.style.paddingRight="160px";k.style.whiteSpace="nowrap";
-k.style.marginTop="6px";k.style.width="100%";var R=document.createElement("input");R.setAttribute("placeholder",mxResources.get("enterPropertyName"));R.setAttribute("type","text");R.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");R.style.boxSizing="border-box";R.style.marginLeft="2px";R.style.width="100%";k.appendChild(R);u.appendChild(k);d.appendChild(u);var P=mxUtils.button(mxResources.get("addProperty"),function(){var T=R.value;if(0<T.length&&"label"!=T&&"placeholders"!=T&&0>T.indexOf(":"))try{var U=
-mxUtils.indexOf(x,T);if(0<=U&&null!=A[U])A[U].focus();else{e.cloneNode(!1).setAttribute(T,"");0<=U&&(x.splice(U,1),A.splice(U,1));x.push(T);var fa=m.addTextarea(T+":","",2);fa.style.width="100%";A.push(fa);K(fa,T);fa.focus()}P.setAttribute("disabled","disabled");R.value=""}catch(ha){mxUtils.alert(ha)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(R,"keypress",function(T){13==T.keyCode&&P.click()});this.init=function(){0<A.length?A[0].focus():R.focus()};P.setAttribute("title",
-mxResources.get("addProperty"));P.setAttribute("disabled","disabled");P.style.textOverflow="ellipsis";P.style.position="absolute";P.style.overflow="hidden";P.style.width="144px";P.style.right="0px";P.className="geBtn";k.appendChild(P);u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});u.setAttribute("title","Escape");u.className="geBtn";var Z=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var T=!1,U=
-0;U<x.length;U++)null==A[U]?e.removeAttribute(x[U]):(e.setAttribute(x[U],A[U].value),T=T||"placeholder"==x[U]&&"1"==e.getAttribute("placeholders"));T&&e.removeAttribute("label");g.getModel().setValue(b,e)}catch(fa){mxUtils.alert(fa)}});Z.setAttribute("title","Ctrl+Enter");Z.className="geBtn gePrimaryBtn";mxEvent.addListener(d,"keypress",function(T){13==T.keyCode&&mxEvent.isControlDown(T)&&Z.click()});mxEvent.addListener(R,"keyup",f);mxEvent.addListener(R,"change",f);k=document.createElement("div");
+var EditDataDialog=function(a,b){function f(){0<R.value.length?P.removeAttribute("disabled"):P.setAttribute("disabled","disabled")}var d=document.createElement("div"),g=a.editor.graph,e=g.getModel().getValue(b);if(!mxUtils.isNode(e)){var k=mxUtils.createXmlDocument().createElement("object");k.setAttribute("label",e||"");e=k}var n={};try{var u=mxUtils.getValue(a.editor.graph.getCurrentCellStyle(b),"metaData",null);null!=u&&(n=JSON.parse(u))}catch(U){}var m=new mxForm("properties");m.table.style.width=
+"100%";var r=e.attributes,x=[],B=[],C=0,G=null!=EditDataDialog.getDisplayIdForCell?EditDataDialog.getDisplayIdForCell(a,b):null,J=function(U,V){var ia=document.createElement("div");ia.style.position="relative";ia.style.paddingRight="20px";ia.style.boxSizing="border-box";ia.style.width="100%";var ha=document.createElement("a"),ba=mxUtils.createImage(Dialog.prototype.closeImage);ba.style.height="9px";ba.style.fontSize="9px";ba.style.marginBottom=mxClient.IS_IE11?"-1px":"5px";ha.className="geButton";
+ha.setAttribute("title",mxResources.get("delete"));ha.style.position="absolute";ha.style.top="4px";ha.style.right="0px";ha.style.margin="0px";ha.style.width="9px";ha.style.height="9px";ha.style.cursor="pointer";ha.appendChild(ba);V=function(qa){return function(){for(var O=0,S=0;S<x.length;S++){if(x[S]==qa){B[S]=null;m.table.deleteRow(O+(null!=G?1:0));break}null!=B[S]&&O++}}}(V);mxEvent.addListener(ha,"click",V);V=U.parentNode;ia.appendChild(U);ia.appendChild(ha);V.appendChild(ia)};k=function(U,V,
+ia){x[U]=V;B[U]=m.addTextarea(x[C]+":",ia,2);B[U].style.width="100%";0<ia.indexOf("\n")&&B[U].setAttribute("rows","2");J(B[U],V);null!=n[V]&&0==n[V].editable&&B[U].setAttribute("disabled","disabled")};u=[];for(var D=g.getModel().getParent(b)==g.getModel().getRoot(),N=0;N<r.length;N++)!D&&"label"==r[N].nodeName||"placeholders"==r[N].nodeName||u.push({name:r[N].nodeName,value:r[N].nodeValue});u.sort(function(U,V){return U.name<V.name?-1:U.name>V.name?1:0});if(null!=G){r=document.createElement("div");
+r.style.width="100%";r.style.fontSize="11px";r.style.textAlign="center";mxUtils.write(r,G);var Q=m.addField(mxResources.get("id")+":",r);mxEvent.addListener(r,"dblclick",function(U){mxEvent.isShiftDown(U)&&(U=new FilenameDialog(a,G,mxResources.get("apply"),mxUtils.bind(this,function(V){null!=V&&0<V.length&&V!=G&&(null==g.getModel().getCell(V)?(g.getModel().cellRemoved(b),b.setId(V),G=V,Q.innerHTML=mxUtils.htmlEntities(V),g.getModel().cellAdded(b)):a.handleError({message:mxResources.get("alreadyExst",
+[V])}))}),mxResources.get("id")),a.showDialog(U.container,300,80,!0,!0),U.init())});r.setAttribute("title","Shift+Double Click to Edit ID")}for(N=0;N<u.length;N++)k(C,u[N].name,u[N].value),C++;u=document.createElement("div");u.style.position="absolute";u.style.top="30px";u.style.left="30px";u.style.right="30px";u.style.bottom="80px";u.style.overflowY="auto";u.appendChild(m.table);k=document.createElement("div");k.style.boxSizing="border-box";k.style.paddingRight="160px";k.style.whiteSpace="nowrap";
+k.style.marginTop="6px";k.style.width="100%";var R=document.createElement("input");R.setAttribute("placeholder",mxResources.get("enterPropertyName"));R.setAttribute("type","text");R.setAttribute("size",mxClient.IS_IE||mxClient.IS_IE11?"36":"40");R.style.boxSizing="border-box";R.style.marginLeft="2px";R.style.width="100%";k.appendChild(R);u.appendChild(k);d.appendChild(u);var P=mxUtils.button(mxResources.get("addProperty"),function(){var U=R.value;if(0<U.length&&"label"!=U&&"placeholders"!=U&&0>U.indexOf(":"))try{var V=
+mxUtils.indexOf(x,U);if(0<=V&&null!=B[V])B[V].focus();else{e.cloneNode(!1).setAttribute(U,"");0<=V&&(x.splice(V,1),B.splice(V,1));x.push(U);var ia=m.addTextarea(U+":","",2);ia.style.width="100%";B.push(ia);J(ia,U);ia.focus()}P.setAttribute("disabled","disabled");R.value=""}catch(ha){mxUtils.alert(ha)}else mxUtils.alert(mxResources.get("invalidName"))});mxEvent.addListener(R,"keypress",function(U){13==U.keyCode&&P.click()});this.init=function(){0<B.length?B[0].focus():R.focus()};P.setAttribute("title",
+mxResources.get("addProperty"));P.setAttribute("disabled","disabled");P.style.textOverflow="ellipsis";P.style.position="absolute";P.style.overflow="hidden";P.style.width="144px";P.style.right="0px";P.className="geBtn";k.appendChild(P);u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog.apply(a,arguments)});u.setAttribute("title","Escape");u.className="geBtn";var Z=mxUtils.button(mxResources.get("apply"),function(){try{a.hideDialog.apply(a,arguments);e=e.cloneNode(!0);for(var U=!1,V=
+0;V<x.length;V++)null==B[V]?e.removeAttribute(x[V]):(e.setAttribute(x[V],B[V].value),U=U||"placeholder"==x[V]&&"1"==e.getAttribute("placeholders"));U&&e.removeAttribute("label");g.getModel().setValue(b,e)}catch(ia){mxUtils.alert(ia)}});Z.setAttribute("title","Ctrl+Enter");Z.className="geBtn gePrimaryBtn";mxEvent.addListener(d,"keypress",function(U){13==U.keyCode&&mxEvent.isControlDown(U)&&Z.click()});mxEvent.addListener(R,"keyup",f);mxEvent.addListener(R,"change",f);k=document.createElement("div");
k.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))r=document.createElement("span"),r.style.marginRight="10px",D=document.createElement("input"),D.setAttribute("type","checkbox"),D.style.marginRight="6px","1"==e.getAttribute("placeholders")&&(D.setAttribute("checked","checked"),D.defaultChecked=!0),mxEvent.addListener(D,"click",function(){"1"==e.getAttribute("placeholders")?
-e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")}),r.appendChild(D),mxUtils.write(r,mxResources.get("placeholders")),null!=EditDataDialog.placeholderHelpLink&&(D=document.createElement("a"),D.setAttribute("href",EditDataDialog.placeholderHelpLink),D.setAttribute("title",mxResources.get("help")),D.setAttribute("target","_blank"),D.style.marginLeft="8px",D.style.cursor="help",O=document.createElement("img"),mxUtils.setOpacity(O,50),O.style.height="16px",O.style.width="16px",O.setAttribute("border",
-"0"),O.setAttribute("valign","middle"),O.style.marginTop=mxClient.IS_IE11?"0px":"-4px",O.setAttribute("src",Editor.helpImage),D.appendChild(O),r.appendChild(D)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(Z)):(k.appendChild(Z),k.appendChild(u));d.appendChild(k);this.container=d};EditDataDialog.getDisplayIdForCell=function(a,b){var f=null;null!=a.editor.graph.getModel().getParent(b)&&(f=b.getId());return f};EditDataDialog.placeholderHelpLink=null;
+e.removeAttribute("placeholders"):e.setAttribute("placeholders","1")}),r.appendChild(D),mxUtils.write(r,mxResources.get("placeholders")),null!=EditDataDialog.placeholderHelpLink&&(D=document.createElement("a"),D.setAttribute("href",EditDataDialog.placeholderHelpLink),D.setAttribute("title",mxResources.get("help")),D.setAttribute("target","_blank"),D.style.marginLeft="8px",D.style.cursor="help",N=document.createElement("img"),mxUtils.setOpacity(N,50),N.style.height="16px",N.style.width="16px",N.setAttribute("border",
+"0"),N.setAttribute("valign","middle"),N.style.marginTop=mxClient.IS_IE11?"0px":"-4px",N.setAttribute("src",Editor.helpImage),D.appendChild(N),r.appendChild(D)),k.appendChild(r);a.editor.cancelFirst?(k.appendChild(u),k.appendChild(Z)):(k.appendChild(Z),k.appendChild(u));d.appendChild(k);this.container=d};EditDataDialog.getDisplayIdForCell=function(a,b){var f=null;null!=a.editor.graph.getModel().getParent(b)&&(f=b.getId());return f};EditDataDialog.placeholderHelpLink=null;
var LinkDialog=function(a,b,f,d){var g=document.createElement("div");mxUtils.write(g,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 k=document.createElement("input");k.setAttribute("value",b);k.setAttribute("placeholder","http://www.example.com/");k.setAttribute("type","text");
k.style.marginTop="6px";k.style.width="400px";k.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";k.style.backgroundRepeat="no-repeat";k.style.backgroundPosition="100% 50%";k.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(){k.value="";k.focus()});e.appendChild(k);e.appendChild(b);g.appendChild(e);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};e=document.createElement("div");e.style.marginTop="18px";e.style.textAlign="right";mxEvent.addListener(k,"keypress",function(n){13==n.keyCode&&(a.hideDialog(),d(k.value))});b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});
b.className="geBtn";a.editor.cancelFirst&&e.appendChild(b);f=mxUtils.button(f,function(){a.hideDialog();d(k.value)});f.className="geBtn gePrimaryBtn";e.appendChild(f);a.editor.cancelFirst||e.appendChild(b);g.appendChild(e);this.container=g},OutlineWindow=function(a,b,f,d,g){var e=a.editor.graph,k=document.createElement("div");k.style.position="absolute";k.style.width="100%";k.style.height="100%";k.style.overflow="hidden";this.window=new mxWindow(mxResources.get("outline"),k,b,f,d,g,!0,!0);this.window.minimumSize=
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(m,r){var x=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;m=Math.max(0,Math.min(m,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));r=Math.max(0,Math.min(r,x-this.table.clientHeight-("1"==urlParams.sketch?
3:48)));this.getX()==m&&this.getY()==r||mxWindow.prototype.setLocation.apply(this,arguments)};var n=mxUtils.bind(this,function(){var m=this.window.getX(),r=this.window.getY();this.window.setLocation(m,r)});mxEvent.addListener(window,"resize",n);var u=a.createOutline(this.window);this.destroy=function(){mxEvent.removeListener(window,"resize",n);this.window.destroy();u.destroy()};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit();u.setSuspended(!1)}));this.window.addListener(mxEvent.HIDE,
-mxUtils.bind(this,function(){u.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){u.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){u.setSuspended(!0)}));u.init(k);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(m,r){for(var x=!1,A=mxEvent.getSource(m);null!=A;){if(A==u.svg){x=!0;break}A=A.parentNode}x&&(x=e.zoomFactor,null!=m.deltaY&&Math.round(m.deltaY)!=m.deltaY&&(x=1+Math.abs(m.deltaY)/
-20*(x-1)),e.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,b,f,d,g){function e(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=T.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(U):null!=
-U.parentNode&&U.parentNode.removeChild(U)}function n(){function ha(I,L,H,S){var V=document.createElement("div");V.className="geToolbarContainer";T.put(H,V);V.style.overflow="hidden";V.style.position="relative";V.style.padding="4px";V.style.height="22px";V.style.display="block";V.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";V.style.borderWidth="0px 0px 1px 0px";V.style.borderColor="#c3c3c3";V.style.borderStyle="solid";V.style.whiteSpace="nowrap";V.setAttribute("title",
-L);var ea=document.createElement("div");ea.style.display="inline-block";ea.style.width="100%";ea.style.textOverflow="ellipsis";ea.style.overflow="hidden";mxEvent.addListener(V,"dragover",function(W){W.dataTransfer.dropEffect="move";C=I;W.stopPropagation();W.preventDefault()});mxEvent.addListener(V,"dragstart",function(W){A=V;mxClient.IS_FF&&W.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(V,"dragend",function(W){null!=A&&null!=C&&u.addCell(H,u.model.root,C);C=A=null;W.stopPropagation();
-W.preventDefault()});var ka=document.createElement("img");ka.setAttribute("draggable","false");ka.setAttribute("align","top");ka.setAttribute("border","0");ka.style.width="16px";ka.style.padding="0px 6px 0 4px";ka.style.marginTop="2px";ka.style.cursor="pointer";ka.setAttribute("title",mxResources.get(u.model.isVisible(H)?"hide":"show"));u.model.isVisible(H)?(ka.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(V,75)):(ka.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(V,25));Editor.isDarkMode()&&
-(ka.style.filter="invert(100%)");ea.appendChild(ka);mxEvent.addListener(ka,"click",function(W){u.model.setVisible(H,!u.model.isVisible(H));mxEvent.consume(W)});ka=document.createElement("img");ka.setAttribute("draggable","false");ka.setAttribute("align","top");ka.setAttribute("border","0");ka.style.width="16px";ka.style.padding="0px 6px 0 0";ka.style.marginTop="2px";ka.setAttribute("title",mxResources.get("lockUnlock"));var wa=u.getCurrentCellStyle(H);"1"==mxUtils.getValue(wa,"locked","0")?(ka.setAttribute("src",
-Editor.lockedImage),mxUtils.setOpacity(ka,75)):(ka.setAttribute("src",Editor.unlockedImage),mxUtils.setOpacity(ka,25));Editor.isDarkMode()&&(ka.style.filter="invert(100%)");u.isEnabled()&&(ka.style.cursor="pointer");mxEvent.addListener(ka,"click",function(W){if(u.isEnabled()){var aa=null;u.getModel().beginUpdate();try{aa="1"==mxUtils.getValue(wa,"locked","0")?null:"1",u.setCellStyles("locked",aa,[H])}finally{u.getModel().endUpdate()}"1"==aa&&u.removeSelectionCells(u.getModel().getDescendants(H));
-mxEvent.consume(W)}});ea.appendChild(ka);ka=document.createElement("span");mxUtils.write(ka,L);ka.style.display="block";ka.style.whiteSpace="nowrap";ka.style.overflow="hidden";ka.style.textOverflow="ellipsis";ka.style.position="absolute";ka.style.left="52px";ka.style.right="8px";ka.style.top="8px";ea.appendChild(ka);V.appendChild(ea);if(u.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_IE&&10>document.documentMode)L=document.createElement("div"),L.style.display="block",L.style.textAlign=
-"right",L.style.whiteSpace="nowrap",L.style.position="absolute",L.style.right="16px",L.style.top="6px",0<I&&(ea=document.createElement("a"),ea.setAttribute("title",mxResources.get("toBack")),ea.className="geButton",ea.style.cssFloat="none",ea.innerHTML="&#9660;",ea.style.width="14px",ea.style.height="14px",ea.style.fontSize="14px",ea.style.margin="0px",ea.style.marginTop="-1px",L.appendChild(ea),mxEvent.addListener(ea,"click",function(W){u.isEnabled()&&u.addCell(H,u.model.root,I-1);mxEvent.consume(W)})),
-0<=I&&I<F-1&&(ea=document.createElement("a"),ea.setAttribute("title",mxResources.get("toFront")),ea.className="geButton",ea.style.cssFloat="none",ea.innerHTML="&#9650;",ea.style.width="14px",ea.style.height="14px",ea.style.fontSize="14px",ea.style.margin="0px",ea.style.marginTop="-1px",L.appendChild(ea),mxEvent.addListener(ea,"click",function(W){u.isEnabled()&&u.addCell(H,u.model.root,I+1);mxEvent.consume(W)})),V.appendChild(L);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(V.setAttribute("draggable",
-"true"),V.style.cursor="move")}mxEvent.addListener(V,"dblclick",function(W){var aa=mxEvent.getSource(W).nodeName;"INPUT"!=aa&&"IMG"!=aa&&(e(H),mxEvent.consume(W))});u.getDefaultParent()==H&&(V.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",V.style.fontWeight=u.isEnabled()?"bold":"",K=H);mxEvent.addListener(V,"click",function(W){u.isEnabled()&&(u.setDefaultParent(S),u.view.setCurrentRoot(null),mxEvent.isShiftDown(W)&&u.setSelectionCells(H.children),mxEvent.consume(W))});x.appendChild(V)}
-F=u.model.getChildCount(u.model.root);x.innerText="";T.clear();for(var ba=F-1;0<=ba;ba--)mxUtils.bind(this,function(I){ha(ba,u.convertValueToString(I)||mxResources.get("background"),I,I)})(u.model.getChildAt(u.model.root,ba));var qa=u.convertValueToString(K)||mxResources.get("background");Q.setAttribute("title",mxResources.get("removeIt",[qa]));Z.setAttribute("title",mxResources.get("duplicateIt",[qa]));u.isSelectionEmpty()&&(R.className="geButton mxDisabled");k()}var u=a.editor.graph,m=document.createElement("div");
+mxUtils.bind(this,function(){u.setSuspended(!0)}));this.window.addListener(mxEvent.NORMALIZE,mxUtils.bind(this,function(){u.setSuspended(!1)}));this.window.addListener(mxEvent.MINIMIZE,mxUtils.bind(this,function(){u.setSuspended(!0)}));u.init(k);a.actions.get("zoomIn");a.actions.get("zoomOut");mxEvent.addMouseWheelListener(function(m,r){for(var x=!1,B=mxEvent.getSource(m);null!=B;){if(B==u.svg){x=!0;break}B=B.parentNode}x&&(x=e.zoomFactor,null!=m.deltaY&&Math.round(m.deltaY)!=m.deltaY&&(x=1+Math.abs(m.deltaY)/
+20*(x-1)),e.lazyZoom(r,null,null,x),mxEvent.consume(m))})},LayersWindow=function(a,b,f,d,g){function e(ha){if(u.isEnabled()&&null!=ha){var ba=u.convertValueToString(ha);ba=new FilenameDialog(a,ba||mxResources.get("background"),mxResources.get("rename"),mxUtils.bind(this,function(qa){null!=qa&&u.cellLabelChanged(ha,qa)}),mxResources.get("enterName"));a.showDialog(ba.container,300,100,!0,!0);ba.init()}}function k(){var ha=U.get(u.getLayerForCells(u.getSelectionCells()));null!=ha?ha.appendChild(V):null!=
+V.parentNode&&V.parentNode.removeChild(V)}function n(){function ha(O,S,F,L){var T=document.createElement("div");T.className="geToolbarContainer";U.put(F,T);T.style.overflow="hidden";T.style.position="relative";T.style.padding="4px";T.style.height="22px";T.style.display="block";T.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";T.style.borderWidth="0px 0px 1px 0px";T.style.borderColor="#c3c3c3";T.style.borderStyle="solid";T.style.whiteSpace="nowrap";T.setAttribute("title",
+S);var ca=document.createElement("div");ca.style.display="inline-block";ca.style.width="100%";ca.style.textOverflow="ellipsis";ca.style.overflow="hidden";mxEvent.addListener(T,"dragover",function(W){W.dataTransfer.dropEffect="move";C=O;W.stopPropagation();W.preventDefault()});mxEvent.addListener(T,"dragstart",function(W){B=T;mxClient.IS_FF&&W.dataTransfer.setData("Text","<layer/>")});mxEvent.addListener(T,"dragend",function(W){null!=B&&null!=C&&u.addCell(F,u.model.root,C);C=B=null;W.stopPropagation();
+W.preventDefault()});var fa=document.createElement("img");fa.setAttribute("draggable","false");fa.setAttribute("align","top");fa.setAttribute("border","0");fa.style.width="16px";fa.style.padding="0px 6px 0 4px";fa.style.marginTop="2px";fa.style.cursor="pointer";fa.setAttribute("title",mxResources.get(u.model.isVisible(F)?"hide":"show"));u.model.isVisible(F)?(fa.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(T,75)):(fa.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(T,25));Editor.isDarkMode()&&
+(fa.style.filter="invert(100%)");ca.appendChild(fa);mxEvent.addListener(fa,"click",function(W){u.model.setVisible(F,!u.model.isVisible(F));mxEvent.consume(W)});fa=document.createElement("img");fa.setAttribute("draggable","false");fa.setAttribute("align","top");fa.setAttribute("border","0");fa.style.width="16px";fa.style.padding="0px 6px 0 0";fa.style.marginTop="2px";fa.setAttribute("title",mxResources.get("lockUnlock"));var wa=u.getCurrentCellStyle(F);"1"==mxUtils.getValue(wa,"locked","0")?(fa.setAttribute("src",
+Editor.lockedImage),mxUtils.setOpacity(fa,75)):(fa.setAttribute("src",Editor.unlockedImage),mxUtils.setOpacity(fa,25));Editor.isDarkMode()&&(fa.style.filter="invert(100%)");u.isEnabled()&&(fa.style.cursor="pointer");mxEvent.addListener(fa,"click",function(W){if(u.isEnabled()){var aa=null;u.getModel().beginUpdate();try{aa="1"==mxUtils.getValue(wa,"locked","0")?null:"1",u.setCellStyles("locked",aa,[F])}finally{u.getModel().endUpdate()}"1"==aa&&u.removeSelectionCells(u.getModel().getDescendants(F));
+mxEvent.consume(W)}});ca.appendChild(fa);fa=document.createElement("span");mxUtils.write(fa,S);fa.style.display="block";fa.style.whiteSpace="nowrap";fa.style.overflow="hidden";fa.style.textOverflow="ellipsis";fa.style.position="absolute";fa.style.left="52px";fa.style.right="8px";fa.style.top="8px";ca.appendChild(fa);T.appendChild(ca);if(u.isEnabled()){if(mxClient.IS_TOUCH||mxClient.IS_POINTER||mxClient.IS_IE&&10>document.documentMode)S=document.createElement("div"),S.style.display="block",S.style.textAlign=
+"right",S.style.whiteSpace="nowrap",S.style.position="absolute",S.style.right="16px",S.style.top="6px",0<O&&(ca=document.createElement("a"),ca.setAttribute("title",mxResources.get("toBack")),ca.className="geButton",ca.style.cssFloat="none",ca.innerHTML="&#9660;",ca.style.width="14px",ca.style.height="14px",ca.style.fontSize="14px",ca.style.margin="0px",ca.style.marginTop="-1px",S.appendChild(ca),mxEvent.addListener(ca,"click",function(W){u.isEnabled()&&u.addCell(F,u.model.root,O-1);mxEvent.consume(W)})),
+0<=O&&O<G-1&&(ca=document.createElement("a"),ca.setAttribute("title",mxResources.get("toFront")),ca.className="geButton",ca.style.cssFloat="none",ca.innerHTML="&#9650;",ca.style.width="14px",ca.style.height="14px",ca.style.fontSize="14px",ca.style.margin="0px",ca.style.marginTop="-1px",S.appendChild(ca),mxEvent.addListener(ca,"click",function(W){u.isEnabled()&&u.addCell(F,u.model.root,O+1);mxEvent.consume(W)})),T.appendChild(S);mxClient.IS_SVG&&(!mxClient.IS_IE||10<=document.documentMode)&&(T.setAttribute("draggable",
+"true"),T.style.cursor="move")}mxEvent.addListener(T,"dblclick",function(W){var aa=mxEvent.getSource(W).nodeName;"INPUT"!=aa&&"IMG"!=aa&&(e(F),mxEvent.consume(W))});u.getDefaultParent()==F&&(T.style.background=Editor.isDarkMode()?"#505759":"#e6eff8",T.style.fontWeight=u.isEnabled()?"bold":"",J=F);mxEvent.addListener(T,"click",function(W){u.isEnabled()&&(u.setDefaultParent(L),u.view.setCurrentRoot(null),mxEvent.isShiftDown(W)&&u.setSelectionCells(F.children),mxEvent.consume(W))});x.appendChild(T)}
+G=u.model.getChildCount(u.model.root);x.innerText="";U.clear();for(var ba=G-1;0<=ba;ba--)mxUtils.bind(this,function(O){ha(ba,u.convertValueToString(O)||mxResources.get("background"),O,O)})(u.model.getChildAt(u.model.root,ba));var qa=u.convertValueToString(J)||mxResources.get("background");Q.setAttribute("title",mxResources.get("removeIt",[qa]));Z.setAttribute("title",mxResources.get("duplicateIt",[qa]));u.isSelectionEmpty()&&(R.className="geButton mxDisabled");k()}var u=a.editor.graph,m=document.createElement("div");
m.style.userSelect="none";m.style.background=Editor.isDarkMode()?Dialog.backdropColor:"#fff";m.style.border="1px solid whiteSmoke";m.style.height="100%";m.style.marginBottom="10px";m.style.overflow="auto";var r=EditorUi.compactUi?"26px":"30px",x=document.createElement("div");x.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"#fff";x.style.position="absolute";x.style.overflow="auto";x.style.left="0px";x.style.right="0px";x.style.top="0px";x.style.bottom=parseInt(r)+7+"px";m.appendChild(x);
-var A=null,C=null;mxEvent.addListener(m,"dragover",function(ha){ha.dataTransfer.dropEffect="move";C=0;ha.stopPropagation();ha.preventDefault()});mxEvent.addListener(m,"drop",function(ha){ha.stopPropagation();ha.preventDefault()});var F=null,K=null,D=document.createElement("div");D.className="geToolbarContainer";D.style.position="absolute";D.style.bottom="0px";D.style.left="0px";D.style.right="0px";D.style.height=r;D.style.overflow="hidden";D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";
-D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.borderWidth="1px 0px 0px 0px";D.style.borderColor="#c3c3c3";D.style.borderStyle="solid";D.style.display="block";D.style.whiteSpace="nowrap";var O=document.createElement("a");O.className="geButton";var Q=O.cloneNode(!1);r=document.createElement("img");r.setAttribute("border","0");r.setAttribute("width","22");r.setAttribute("src",Editor.trashImage);r.style.opacity="0.9";Editor.isDarkMode()&&(r.style.filter="invert(100%)");
-Q.appendChild(r);mxEvent.addListener(Q,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.model.root.getIndex(K);u.removeCells([K],!1);0==u.model.getChildCount(u.model.root)?(u.model.add(u.model.root,new mxCell),u.setDefaultParent(null)):0<ba&&ba<=u.model.getChildCount(u.model.root)?u.setDefaultParent(u.model.getChildAt(u.model.root,ba-1)):u.setDefaultParent(null)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(Q.className="geButton mxDisabled");D.appendChild(Q);
-var R=O.cloneNode();R.setAttribute("title",mxUtils.trim(mxResources.get("moveSelectionTo",["..."])));r=r.cloneNode(!1);r.setAttribute("src",Editor.verticalDotsImage);R.appendChild(r);mxEvent.addListener(R,"click",function(ha){if(u.isEnabled()&&!u.isSelectionEmpty()){var ba=mxUtils.getOffset(R);a.showPopupMenu(mxUtils.bind(this,function(qa,I){for(var L=F-1;0<=L;L--)mxUtils.bind(this,function(H){var S=qa.addItem(u.convertValueToString(H)||mxResources.get("background"),null,mxUtils.bind(this,function(){u.moveCells(u.getSelectionCells(),
-0,0,!1,H)}),I);1==u.getSelectionCount()&&u.model.isAncestor(H,u.getSelectionCell())&&qa.addCheckmark(S,Editor.checkmarkImage)})(u.model.getChildAt(u.model.root,L))}),ba.x,ba.y+R.offsetHeight,ha)}});D.appendChild(R);var P=O.cloneNode(!1);P.setAttribute("title",mxResources.get("editData"));r=r.cloneNode(!1);r.setAttribute("src",Editor.editImage);P.appendChild(r);mxEvent.addListener(P,"click",function(ha){u.isEnabled()&&a.showDataDialog(K);mxEvent.consume(ha)});u.isEnabled()||(P.className="geButton mxDisabled");
-D.appendChild(P);var Z=O.cloneNode(!1);Z.setAttribute("title",mxResources.get("duplicate"));r=r.cloneNode(!1);r.setAttribute("src",Editor.duplicateImage);Z.appendChild(r);mxEvent.addListener(Z,"click",function(ha){if(u.isEnabled()){ha=null;u.model.beginUpdate();try{ha=u.cloneCell(K),u.cellLabelChanged(ha,mxResources.get("untitledLayer")),ha.setVisible(!0),ha=u.addCell(ha,u.model.root),u.setDefaultParent(ha)}finally{u.model.endUpdate()}null==ha||u.isCellLocked(ha)||u.selectAll(ha)}});u.isEnabled()||
-(Z.className="geButton mxDisabled");D.appendChild(Z);O=O.cloneNode(!1);O.setAttribute("title",mxResources.get("addLayer"));r=r.cloneNode(!1);r.setAttribute("src",Editor.addImage);O.appendChild(r);mxEvent.addListener(O,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.addCell(new mxCell(mxResources.get("untitledLayer")),u.model.root);u.setDefaultParent(ba)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(O.className="geButton mxDisabled");D.appendChild(O);
-m.appendChild(D);var T=new mxDictionary,U=document.createElement("span");U.setAttribute("title",mxResources.get("selectionOnly"));U.innerHTML="&#8226;";U.style.position="absolute";U.style.fontWeight="bold";U.style.fontSize="16pt";U.style.right="2px";U.style.top="2px";n();u.model.addListener(mxEvent.CHANGE,n);u.addListener("defaultParentChanged",n);u.selectionModel.addListener(mxEvent.CHANGE,function(){u.isSelectionEmpty()?R.className="geButton mxDisabled":R.className="geButton";k()});this.window=
+var B=null,C=null;mxEvent.addListener(m,"dragover",function(ha){ha.dataTransfer.dropEffect="move";C=0;ha.stopPropagation();ha.preventDefault()});mxEvent.addListener(m,"drop",function(ha){ha.stopPropagation();ha.preventDefault()});var G=null,J=null,D=document.createElement("div");D.className="geToolbarContainer";D.style.position="absolute";D.style.bottom="0px";D.style.left="0px";D.style.right="0px";D.style.height=r;D.style.overflow="hidden";D.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";
+D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.borderWidth="1px 0px 0px 0px";D.style.borderColor="#c3c3c3";D.style.borderStyle="solid";D.style.display="block";D.style.whiteSpace="nowrap";var N=document.createElement("a");N.className="geButton";var Q=N.cloneNode(!1);r=document.createElement("img");r.setAttribute("border","0");r.setAttribute("width","22");r.setAttribute("src",Editor.trashImage);r.style.opacity="0.9";Editor.isDarkMode()&&(r.style.filter="invert(100%)");
+Q.appendChild(r);mxEvent.addListener(Q,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.model.root.getIndex(J);u.removeCells([J],!1);0==u.model.getChildCount(u.model.root)?(u.model.add(u.model.root,new mxCell),u.setDefaultParent(null)):0<ba&&ba<=u.model.getChildCount(u.model.root)?u.setDefaultParent(u.model.getChildAt(u.model.root,ba-1)):u.setDefaultParent(null)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(Q.className="geButton mxDisabled");D.appendChild(Q);
+var R=N.cloneNode();R.setAttribute("title",mxUtils.trim(mxResources.get("moveSelectionTo",["..."])));r=r.cloneNode(!1);r.setAttribute("src",Editor.verticalDotsImage);R.appendChild(r);mxEvent.addListener(R,"click",function(ha){if(u.isEnabled()&&!u.isSelectionEmpty()){var ba=mxUtils.getOffset(R);a.showPopupMenu(mxUtils.bind(this,function(qa,O){for(var S=G-1;0<=S;S--)mxUtils.bind(this,function(F){var L=qa.addItem(u.convertValueToString(F)||mxResources.get("background"),null,mxUtils.bind(this,function(){u.moveCells(u.getSelectionCells(),
+0,0,!1,F)}),O);1==u.getSelectionCount()&&u.model.isAncestor(F,u.getSelectionCell())&&qa.addCheckmark(L,Editor.checkmarkImage)})(u.model.getChildAt(u.model.root,S))}),ba.x,ba.y+R.offsetHeight,ha)}});D.appendChild(R);var P=N.cloneNode(!1);P.setAttribute("title",mxResources.get("editData"));r=r.cloneNode(!1);r.setAttribute("src",Editor.editImage);P.appendChild(r);mxEvent.addListener(P,"click",function(ha){u.isEnabled()&&a.showDataDialog(J);mxEvent.consume(ha)});u.isEnabled()||(P.className="geButton mxDisabled");
+D.appendChild(P);var Z=N.cloneNode(!1);Z.setAttribute("title",mxResources.get("duplicate"));r=r.cloneNode(!1);r.setAttribute("src",Editor.duplicateImage);Z.appendChild(r);mxEvent.addListener(Z,"click",function(ha){if(u.isEnabled()){ha=null;u.model.beginUpdate();try{ha=u.cloneCell(J),u.cellLabelChanged(ha,mxResources.get("untitledLayer")),ha.setVisible(!0),ha=u.addCell(ha,u.model.root),u.setDefaultParent(ha)}finally{u.model.endUpdate()}null==ha||u.isCellLocked(ha)||u.selectAll(ha)}});u.isEnabled()||
+(Z.className="geButton mxDisabled");D.appendChild(Z);N=N.cloneNode(!1);N.setAttribute("title",mxResources.get("addLayer"));r=r.cloneNode(!1);r.setAttribute("src",Editor.addImage);N.appendChild(r);mxEvent.addListener(N,"click",function(ha){if(u.isEnabled()){u.model.beginUpdate();try{var ba=u.addCell(new mxCell(mxResources.get("untitledLayer")),u.model.root);u.setDefaultParent(ba)}finally{u.model.endUpdate()}}mxEvent.consume(ha)});u.isEnabled()||(N.className="geButton mxDisabled");D.appendChild(N);
+m.appendChild(D);var U=new mxDictionary,V=document.createElement("span");V.setAttribute("title",mxResources.get("selectionOnly"));V.innerHTML="&#8226;";V.style.position="absolute";V.style.fontWeight="bold";V.style.fontSize="16pt";V.style.right="2px";V.style.top="2px";n();u.model.addListener(mxEvent.CHANGE,n);u.addListener("defaultParentChanged",n);u.selectionModel.addListener(mxEvent.CHANGE,function(){u.isSelectionEmpty()?R.className="geButton mxDisabled":R.className="geButton";k()});this.window=
new mxWindow(mxResources.get("layers"),m,b,f,d,g,!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(){x.scrollTop=x.scrollHeight-x.clientHeight};this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.refreshLayers=n;this.window.setLocation=function(ha,ba){var qa=window.innerHeight||document.body.clientHeight||
-document.documentElement.clientHeight;ha=Math.max(0,Math.min(ha,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));ba=Math.max(0,Math.min(ba,qa-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==ha&&this.getY()==ba||mxWindow.prototype.setLocation.apply(this,arguments)};var fa=mxUtils.bind(this,function(){var ha=this.window.getX(),ba=this.window.getY();this.window.setLocation(ha,ba)});mxEvent.addListener(window,"resize",fa);
-this.destroy=function(){mxEvent.removeListener(window,"resize",fa);this.window.destroy()}};
+document.documentElement.clientHeight;ha=Math.max(0,Math.min(ha,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));ba=Math.max(0,Math.min(ba,qa-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==ha&&this.getY()==ba||mxWindow.prototype.setLocation.apply(this,arguments)};var ia=mxUtils.bind(this,function(){var ha=this.window.getX(),ba=this.window.getY();this.window.setLocation(ha,ba)});mxEvent.addListener(window,"resize",ia);
+this.destroy=function(){mxEvent.removeListener(window,"resize",ia);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";
Sidebar.prototype.searchIndexData="7Z1rU+M40Kh/zVbN+wEq98vHkHDbJUxeHGDrfFEpjkh0cKwc2R6G/fVHchKGKMwuRo7Usr21xQyBzUaPW62+qfuP9tkf3bM/Go0ofg2I+POP5kB+t8Rr8kdztPq54Hi9PMWcs5fodCD/QCP2Ev7RPFvGq0D8Sl389QfhMfVxcINnJJiwiMaUiV8ZzVgcs9W7XxgEdCF/ELO1eDWKOXsmj3QeL8VrjbdXhixgXLzyR6NZS/8RP5EfrTEUX182H7Jb23y73Hzb726+pfO3NWw+89t/F9DZBz/qjuRPsxK4IU+xdQK7JS/3gZghcEcXy5IjuF9bX7+lTXBGwjjdAyglYR2DIgZGMaQboeIgdgNMCL2mGQhDHAQsicXhmMwCAoRF245+2LH43wTPgZCwtDV2JMDsjo4iET1DHJbkB2chEAj9zh6EjiGzYUi5nwSYQ6GwvyU6fTMU/kxW6xO6FQVUt49hXxj6VjA0yoohtSJxOIejIVUQHYMgvCXma3Q+X5A5uiJQD09T+vKWxf5SkPDEOnDwtlns49iXkKYhHJU1tfG1dmIBBMW+MJgKQbzXFEBA2FES4JRD14py8AISzgkHHJUxJhBbEtMXhh7xawVDwhAfmqAppgEcdWHHB/NiTtdwINiJX3vil2gkKIA+Sk2JxJRTqIZVx1B4Zk9XoivG6T8sjHFgn4clkdjj8bBdlnUaavDOkGt6j6YJB2pfmQpgbhnI1DdMEJ2GURCA7Mzdyg07o1sQkPJ/dknAieAZ3hk+jXx2OktoMKfhIjo94zj0l+j70xP1yT6NNaNhTPj5DxLG0fa1OY6EDSa+kWt5okHwfo3NTk8s54PVP6X/fEjqi8jx9jufyI8oXmBJHNBQ/E/DkPjx9gOqsNv1fRO2fQA7xfMh6/QnZztuWszPw3lZgLf2gLcPjQAjwC9JSDj10e7dio69v2971Zu2uDOxqnAlSy7Kgr5eU9zkQ5vPCPrx6L7oqDv7/lbv0N8yQtpb4SAQ8h2JDxxFRYe+82F2Gr1lB/qUBMRnq1UiPjq6YklU+KO0Xts/S3uWFMsheTQZVvDNwL8PqViWWOtr4Yk3m/uK5rA08ojEhYCvpYBHabnHWhiP6yXhOIhOr8/GaIxp+MTxqvA6RynJ/CDk/x/PYLjj+EejJkiKr5NfLPN/LjSkaOC1Uke70A+mtb85PogagHowU/aSrq3Yz2Q/oNU9DGiBeSY3eL1ZaaEfiOIFd+pwH8gY+4I+i5aFfyb9/WeS2X0w+Eyoz9l6ycLCH/O9/0zVgXkoxXc1uj1nbK7JEA3m4igRjuAQ83nRn0xH8QFBbxN0x+SP/BI8F5d2DKfblRX6ifT382xNwKe852OxksI/EeWIz575NPhE1gQ/F/+JtPdd+D7kPZKE6JHx5yjGGyLFfjK99r6PAtiR9xLx3e7HhX8uyo45vPUH5rlM8SwgcdEfiHLMtwEbXlPCVzRUy2KL90g6yiMBfKrcF9+XVzYIZI/xgc4JE278Snxb9MfS2S/R+aAsG8xjeSQzdCaLPIt/vCsFwZBDw2UyhuFlGkNBJAh2z2XF5klAotN67fIcXQzZedGfiBqG/IL2eiP49kzGG4o5Po9mvdtC30YkehaL/R80DJIoDRS//XrRn1N3/5RpfmHnGHlOf8vndBEwxqun9FZTCu0pyf+LLKP2XmjsL9Hmf1D0Z9PraFsEJp7NBeXkRdYAe4T/oD7ZPh2xqV688f8U/SEpcczeFyLLJh7S/rMp/EOpO6HVvFdx2qxKdNqo4RmgttsD5XGCg91p8+t/ir49eEN5mbHwaq2ldFbLXH6c75OaizPGjxn/ZQmchwuxCPRtiP0lQaPtzwv/XNSivsw2wY6U3lPYvcvJMMBRhC7ojBM0XMpccvD2MIr+LNRTJnNCJq9nITjQWRKTeWnQK5FlW9vghon1zEvCXKkzameuJ86HuQw+LjhL1qURdjUGmTkhrwN+mcw2xtECx8LNe5WRxtoZjsgUXSWzoqNXjttWZu9OMPpl/1xuEebyGIby9TI8A+Wec3an4XjPYNdYYfumJXsS3cyn7vGeRLUPbNIfD7yy7IG2YgVlNvqP9xQ2nRhKsBMAn8rbG+o4KM1+0G1xdLxn8TC5LctTUPzhlrWzYSW+ntbbjeLfQe/rHsdj8eWrhDvdWk3m2ygpfMcdpd4je6hHh3O3XathHqFv3Xa9WfjgsnqTzKhID3yfRBGaSKqFB71/xSL7BTEt0MPC14hpZ0n0+HpF56vIb/bmRFp8R+PC89UNtWvx9Qao3S6+AddWenFkDqtrQY6ojyacyTOv+BkMJWjywZzXo8rzHarXSmMv9xTWmR1yLdbTQdH51mu61/70AI9Rs1d85azcUcp+YV8L8kPhLTi7FvLfk6LzVV1po3zPzrzCm8iqGt61HzREmBP8LIeFn7GfRSetNNs0q4rPOJ0vCl+v3tVNomghnnrCPi5BxF5t52tUkIcyNzvGIV6Ursy/aTSOPMTF57sfuWgajVwIvsKN5mmDPRou0OYSS9GRW02NDEeja3QhvhSdsl3felj8wHJ/35bLXr2kxVf+NQ3FFR2zcim0ZdSe22AeFj4Qp10Wrw/5PqTxKzr/ueYlGH2ktgqwwDttPFN0ztr9F7U4y1nSfowG/v9LKC++q6IOrTYap9vBHu4+cqFRd3Qv5euilteGpxyH0RPjq7R71a9bxNPzwld3KaPrDIu6dzIe3BU+raIWxpj1X7zxSeEJq+2/zAbxvHs08go/WbRe2+9FmP2ChRbk+7PCFyiqAxXNVtCNSFyKi9OKx5K9G7AWZBafzFnhS5mb+4yNxkVHk2nR8SpGW/aLPVp8vZtB4UOiSqcjs7W2I9lmaszmxc9wt22q4sfRGF3QoAROttKTKPswKB3OMkWF7mi4KDrlerNjUS1fcJY2QJuXp4BcGS5rVkmnXT6Enh6s1wHFoV94Za342Gavtu56qpRGtq1ejrjC4XxJgsIPSVTqyc2WzFxN0tnsRWes1NeZtfGuULPRLDzhusVj8HpYeF9QCWZkn2Gvx7fwwftuzSZf+UlDEiMv5kQOeio67Xptv07U7CWU6+8e8m7Oig5Z7bxjNFVyXfh7VIor0jV6y+d6Mi38jL6DklujZRmC8APa1WaU5HaE1eYO1xOBe7VKQrGaEmQA1UCd4SNwgkbeTdEZd21eJb6eFv4IVPWF0fjQn2ffR0UH3FAawRi1Mf4ihW9O2doX4LrRSyeCb+ErxpXrw9knw+sAvhncopgh8UfRMasFzEYNtxu6WMYvRH5Fg8KfeXa9khsWLjjBcvTXpPCliOpMNqPKYzwofDFtbz913TAqyeNh4fm2bd7gGZ/X68W/zqrdXVwLMZnTMoQqFCOuZ9QLGRMimzmsA1z86paWzXjFmETLyn47OmSxelQvQQ9b7ZlAWphpSNHD4O+iQ27rjpvRgsxmNCAlylkrCT+jBcxjr/DunnKhxGyR1vi+8MpCyYaYjdaP/y68/Kpd240G4W4Hw/JUgfcUx9qoCXdbDSk5Ll9hIuOwDNUWysUzs/qCxBELS9CQUrkOZdRCFpBfGH/elg+tSPHHRylnoFkb7pb8TKJSdPGzrKAl5oacW3KBZ/JC1PnPmITz4mtsu01AN9zbJRBvCJy7JeCsXNrpGE2wfvdjEhSdsJI6MesTfr/16mUYl6Z2wDaan/q+TteBBivhfD/R4h+Cyn1Vs27LjnbaLHHNeOENaqVRlNl7aZPBCNWLTliZSmc2rC8JNwpPeD/QYbZIYyI8b3Tty9UVm7JSy2zWmJucFT59ojTDMJvQngyRx57iF8wLH9xXSrrMTgkVnB/onLCiQ1ZLa43mAiejwk+A2Pkgu4slNaNW8mRc/MvBjX3Chg1jzmLms60fEpShCFQxL8yOqJv8fVF0vmr3cKNBjDsck1VS+HmhVodZ3pE1wSXo86kIstnpt3L0H0HeC439ZXn69Km6w6xcTzzxb9ERW22N4RH+gwpRLjpk5cKU2eqBLeS05wtnZctMmQ3KeSRGU7Yuw4zyet3meeh5hfcElXiR2aF0nneDpoSvaFgGH1Dtvmw0xOxNC9+xT6lrNtsK2Ct+vyI1hG9WfktyT0oZ5Gy2NtF7KH4eymYQY0oC4ssufeIDlyKrumu5ZSVRImnLAc6kBHd66k1FORutw5iKpRdelq1eUJtOUAlavih5P7ORuE1RHJYrLzblTt+iiTHlif9cdMIH2tjsuZdwTgpf2lnv7NfFmb3GOn0oOt9206II35/d9euFr7y3e1HnfnyJPMJp8RMjljlX6b2j8n3ASVD4085qWOihdONIzHoeD5NbmTeVn5hXiZBjw/YKr46tCvPjoGrwclS+117hx/X19gH3jQkwm5NVhHA4R+slC0l0OsSzgKSD3FdFh66UtDSzlyin9P5o1AQ/8XWSEsznKZAgQOn7Ff0hNLUnNB/tIVzg4lcbNTq6lsnR8F8xFq/LsAXUCujsyv9oz+B6Ug4tpBg4X4iXHO0RbNvmDnxZm45K+kB6oB5IGWyj/T4SjeylZUfjn77VyVMJDudaB+zBUAolBPhgvrsoh4+mzBz6QjX80R6BbLBQDvtUewJGTs9gTdg6IKeDcM7ZgoQsidCE8KgEVYX7BSzZL/tOUnJfRz7GPnpkK1x80vt2T72W2fDRRx2WA7Vq3tTbmQNwuqwnQ9lrufig9+2YeitzlEcX9F0ShjRclIF2bz9x3c9cRqTL2qOxnIBWDiWiXAHuZ44TaNOOhVFTEtFu7Bvj2ceL5wa7FLJtDzeXbTF4dCrMn9K1A85e93m3oaXBeTAdo827VLCNwJ7ixa7rSzm4a7eL0ud+xhme+ziKS4JcbTOeObOtj1z2JhGfGe16lZQSvA0dc0kXeEbjnY7ZqZxS8rch+NeDUTlh2xD26wlKbx4vWfhaTurZm2fnQN0bXpeEtnqdJXszUX3c+2UY5eDeV6azWVDkt8PzksAGoMhvSfwUsJeyAFcG02QOHeoD342n2TVsLAt5ZcpV5usE+uRLAtq+Ttm8A7oO0VlCAxm8LTp0pcHgW2sEC9QfabxEHg2oz8KtL1p0+kpHlex9SvXhV9EW08DXuDS468qFmezzx3LgHTMux2SVg7hSfJX9rr8+8Omoyg8Zg/3AKuVtEPcj/kECEi7isqTiAPidj5QL5qWJY6kJicw1nV8nHhE/4TR+PR3KXhcUXQjyLzgo/LiAltK+JXO+2duC02Iuv0Vv71Rw5KqUZ9YreSAvi3w3lJaSmVVKHrAvcUyeCVkXX4MrI4GzX1PPBXeC+bzwpBWLMHNsNg/S19+98pyUSm+dzLer8gB+w4rfo1bp75m9nXUeoG9J/ML4c2mMkpaiuDOHY/OAPrn+uzTqRPUurUj5Nv1QGuZKNZBZZ4f/SEs9U1/nPqRPlMzRZDsFIs0sF988VGacfMUaTynq8JdTTkKxILnOqJzcs98M1+c+EjrGjxl/LQlyJb/5FU9IF/kFDUhUCtg5RLHygF0S0VZof8VW1KV9xaLCd9ZWr4N/xUTU5Xw9mT6URKpzMMh1aY+pz9kLmZVDaUMA/v2qJNIN4ITcvMOm1q0c+Uxl2FL2+tkcoMtGlJz9LIvZrcSxvpJc00bOnuIXzAk6w5Fw8cvBXenHlD11nwN32XQC8zkqg3EIQZ9vqwvLIeBKCKWXuQJLH/h9SOOy6PG2km2zED7Z1BfKeGE57HEAQcLHx8eSyHdnvx+W0Uj4Rm9vMxFp3Oo8XNDi90fVno6zPfF0mAcsKXxpSr2nNIysZVcl2qRHNHomcVx4oW7rTpDUR30xRLs3KThsJWTVym4E6sOmM+FaDpdYfM4ASSlHXjKLXqO4+E3G9Z2eHPCL43KIZ+KzFt7HVFSLDdx3JEgT9ViIOo7xDEeF1zGKZZj9qo8+9an4IRpwjotf9mZfozySGRoGSVSCeLhdwzC9Vk82fSUvZHvDXfO383gpPKlS3Lrv6Hb08LYUdR9AOZoc6IdUcsA9DHAUoRZqlwS6cg88e6vxXKArHT23DSbr9eL3ae5D0DFv/Msh8rpztfNAvu+ZXuAZp35J+B80PrQi85ckJClz9hSXw5xRskTZ+03mgf1afOIgoJvvkRfj4l/RUrMX2bNzeXD3Rrcl0S9t5bKnFd43+JVw1EB3ZMViUhLyqmb/Qnw9N/TNkjAH4aSOL/9GvVqthsZJENNoz4wv+gPQbgyfywOQ3E92ZuSmdrQc+JVZWXasmhR/kOqdUil81ZWyJ/tbg3JEpOYpOnb1nLWj9Cdnf5dEzFWLMnuWKQ/cnInXVys8C8qiXkBEhMt8mloiTle/ztOScFc0jJWD9FcoDE0uH9H4clh47B0A5+gD5XGCA3RTInkHEYPf1KxXCVYL0MsBHEY87JHx5wVnybqifnzqL9smxKcDmVINcdFhK50V39owfB72rm2zDuxLId7hHE0JX9EQF741lzLCrL77sVnod3hOGZqyl+LX4jW7ipRnbr+QB3APp7nT4l/TUMeBtDIHdXPFLS8OFP7UVHRK9qKMPJA/0pMLKocKF5229rC4fGhv36PgsBXtnf36aJ6w0Rmn8xJc/tpvLZK9L3GuzG/YpoUlGqzXAcVh8VNEfd2O57nyn3IcRmvGC38LTG3TZQf7zeAWyZpezoKg+Mb5gb+fOa71Jegc+8+neO2fDiZD5K0wj9H9xEP1Wq120pS1MA8D1Ljfhx8oPDhdLON3Cw/Ik/w2WmOfhoub9LtRva0+IvFR5uzl4+f19lQOMHX2MTUPwyJySR9Skj8Qy8yDT3uLpg0YzQfGrwk03XZKpg6YTP3QE8ufzEadDeVXVO/X2rKgieIAydph8Wvxtk/Yb2dLuwxsuNNUOsgadSdZZdVIubBq1VPxEngqZJ9C1ujX3BQvC1ux0a+7yeqDiNvxWTmqtqywalesPsmq2W+0K1afZdWqWH2SVbdTa4Ln0jFvHwguLfBcPrgmYIBLBzyXj/L3BsD0wYNp1g8j2McHU4evYRofpFOODabXbNU2ofxNWP/ku3DgQnlgbScRilX/LtQPiZ2FU2vgDVC73Wuf/I0Gc7yO6Q/yNrbRBWQWHN6BdyejunXwW9GCg7tl0wDPxp7cNMRWq+j8jg58U9GCCb1lA99c7B32VjDDxgHDqN4/vCZoAk5fHFVwqVjSNAJKBy6UesvOPurX6jW4VBotS7LSl78OlUqnfVjsfWwqAsD8rStfs9aEJDRK2ap5OEPMhffJ0UT8gMS/Sp1QQ+1eCEmMLOjh34JqA+Zkwaf6LacOZIGyYAoOcYyD1yhGLXG8f3yJExIhK1vujVCjJ8zm/S7OIfm45SckaFb23xu0VgXtS9AqQL8H1GnXmifn8BC1lPmrFrWVQNRyAJGFJOJ7RB0HENU/aIdnklEfPKFGw3yY6B2hutBFgOH0zScX3+AoXm+jhp4YR1cTQLjUe+Dmc9S/o9VspLRGJAjg8vpgJJktXq0afF5Wgisf4qrXHMAFSLzqlfLKQqtZSdeHvK7nJIx3Y7XTutCPZuGW3NG7nnio1RYKyiNhJD8wVDYW4lHb8iw08H15LXh7RxUuIgvic0t+JpHMcNfQrjHg225zoD7LGrGG8B2mu0E65z9jEs5BVwdY49RotKYTdHlesfoEq2ZjMhGbsaL1SVrTcUXrs7Ravcn/VrQ+T6vSWp9j1azVO/DCnnDoVPmpf6PTaVV0fkunXcnO7+m0BZ1Jhef3ePqdKVwuVqIBOy738OXGGp+OvHoEnY61XdWRV0ig07FQS7Gh05XNtuq1Ey9gu6olOXM4imgEl5aNq7bvcfUcw9W1iqvlFi0bF9zf0eq7RatRM1++8/3WQ/V2s9beHyY6TKKYrQjf5Q4mAY6fGF/BhWfhTNyyExp/eIO877fn032IFbR/hTYeIG90BR1Zb39olYXC+w2xVru1kbGTQ2ic/aCRQCMbMcAjeCh05svMNgw7H89MhomtoTTabdTNFwRNlq+RbBz8q2lF6x55MeNY7akOScAsOACHoD5Ua4XqNmsQW5E6OxvE1gKMzcImvR96qC2LGcF7AhasDAmn02j17ie7pJ/sTMj9XTN4qKgsaK0NqjSO6hQqC5pKoho2GmjcRJvJznDpWBIkQadW4fkXPC0X6FjbWi0nhMcank6F51/wtNxQPdbwSOlpgMdjwZJ+HJyftOsNuEwsnFaSSadicsik24LLxIJqkUy6zVbVNe4QSreCsg/l4Rw1+oC3jxWVIqC0KyiHUDoVlEMo3XalaT+iUqnaQyq9SlYUKmT2Qbt65NW7NbicbGia33BqQuYESJ46FafT5fr0aoKEA9m+/NX67n2nBECENHtJXE2+iifl4b1GMVkhPx37ex76AYsSDrgcIWsyLyc8XUfw1FtWxCfqtN3gkzW893U81+ETDekZDufoYnQHXe00zMnNhLMbcVQJfXzTadT8bUR4I05g+RhUy+/5dCo+/8qn14bKp9m1zmd0U+/U0GUPDhRd7yIXKM1GjVRUDqh0KiofUllXVA6o9IDLSlYvMy8qsGXFEpV2ReWAShv4wWwBinfTaNYiUFR61nWtgNKGDcWcpOxaCg43lcHoIiA/T+o18e8IDh0bbhGdrU6vz8aoXq/Vag8DdD/xAAHRnF4uFqZBpF2rnTQa8Klk3UV6VLrtFrph/mYvRSwgaIxDvIBclpdV9+oBuhfKBcdogkPyi9FfNK74pHyaDuiZrPPJtYB0HACSNfKtBWT+U3jOcFkYVbdCKuTBDBhH1pyaLo62TKZdPcAFYlR5CCDddiUeWxo/m8LjQeMCFd9p4mg3KxzvcVTS8R5HR0pHEy4OoyftFgdg6TCNA/hmMY2jD/iUNcyiC3lytXEW7UqJ/sLRE1rj7zZcHEY92Z/NfoXj+ZSJrwE5vSUxx9tC2r+bJ40zePd5NQPw39OFagIaTprysvxgOhzsqo6hYVKs1nrG1qK5YepWmP4T07Rfg01J9YGyTk7OD1OtgvMhnG2RpNTZcNFktXPyIbPG3EfT1kkdvOhY5rM77NGYzZMAUK0tiDP/jVPxepzkwufvljzroaOxssX+7vxCU22ufUKbbXUuWwKuOY0IGrdcOOWz5kxyp9R2gVK9ZQNTddb/G5nqlP8PQvDP96zp67zItMCTyVp9qEsmCbcue8eZ+8OGNbJCaHdXfzdt/fznmsuRKRtlhBqtNarX0OXsHBBCy3ppn+C2Spr+Q+aolZL6DcsK4AHAKqL973hSN+Wth2clR4egRjjGQyLN8O39/5m8/78dmdXsAGKlWbaSA6udWqrXpJLaMuo21hWkDyD97+jufUeJSxyTF/wKr6uEfWK7SHfjBHDhi2kLfY8LoMtkAOxzJzIjFveR4HIDF4zpMIkEs5nYhRrycpmwhgac49eK0DtC/+fCe6PUrTcKVGiWN5wmZDiG00QCzgXlBE3roC/LmFfFKZW/G3VYVBogqLSAUYEhKy3Q94ks6ZW/W52SU1nT+Sle0BiL4yc6HWz/Jv5jcSBRztWg15pRGck4/0HCONq+tiPjp0EO8YKwEWM5PfFGQTljccxW735hsP0vY7ZW+aloejUlkHOIZr35+wEZ8fpuXVEObNC3QegvGf+fiswBmSFnUXRyRvCqonNIZ0QjHyqX5uGxZIyLbKxATjYB5QmezwMClVLLovRcpt0nINOxubeuSCA/PVQ0HziVxtBcr9YkCAjYA8smmwlnsOD0FR+q2bAHZ5rwGQ3BqhtjR9Z6jTmOkwiRgKzkqk/HOFwyNc9pDYz0d/fI1LLtqN36/mjUzrcrzAOSx/xnEktXYtueTawU3bJ//gEDrrnPLePpfixsyXrNeIzOpEdHYiCo6qqIQUJ1QxZAMDXaIHfiltMdDaGAUnVWI5syPzIo75lyODvPvnaXC+T0KVmQ6HT49nep2kfEx2ltyzfP5+QlDRyxgM6RtxR2FRTToX6gvjIx/LXkvNAJh4UulshbEzIHA0kVtGxK/hiQJoQ/MSG9BJo8AUSViM8Lxo0BuOHe9BNYoQLIjKSHh3AGIcUuAe4+YTCsVtX2+zdCAK0Ci3LEVmnhPeMROkE0YqdnAXshaeLtAodQAWUUo1+LFMbntfc9B0y/3lOiesB+kqzQJFmtK2T/jQx9e5NZOKFy4MRGVPwexwswGU3gvM7/L/FjONlx4LQmNIpZWMH6FCwZvqpQfQ4Vk0ktcT7CSd+AJxZj/lrB+hSs1JeuWH2KlcyisorVjhVP41QRWnAazoVCPx1uXgEK6IMSzH/js12dgHO5XV9+hIT1zuCqc1CgrjCoaAxkVNerNfbjCtUnUP2JwZ55oDhtjM8K1X+gSt9qiHZvi8bYF69BqY2BiG1MgyDN4CSBWBH9p7IaMsGqzsWvUauOyM9Qq/T+Zzk90BnHcoUVqh2qOafiHU5H8g+gUDJe/kiXkj0x+B6EvBmT0Hnat+sMcJ2QBTDb+KZwiH+QV8YFngCsgjbM51Xakt/FquUxtv12uMSr2Sa7LDPwT/L1aqNJXlcEx+k432QFF0i2IJ0ekE0cXAhIskIbdSyEZpqsZoEUpEpBbzF5a45fKxw7HGmQ+5e8yGqxX9+N2Q8pOzvNU3ZkT4TMJbOL9M9d5glN8QzO1c56raWjgjZL+zoaeS2PcbkOHKDNm4EBo6WbjwAGfRsTsV5AufGmwqhtH9F2jz1g4dVDwWRZlDYnGKj7eCoRQ4JD41jsnuj0TJg48/TsAsKjpXU8XWzXpQGEE/wcLzlLFksgSJo9rT2jjWQY4NVa+OMXAQ4XRHgOyTqAc6uuradR9OkwASeM0hZCMIgoW6hnHEglH+9wiF2zIrI7JongiAgsKOjbiMTCdpELOxG2DHsqir2SO6jzn+tALK3i9B+cZKu7kzsS0SjGIdwwKSxMaRij2om/RSesn/m7xh5AyDS0HIjcuIyS1epV0PkBJm7Ra9sFkwhBCaCwsOxWXbEIjMetsMjWi0sfxXW4uS4EBIdCw7RgXMul+UupQ2QweBNG//YrLAHl/LEdl/iY03fhem7+eh0ioXB8SCUWtpG9wal4bHhw+kR9giay92jFJGVyR+aJD8Zi6do15e6SdZxwAmnP2A5UeCR4OhGKRBavhQt0RwKCI7JJqgBBdJi3bBlmRAMSwtlEdVWnGJcZ8VWc0BvHCAgUu66QF3NMQzASYjlAvqMB63KbZSgPYm1ASNj2lR8oeZGHzWWAowgIE800db5M0LcbOaEEUPmHrejkUpZykp8bv5DL3Fs4J2EERtP2dJSKrFOVHTzflqeNZ8QS6TtP6JqgtAr27b2B8Orr7LL8eZ0HxI859VNYYCBpGnj5Y7qgP2VjRXmsC7WEpsmMRDDlS9VT2Y62/MldYcrXNATHqf+f8xHNYoK0/YDp9P19Jm1qGmy2IFTjAII0vSd2QcNQ6K+K2ReZ/bFpYAkVnfXj8YBdwDbRNPEDsDf8oAlcGrSvYH0OlremvDDdPg3g2rNcoWKzLWTpDkQ4nKMLLquonDDwMw6oy5/aHZkJgwwMH9Wwb9qlk/YGT2VKbj1FpFAdCLTOvkxla5VgGlqjgpYdWrOC9iG0TSZvImPOINV9H9YRubG7YKJST8Z+pulb+bOaLml4ckGDFTr/gdeMA7pApDfkNn9U9ycf6CwgrIBFCu+RJ39r7lIQ2jSzFf0pUV2HJzc0JGh7T3osX4VCqK/lMaZL0ebixVh8blhc9DxpPS5/hQQDasrQtYhC/NcyfjfBMZQ70o2ODRzrZLWOTof4B41fQU3kaTT3NWwmW0cu5MssyNuwnRQIGB9W2S6drjUiYBzUxh6Rrj0iULxPazIi23iA0h9aZQI6JC5xhLZj4WCg6DYsyYQk8W7yGwwaB2WAxg6WS4I5pC3S7u5HE+qmQFwxTv9hYbxVnkBw1NvKFPi6MSBFuk+pw2FCuLzGH4gPDASFGs3tm0KRzmqCtD1Uy6JjngQYu1N1TsztEC+ZrYSbR9MaYDjCUa/tA+lmur+lB0TIBWAS9Z6xjSK7ucKZRNLfb/mWLQ+mgwHedOF+f19bGDtEHrafFRKMutLspd4ytUHQCZrT8L3vDgWJXkx4i6Q2ur7VAvM2M7nC8h7Lue+nEuOjR8YrNvts0ts1bIUXIYFjtAOBI/39ish7Ilevc46ToBKUfSw39P8ldI7+JFCuDwPhckd8uubMT0vtKzR7aDYZ/80g+grNezRpvKBCskMiB1sLzbIJoHzbqBqo9fFfxPOVidbv8WzQvPMLKj4f8HlzDyo6H9CRxl4F5gMwlcb5LZrNmn6k3crWAfbJihSm0XPOpDhbyCyyhLWpVaowfYBpz2DeGocVqA9ApTZiReY0Imuclu1Hp5d8UwPo7V76Q46dJHEcvB9FCYOYXnX/2wqzx5Hf8dqMl36Hq0KzQ7MvQvQJbOMPu3SEy/HqB4D65wGjowSXK0r/RinaXHWYcGkC0Fj+rAKWEZhUV48EjAUOjNuE8BUOxYLRON2RFaYPMckuoAmnSJiYyUyYTBWmDzGJfVYh+ggRC+icPtG0D1jAIgImdAKNjpyNULF5xyadDLvbU6UHI16TjusK+0sakuj0/GfMk3SqMLC4SF2nYYS3WaZw/8fbheZJClaYBByoCQkC4Zn8I18ENHBCjScBACVjt+A2HlRMd0yIFRijCB6m7Xui7Tuib7/uE1XQPg1tVxtcIdsi+yE2Hwmi0zMMpdZImRyUrd3Pw2Y5OhjQt2vvOxT5sAyDcxLI+NCIJ1BqgJXb7xnTRvkiASUqeo00tMEk4fN2Mk569+IsXQkUNprJRl04AorwKWKCpjh8hoJEkZeuUdUylIZLOllKbKWUivhzKCxlwqEWdnZNi8xvAaFvZ4yBiUSrnLLNFTg2p0oLfRLVDVmA7SBdr9lRTuhbGnpNBwVsKvrSv17iCFC3bcVEzDZ6SBfVdjBTdcAdgJHmIeMI2mAvrbaXulAuGPfJ/GTE8VMsyLC0yGoKqGmQcme5n+nOsjadhIfYh3KTXclhWEHRgMnC8LmdttYSnz6AIhrN/ZZBZoMSksYVC+A09OzaDNFc4eBpMxZx29pz84ZA0BzYcd1MYxt04VyHckY86PNmv12IWRfzT+w/C5tt7ojoZGquo8vmr5D5zycsiSGFPtt1i5oGUjtppZlKr2cYhNwtdwQDal6n5gkydZfRJSJrktBZEjwjTxDBCyh2it7sa10qaV474fQfoWFBq9aGWXN2wtkaDRbb4mMYSKwqFFiapGXTnH27eQUpjmQ1vr2pbxxxCubwtcxjc8Igb70kHMpBYzc+sAvlgz5kzLo2gNSHVX0qOcDOFmbrv50Pj7dsxRmOwFxDVDtEWgJTFW/8O5o7xp6ggulb5pJOqYQmO/sxk7pZH3DHSHxyOFeaDo5mC0fSFok0WyCfTj0LaEZUfkDYisYuFik1jhxVDQukLnAQEWBgFCu4Xm9Y4BKwTYsgyFvLvJ+kgAGvks0CApQsrLf2lXCmiVa5gECPNF6iCfafAbWmtUplM3wCWji72dlnYjTrLltBoG9nBFJTPyXfYR5Hau9WPFIe8k9pzz09CRdAwBlRvCJitWBKatVkqlGV8otPau9uzDh5KHsJf8I+QdfhnMpeh3DuFCvGXc8mr/NwU6N9xtPqFjAy1bHpQf2G0aYnVOpGyeHs4kyHQsvqtcff0NoiOtnVkW3Kp8AQa8AjBulKieqANow6oL8BdAdpywEUIO+ZcjgqHKQITZeyQV0grIIoCUBZBTAEiq3AZPj6+2Xz2UYw5wXkIgmCk2kyIwfn2ZBROG0xGjajYjtWEwrmeAchOx5ZUQdkp25adiLx2aJTHFKhiKPTMznwvP7fMJ5oEAxZIING4n/UrKX/iNejmLNnsvtJyNLZpl8EdQD8QK6UeaWHR1q6uA9ppT8ZbFaty6vhCC81n/zBQOijAxsR4o6A9RQr4LCy1gwvVwRsF2z6fezp+LzYAn0PhfcmtKyj1A5rp45PLfE/UXIIgtZbO4XdCXmYHzg6rgvhxqArHPvCf3l1hJsiZR8Uhxwd218kDD9T4wuRV//wBt/ReY0Ziz5RJQ4Dl2KLWRCvW4aE9o/cBGbDtvDIZ+apg6B1UMRlwdb3AhY7Y1Ps9wLpWbApvBA/O6q9rGzGGM8+0ySj4rXhNSXz+Ss6+9TAdhDMOv/ZnudozJ4Ym8vun46Q0pauC7Her2Ia4jB6uwsQEFfMiW7LJjP29EQc1V2dzEejDqkRp6GsP0SPOHYpEGZTuhRmDUeYdTsWmV3gKEbpG7gBS9mUH1RhHROW+IKm3J0YmELrg2thR6T1V0ifnNH1+0GculFdf0eiGCcch7Ezel5tjmdUZ73j5YqOV8pE6rXMUcIvAlsSHMRLH3NyOgjEZwtxOpV+TObUp6Ez21NxiTIHDa/eMGgyDIXsLUlEsSvklPPSHrkoolEqezeyGXco7TTvVfztE33nQJDs6ZppeZE845iGjkADI35DzOdUrHnhTBpOiW1kNnRzJEeQF+OnJzTgxBm91wWyW4c4XiKxOle47YvdR11ITIGTv+BK2qmrWwCUF7URwU+uMOuDYcZXOHbqcFDQZa7Pyw0dFSuLnQl+q/EQa+bI+aujrpdVZOjRoWK9pmYWLy9uF3hFg1c04dgX63BG7HRTe7nhozyK0YA6GiC3B+6ShEQswNGjwd5+3bwPOp8nm/vvjvKzJnfifbg7gfR6TTknMgeG8+XWcISbKm6Zi7tzw8aiNY1x4IzEwdmoO3KuyFxPN+mVF7nr1SoJ6T/p8eDM+QrF278On4iwhFkSoRGNCHa1ct4mwbUQPfExXQEHJXNzLT5gGMkcmAyqu0IPjtil+evAteR1tw4E4F90HhJXQpxgqN0koTt3hRRo1pzYMV6tmPiZK8l9MEou1W1ppxvxQddyfgN3BaFyk8haoHiH8IbOOHbn2i00CbwjPuNzZzQfHHxhvGk1GDhzCVC7aj83eHfXjiADE3+6JQl3KXUNRtZuk5hTlwLsutcC8wL3PfRdEjgwJ8P3JEYTpwIn7Q4QkZssMV9h3xWRazeBiNxk+RqlxpxsoInXrvBTXQlrcndHFlSs3Kk8LJRgpydeQDc4XCSfmpUNAp7a+K5nLRvrMZ+KfesR/oP67tTXQUnyeAlfuNNy66BpjTVu09HIEWZg/Igpc6fbz8EI58z3XPOidh+IYzViSehMXZ2yRa3ZJI9LQgJ/iSlHA18cDRGdBcSZ6pPdhX2gGBuOYrSm/T7G2HQEo9p6w6w0hjhOZGE75s4cINrBlNt0zV+H9Weypu7kxHq6lwB0cY3xWmzHG3cuhfVsC9gYc2e8LeusCPcTZ7ysXdt/e5uRORNF0j4YdVndknWcOFPipW2O6eKaBEnMHIHV0Y2O68Ly5B+u7ER1pKLxneiF7OUpcKdFr/W96CWhM+64dlI5D1iuON0gYLniWls3TiWsVgXrc7CmURLiFXUFl5IfNo7rnuMwccVN7LQsq60H4hAs3Tt+X4a1JmwdkNMzPHt1xnxQ3MR6rZEV1yRdtSYuVwyIrm7yQ5fWcInDRdp5MXaqpkU316vNjYViwYnvEDM1kGpc1i7ICjszp0S7B7surbE7rNSWFW/fm6Tljovd1I1H5AHLlROyqRt31oaVrFauJDTUJuzGYU3InIgVU+zMoagbTNUl5i3Zi0PjXNR6WPPKawvMFf2lBnKM+0OeWG0QOFMgoVa+Zr81rAvsPqQR+ekILjUCbdzwesRiKcJ/vGNs5YwWU9zuL/S0zhWbK7qsp1vMr08tkOO8HMHVtm2NPbKVQ25RS7vRfD68XNmNLWviFeEnEr+enlG2xP9g7krBfr2m+JKZJ2h46cK/TmyIE4cChtrZbW1cS7JKL6s+Erx2FlvmU1IX2wUOgo1t4T+7kmXTbracBzSWxMhbksCdcnLrW/SC4wV1JlDd1a2+18V1hcN5QNAjjZdOdXzU7SKnzY0uluiBBTFeuHOzrWX7INij5oxZqxuRzZWaM8V1ugVQutT+ImSNRs5c/dC+h6XL69aV4nzrJsYtC0+uWUj/SW1aPKdOFaoo4y4zx2f16aHzMHZmXwKQNuStmENRRuvu5q+cLxpyFkUOodMtstZF55o2eyvn/PJsGl1iXkDX6MqlqGNXO6ytzSxmnKA7YdbG6H7tjPvUte0IKNxccaAsajWfktAnp2JFjGNBzxmrQxvZZuUazMZ4ERJX2oB2dS+Q5MCL+sLY8NnalRia9qUbfWa3iR8Q7E6xmX5QIzdkrip/C1L2SMP5SrBwhJg6qN0ksTXjcXQ6WK2XNCbYobSTbumBl65cAxn3l+5081RFLLse08R1hiMyw85syba2EtPlRUPmJ0GJGj9pE2PCI3/BwbMrwHSvd+UALEY3OAl9Rzv9tTNXsusiG+LV2qGrEor12jWuxba8HDVd21Z4PVF3ijJsWxWS14K71LFZ8SezR6+1iYXMnfoVNXeZvVw2F1yu6C/1FnTLvAJLuy7f0CdX4ojaLfu1iQV0NXMoYamdHdflJRO8aCh0fsxfkfdMZU2Go/rsC8nLY9BzRb2psmfe/H/1A4e2qnJ4Ghe2EeUxOqPOdOlU5csCsB8OiZd2NkmXFnsJl4KEc4eAImbGjVoVnKP637xCO/9JuE+jSp99ktcF5eSFMVec84POItnrpLSBRUuXVNnBkLjsxcU5EXNGhym1eHXj2n9HbELdSfbadtIlMzQMCA4dss/2Ja1jfGtessCVCT/q+Afjtqxk5Y5oabcV0ccVzlmAHcGlPTpaF9cVFvr+MqBzd0RMYdbpGGdGn505H7Wn1+QAyyHRUoKwxg/GK8ZlMZT/jKYcU1dKoqxH/q99grbGa4Xs88i8Zxw7hGzftPjKXSVdZsK0YBx5L3S1coibbRvjTxLLeKKjuIybF3/hV+xMpaJtNXZDnwj6UxyYzlxPOgiMGWc2ZjHjM1ni6UowUREz88Urv5A13ETWNK7GJtQPqe9ayzLbVRhbalMs59I7uj07xp3MPWqO7lDzFYx3OFwQvhuu5I602S4tVrg5I2+6s+K0uTH/GTlW1Kg9aSkfaHJIgkvjvOzv0XSsxCzALgW2bZdN3bEXaeO6gks5P+vGcSWhQ0lftWON+S354Agp1Zw1XkzsYRqgM4d2onaXAm1gIY0xf0UjKl6JcODaxFDbroAnPppwoB4oeUkhOcJNe0CaPrdkhpFbxdmKrBnPcXqERPjFTVpt4wEhjwRP6DJJCzSqpHAmck5HHo0nN2UymMxkpwx3dFnHtnfuPVP0Z7JaO8JrV9Bij1dA5g7Jl3pPzngSRfAia6n5HVNmfdvKbIWDjQvlVhsb+7cmvDANAvG5s8Jm3tAQyFZs5s6kIdUFML89BTGh0hhx5yhQu0GYl7KEO3QPQG1hZh7XtkjPnbTmvq2xa8togVjDFWJKVVDmYdw5EHNnQ+p3+tekNSVhSJ3pWWnbqKhCPRlgybi1I6x2sX1rLvijUylx7flB2rTEB4vSZhgVsk8iW+KApKkkh6DZbuos+9JHbln41uWMsTm6xPGScIeoWSuMiom/PB04VPOvuyWnYsEanBz1gvqZvSAdTkO8Ihy7KlPZ20TlwMpRucoej9BiRYIATZabFbpAq6Vr1mvRYqsVdrXRtVnFLlCtE4cSabqjM7RYceZMYtumTJ3/X+K7UjGnRpkzVxpqgZK2ujuDBNX4stHNlzZIdGjeg26bLB1WY2dDpV2j1vqEvbhz8tUtnnxy9DVzBZRSoZq5RkkLlOe5gslmOGFKArKW3owznnJrP071hXRhPrxc8ZabupWo+eBqOoJLmdH81l7ZNK+WK7zqILRX2xFcVnfjvXfmCKaWbjm4DqYHOicMbYKijvBSbIiW0TPxEW+ac4+xL/50xS/s6jad+CoyjsM0T5heAz1tocclEWrMGe9HCdNkPx731q8PcED5DLuSZFWH3fWz+0T541sH2CH7X20flj1OcSyCrngE9dq+C9XOHmo9FkJXvIS+dlLtWARd8Rv0o2jHIuiKK6HdNetoBDuuENzfxV/x9Y+FsOsIQvVaYCt74UreCFezRCD0XfFDtFtU5g4w9JeMu2MP6tYtHomfK9ag9pyqI/FzxhTUrTY+Ej9nDEHtQqKc+Z1R/9V3KCADzQzc8nPnANFtqncsgM6cINp5/iMBdPQIaWfPoR0JoDNniAIQjA50JpawfwhnbyaXO8AkcvUAAXACC3iOHh4N+4eHgOfowdHM3JPpGPBcOTR6+xHorxSS5UxviB0KuyidmqwrPQnPFaWnRk3tb1xJz1WtB0L0XNF62o0jjwHvhvnOzBVU6l+slx/IFt9zMkdXdLF8wa+OYFSb1lnfwxeEc1fgKTLYsR4vkFfCYp64s4mVE8R63veC8eeAPjlz/1A5RKwXEF1id8IFHe3a5iPAc8Vy1q/aPQI8ZwxnaFVrEp4rhjM8yeMsCedIeVs3YKoWjPWc2xXmM7lwF+llb2KfOz0SUJ+t3eleogZgOtYDMG65bx1oRRt/ErJ2xgJUs23WhS+l54oJqN/8JGd6N2LrxkuWRA7VvEDbv+8YuiKHbWgG4ZitydxVEbR/CWmDzxXpA1exMWYx42nVi5sEO9YzIRMs1oGD4BV5yWxF+EKI4yMn7kRVldSIdaCyWRIWUonSXuluUuxb39iez5hD+JRqXvv4CI7RGQlcie33oF3MFADRRF6KcwQguAtd3pK66xtbjwym9JyxCqGVok5x6Ir5osYE29bDqlP8kzoCD5zVMmUvaOBOQFXhZ78iQbyfH7t0DVhpX2vd+dgBdPTosF/YJufMhc7IXxua2bzB54r0dXSnsh4HnzOVHdDusG7weS4XJYCQwZUzClB13CBYMCtn9J96gxXABk78Z3eErw9O+CQ+R6WvBUDzSXzOnL5K9137zm+Kz5XKSnC3WDf4nLm7r9ygtp5I3+BzpQlgF1zINMXnSgNA9eiwfvLeh0RAQncMOzp20H7C6IEsqexe4tSdOAWilfjfDxKcDjinP2Q7/ItA1rRFjvA7mHvyFQ9ErF8LHHtB5zhyJVOu3oL7it2SA7Hbc1d45XDS5sFL7PGlI8h2MmUb2aMjvPKoa86Bl+fMlgTCiyXVlsyIrNqSmXg9EnfsCqW1knG74gwvFnjhTL2dYoYZN1zP3KlxUkXrK16SJis+Ixx5S3cGuO/r+6+1idNjRnASvyIPB+6kUjvWoTH2jAbhXNoWAg91S+aUM9O4SpNNue7Ep8OuTC9XujN8bZSLJrJoSV29JvGlWgc9XAzHaLh053aTWh78pcmHesgSzknov6Lzn/4Sh+4YaIqsGbdnh0kkFuBKJFa10b6STdbCNWIvYRRjyl0lZlzARpyGz2nMnyXi0KSumGk7X8neqTnaJkumLHHm6GxYPjrPA/JDXmt1hFdHNc2M+wLnkfjUDhFTL1J/paIjH2BIngWuUFNOAfP78o3avTOOpmKamd+aCWeOsOopVxSMB7LPf1JnQthKAMO4RXYlzFc/cQVXu2f7iLxiMXEl1qOW+tiBha7DJ8ZXTl1wUZquGz8hr1crKl6ukGVA9kvK3LmNYTvl+x5awxFobdvVUXIIhzPx624Od/U0aUVxml+SIR9HK437X7njrUVtnEQkWblCK4eeFlq0bhmaYC4Di64Qs51V2uJy5qTs5jAGJxdgrpyS1k2LiSSDvj8J8198QmeLyixsTYfOyTzam+vBEpIlPpwjuLq2I2OytMeZZKUiW8ZtMM+p1K7tOzZTKryiGI2xv6TOtKDsWY8nbrFNEu4vceQKN+t7c5qEoTNxWOsJkfu1W2Uqii7Tk6726P8D";
Sidebar.prototype.gearImage=GRAPH_IMAGE_PATH+"/clipart/Gear_128x128.png";Sidebar.prototype.libAliases={aws2:"aws3",gcp:"gcp2"};Sidebar.prototype.defaultEntries="general;uml;er;bpmn;flowchart;basic;arrows2";Sidebar.prototype.signs="Animals Food Healthcare Nature People Safety Science Sports Tech Transportation Travel".split(" ");Sidebar.prototype.ibm="Analytics Applications Blockchain Data DevOps Infrastructure Management Miscellaneous Security Social Users VPC Boxes Connectors".split(" ");Sidebar.prototype.allied_telesis=
@@ -11126,8 +11126,8 @@ Graph.fileSupport&&(E.addEventListener("dragover",function(v){v.stopPropagation(
function(){b.openLink("mermaid"==l?"https://mermaid-js.github.io/mermaid/#/":"https://plantuml.com/")}),e.className="geBtn",f.appendChild(e));e=mxUtils.button(mxResources.get("close"),function(){E.value==p?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});e.className="geBtn";b.editor.cancelFirst&&f.appendChild(e);g=mxUtils.button(mxResources.get("insert"),function(v){b.hideDialog();d(E.value,c.value,v)});f.appendChild(g);g.className="geBtn gePrimaryBtn";b.editor.cancelFirst||
f.appendChild(e);this.container=f},NewDialog=function(b,f,l,d,t,u,E,c,e,g,k,m,p,v,x,z,y,L){function N(da){null!=da&&(Ba=Ha=da?135:140);da=!0;if(null!=xa)for(;I<xa.length&&(da||0!=mxUtils.mod(I,30));){var wa=xa[I++];wa=D(wa.url,wa.libs,wa.title,wa.tooltip?wa.tooltip:wa.title,wa.select,wa.imgUrl,wa.info,wa.onClick,wa.preview,wa.noImg,wa.clibs);da&&wa.click();da=!1}}function J(){if(Y&&null!=v)l||b.hideDialog(),v(Y,ba,F.value);else if(d)l||b.hideDialog(),d(Q,F.value,ea,P);else{var da=F.value;null!=da&&
0<da.length&&b.pickFolder(b.mode,function(wa){b.createFile(da,Q,null!=P&&0<P.length?P:null,null,function(){b.hideDialog()},null,wa,null,null!=T&&0<T.length?T:null)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function q(da,wa,ta,sa,ra,va,ha){null!=V&&(V.style.backgroundColor="transparent",V.style.border="1px solid transparent");X.removeAttribute("disabled");Q=wa;P=ta;T=va;V=da;Y=sa;ea=ha;ba=ra;V.style.backgroundColor=c;V.style.border=e}function D(da,wa,ta,sa,ra,va,ha,ma,
-aa,fa,na){function la(Ka,Ta){null==Ca?(Oa=Ka,Oa=/^https?:\/\//.test(Oa)&&!b.editor.isCorsEnabledForUrl(Oa)?PROXY_URL+"?url="+encodeURIComponent(Oa):TEMPLATE_PATH+"/"+Oa,mxUtils.get(Oa,mxUtils.bind(this,function(Ua){200<=Ua.getStatus()&&299>=Ua.getStatus()&&(Ca=Ua.getText());Ta(Ca,Oa)}))):Ta(Ca,Oa)}function qa(Ka,Ta,Ua){if(null!=Ka&&mxUtils.isAncestorNode(document.body,ka)){Ka=mxUtils.parseXml(Ka);Ka=Editor.parseDiagramNode(Ka.documentElement);var Va=new mxCodec(Ka.ownerDocument),Za=new mxGraphModel;
-Va.decode(Ka,Za);Ka=Za.root.getChildAt(0).children;b.sidebar.createTooltip(ka,Ka,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=ta?mxResources.get(ta,null,ta):null,!0,new mxPoint(Ta,Ua),!0,function(){Xa=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;q(ka,null,null,da,ha,na)},!0,!1)}}function oa(Ka,Ta){null==da||Sa||
+aa,fa,na){function la(Ka,Ta){null==Ca?(Oa=Ka,Oa=/^https?:\/\//.test(Oa)&&!b.editor.isCorsEnabledForUrl(Oa)?PROXY_URL+"?url="+encodeURIComponent(Oa):TEMPLATE_PATH+"/"+Oa,mxUtils.get(Oa,mxUtils.bind(this,function(Ua){200<=Ua.getStatus()&&299>=Ua.getStatus()&&(Ca=Ua.getText());Ta(Ca,Oa)}))):Ta(Ca,Oa)}function qa(Ka,Ta,Ua){if(null!=Ka&&mxUtils.isAncestorNode(document.body,ka)){Ka=mxUtils.parseXml(Ka);Ka=Editor.parseDiagramNode(Ka.documentElement);var Va=new mxCodec(Ka.ownerDocument),$a=new mxGraphModel;
+Va.decode(Ka,$a);Ka=$a.root.getChildAt(0).children;b.sidebar.createTooltip(ka,Ka,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=ta?mxResources.get(ta,null,ta):null,!0,new mxPoint(Ta,Ua),!0,function(){Xa=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;q(ka,null,null,da,ha,na)},!0,!1)}}function oa(Ka,Ta){null==da||Sa||
b.sidebar.currentElt==ka?b.sidebar.hideTooltip():(b.sidebar.hideTooltip(),null!=Ea?(Ta='<mxfile><diagram id="d" name="n">'+Graph.compress('<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=image;image='+Ea.src+';imageAspect=1;" parent="1" vertex="1"><mxGeometry width="'+Ea.naturalWidth+'" height="'+Ea.naturalHeight+'" as="geometry" /></mxCell></root></mxGraphModel>')+"</diagram></mxfile>",qa(Ta,mxEvent.getClientX(Ka),mxEvent.getClientY(Ka))):(b.sidebar.currentElt=
ka,Sa=!0,la(da,function(Ua){Sa&&b.sidebar.currentElt==ka&&qa(Ua,mxEvent.getClientX(Ka),mxEvent.getClientY(Ka));Sa=!1})))}var ka=document.createElement("div");ka.className="geTemplate";ka.style.position="relative";ka.style.height=Ba+"px";ka.style.width=Ha+"px";var Ca=null,Oa=da;Editor.isDarkMode()&&(ka.style.filter="invert(100%)");null!=ta?ka.setAttribute("title",mxResources.get(ta,null,ta)):null!=sa&&0<sa.length&&ka.setAttribute("title",sa);var Sa=!1,Ea=null;if(null!=va){ka.style.display="inline-flex";
ka.style.justifyContent="center";ka.style.alignItems="center";ra=document.createElement("img");ra.setAttribute("src",va);ra.setAttribute("alt",sa);ra.style.maxWidth=Ba+"px";ra.style.maxHeight=Ha+"px";Ea=ra;var Ia=va.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");ka.appendChild(ra);ra.onerror=function(){this.src!=Ia?this.src=Ia:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addGestureListeners(ka,mxUtils.bind(this,function(Ka){q(ka,null,null,da,ha,na)}),null,null);mxEvent.addListener(ka,
@@ -11526,51 +11526,51 @@ this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.update
"Invalid data",toString:function(){return this.message}};};var f=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(n,B){n=null!=n?n:!0;var K=f.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&K.setAttribute("style",this.graph.currentStyle);var R=this.graph.getBackgroundImageObject(this.graph.backgroundImage,B);null!=R&&K.setAttribute("backgroundImage",JSON.stringify(R));K.setAttribute("math",this.graph.mathEnabled?"1":"0");K.setAttribute("shadow",
this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(R=this.graph.extFonts.map(function(P){return P.name+"^"+P.url}),K.setAttribute("extFonts",R.join("|")));return K};Editor.prototype.isDataSvg=function(n){try{var B=mxUtils.parseXml(n).documentElement.getAttribute("content");if(null!=B&&(null!=B&&"<"!=B.charAt(0)&&"%"!=B.charAt(0)&&(B=unescape(window.atob?atob(B):Base64.decode(cont,B))),null!=B&&"%"==B.charAt(0)&&(B=decodeURIComponent(B)),null!=B&&0<B.length)){var K=
mxUtils.parseXml(B).documentElement;return"mxfile"==K.nodeName||"mxGraphModel"==K.nodeName}}catch(R){}return!1};Editor.prototype.extractGraphModel=function(n,B,K){return Editor.extractGraphModel.apply(this,arguments)};var l=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();
-l.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){d.apply(this,arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(n,B){if("undefined"===typeof window.MathJax){n=null!=n?n:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(P){try{MathJax.typesetClear([P]),MathJax.typeset([P])}catch(T){MathJax.typesetClear([P]),
-null!=T.retry?T.retry.then(function(){MathJax.typeset([P])}):null!=window.console&&console.log("Error in MathJax: "+T.toString())}};window.MathJax=null!=B?B:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var P=0;P<Editor.mathJaxQueue.length;P++)Editor.doMathJaxRender(Editor.mathJaxQueue[P])}}};Editor.MathJaxRender=function(P){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(P):
-Editor.mathJaxQueue.push(P)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var K=Editor.prototype.init;Editor.prototype.init=function(){K.apply(this,arguments);var P=mxUtils.bind(this,function(T,Q){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,P);this.graph.addListener(mxEvent.REFRESH,P)};B=document.getElementsByTagName("script");if(null!=B&&0<B.length){var R=document.createElement("script");
-R.setAttribute("type","text/javascript");R.setAttribute("src",n);B[0].parentNode.appendChild(R)}}};Editor.prototype.csvToArray=function(n){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(n))return null;var B=[];n.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,
-function(K,R,P,T){void 0!==R?B.push(R.replace(/\\'/g,"'")):void 0!==P?B.push(P.replace(/\\"/g,'"')):void 0!==T&&B.push(T);return""});/,\s*$/.test(n)&&B.push("");return B};Editor.prototype.isCorsEnabledForUrl=function(n){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||n.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(n)||
-"https://raw.githubusercontent.com/"===n.substring(0,34)||"https://fonts.googleapis.com/"===n.substring(0,29)||"https://fonts.gstatic.com/"===n.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var n=new mxUrlConverter;n.updateBaseUrl();var B=n.convert,K=this;n.convert=function(R){if(null!=R){var P="http://"==R.substring(0,7)||"https://"==R.substring(0,8);P&&!navigator.onLine?R=Editor.svgBrokenImage.src:!P||R.substring(0,n.baseUrl.length)==n.baseUrl||K.crossOriginImages&&K.isCorsEnabledForUrl(R)?
-"chrome-extension://"==R.substring(0,19)||mxClient.IS_CHROMEAPP||(R=B.apply(this,arguments)):R=PROXY_URL+"?url="+encodeURIComponent(R)}return R};return n};Editor.createSvgDataUri=function(n){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(n)))};Editor.prototype.convertImageToDataUri=function(n,B){try{var K=!0,R=window.setTimeout(mxUtils.bind(this,function(){K=!1;B(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(n))mxUtils.get(n,mxUtils.bind(this,function(T){window.clearTimeout(R);
-K&&B(Editor.createSvgDataUri(T.getText()))}),function(){window.clearTimeout(R);K&&B(Editor.svgBrokenImage.src)});else{var P=new Image;this.crossOriginImages&&(P.crossOrigin="anonymous");P.onload=function(){window.clearTimeout(R);if(K)try{var T=document.createElement("canvas"),Q=T.getContext("2d");T.height=P.height;T.width=P.width;Q.drawImage(P,0,0);B(T.toDataURL())}catch(V){B(Editor.svgBrokenImage.src)}};P.onerror=function(){window.clearTimeout(R);K&&B(Editor.svgBrokenImage.src)};P.src=n}}catch(T){B(Editor.svgBrokenImage.src)}};
-Editor.prototype.convertImages=function(n,B,K,R){null==R&&(R=this.createImageUrlConverter());var P=0,T=K||{};K=mxUtils.bind(this,function(Q,V){Q=n.getElementsByTagName(Q);for(var Y=0;Y<Q.length;Y++)mxUtils.bind(this,function(ea){try{if(null!=ea){var ba=R.convert(ea.getAttribute(V));if(null!=ba&&"data:"!=ba.substring(0,5)){var ca=T[ba];null==ca?(P++,this.convertImageToDataUri(ba,function(ja){null!=ja&&(T[ba]=ja,ea.setAttribute(V,ja));P--;0==P&&B(n)})):ea.setAttribute(V,ca)}else null!=ba&&ea.setAttribute(V,
-ba)}}catch(ja){}})(Q[Y])});K("image","xlink:href");K("img","src");0==P&&B(n)};Editor.base64Encode=function(n){for(var B="",K=0,R=n.length,P,T,Q;K<R;){P=n.charCodeAt(K++)&255;if(K==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((P&3)<<4);B+="==";break}T=n.charCodeAt(K++);if(K==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((P&
-3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2);B+="=";break}Q=n.charCodeAt(K++);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((P&3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2|(Q&192)>>6);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q&63)}return B};
-Editor.prototype.loadUrl=function(n,B,K,R,P,T,Q,V){try{var Y=!Q&&(R||/(\.png)($|\?)/i.test(n)||/(\.jpe?g)($|\?)/i.test(n)||/(\.gif)($|\?)/i.test(n)||/(\.pdf)($|\?)/i.test(n));P=null!=P?P:!0;var ea=mxUtils.bind(this,function(){mxUtils.get(n,mxUtils.bind(this,function(ba){if(200<=ba.getStatus()&&299>=ba.getStatus()){if(null!=B){var ca=ba.getText();if(Y){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){ba=mxUtilsBinaryToArray(ba.request.responseBody).toArray();
-ca=Array(ba.length);for(var ja=0;ja<ba.length;ja++)ca[ja]=String.fromCharCode(ba[ja]);ca=ca.join("")}T=null!=T?T:"data:image/png;base64,";ca=T+Editor.base64Encode(ca)}B(ca)}}else null!=K&&(0==ba.getStatus()?K({message:mxResources.get("accessDenied")},ba):K({message:mxResources.get("error")+" "+ba.getStatus()},ba))}),function(ba){null!=K&&K({message:mxResources.get("error")+" "+ba.getStatus()})},Y,this.timeout,function(){P&&null!=K&&K({code:App.ERROR_TIMEOUT,retry:ea})},V)});ea()}catch(ba){null!=K&&
-K(ba)}};Editor.prototype.absoluteCssFonts=function(n){var B=null;if(null!=n){var K=n.split("url(");if(0<K.length){B=[K[0]];n=window.location.pathname;var R=null!=n?n.lastIndexOf("/"):-1;0<=R&&(n=n.substring(0,R+1));R=document.getElementsByTagName("base");var P=null;null!=R&&0<R.length&&(P=R[0].getAttribute("href"));for(var T=1;T<K.length;T++)if(R=K[T].indexOf(")"),0<R){var Q=Editor.trimCssUrl(K[T].substring(0,R));this.graph.isRelativeUrl(Q)&&(Q=null!=P?P+Q:window.location.protocol+"//"+window.location.hostname+
-("/"==Q.charAt(0)?"":n)+Q);B.push('url("'+Q+'"'+K[T].substring(R))}else B.push(K[T])}else B=[n]}return null!=B?B.join(""):null};Editor.prototype.mapFontUrl=function(n,B,K){/^https?:\/\//.test(B)&&!this.isCorsEnabledForUrl(B)&&(B=PROXY_URL+"?url="+encodeURIComponent(B));K(n,B)};Editor.prototype.embedCssFonts=function(n,B){var K=n.split("url("),R=0;null==this.cachedFonts&&(this.cachedFonts={});var P=mxUtils.bind(this,function(){if(0==R){for(var Y=[K[0]],ea=1;ea<K.length;ea++){var ba=K[ea].indexOf(")");
-Y.push('url("');Y.push(this.cachedFonts[Editor.trimCssUrl(K[ea].substring(0,ba))]);Y.push('"'+K[ea].substring(ba))}B(Y.join(""))}});if(0<K.length){for(n=1;n<K.length;n++){var T=K[n].indexOf(")"),Q=null,V=K[n].indexOf("format(",T);0<V&&(Q=Editor.trimCssUrl(K[n].substring(V+7,K[n].indexOf(")",V))));mxUtils.bind(this,function(Y){if(null==this.cachedFonts[Y]){this.cachedFonts[Y]=Y;R++;var ea="application/x-font-ttf";if("svg"==Q||/(\.svg)($|\?)/i.test(Y))ea="image/svg+xml";else if("otf"==Q||"embedded-opentype"==
-Q||/(\.otf)($|\?)/i.test(Y))ea="application/x-font-opentype";else if("woff"==Q||/(\.woff)($|\?)/i.test(Y))ea="application/font-woff";else if("woff2"==Q||/(\.woff2)($|\?)/i.test(Y))ea="application/font-woff2";else if("eot"==Q||/(\.eot)($|\?)/i.test(Y))ea="application/vnd.ms-fontobject";else if("sfnt"==Q||/(\.sfnt)($|\?)/i.test(Y))ea="application/font-sfnt";this.mapFontUrl(ea,Y,mxUtils.bind(this,function(ba,ca){this.loadUrl(ca,mxUtils.bind(this,function(ja){this.cachedFonts[Y]=ja;R--;P()}),mxUtils.bind(this,
-function(ja){R--;P()}),!0,null,"data:"+ba+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(K[n].substring(0,T)),Q)}P()}else B(n)};Editor.prototype.loadFonts=function(n){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(B){this.resolvedFontCss=B;null!=n&&n()})):null!=n&&n()};Editor.prototype.createGoogleFontCache=function(){var n={},B;for(B in Graph.fontMapping)Graph.isCssFontUrl(B)&&(n[B]=Graph.fontMapping[B]);return n};Editor.prototype.embedExtFonts=
-function(n){var B=this.graph.getCustomFonts();if(0<B.length){var K=[],R=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var P=mxUtils.bind(this,function(){0==R&&this.embedCssFonts(K.join(""),n)}),T=0;T<B.length;T++)mxUtils.bind(this,function(Q,V){Graph.isCssFontUrl(V)?null==this.cachedGoogleFonts[V]?(R++,this.loadUrl(V,mxUtils.bind(this,function(Y){this.cachedGoogleFonts[V]=Y;K.push(Y+"\n");R--;P()}),mxUtils.bind(this,function(Y){R--;K.push("@import url("+
-V+");\n");P()}))):K.push(this.cachedGoogleFonts[V]+"\n"):K.push('@font-face {font-family: "'+Q+'";src: url("'+V+'")}\n')})(B[T].name,B[T].url);P()}else n()};Editor.prototype.addMathCss=function(n){n=n.getElementsByTagName("defs");if(null!=n&&0<n.length)for(var B=document.getElementsByTagName("style"),K=0;K<B.length;K++){var R=mxUtils.getTextContent(B[K]);0>R.indexOf("mxPageSelector")&&0<R.indexOf("MathJax")&&n[0].appendChild(B[K].cloneNode(!0))}};Editor.prototype.addFontCss=function(n,B){B=null!=
-B?B:this.absoluteCssFonts(this.fontCss);if(null!=B){var K=n.getElementsByTagName("defs"),R=n.ownerDocument;0==K.length?(K=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"defs"):R.createElement("defs"),null!=n.firstChild?n.insertBefore(K,n.firstChild):n.appendChild(K)):K=K[0];n=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"style"):R.createElement("style");n.setAttribute("type","text/css");mxUtils.setTextContent(n,B);K.appendChild(n)}};Editor.prototype.isExportToCanvas=
-function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(n,B,K){var R=mxClient.IS_FF?8192:16384;return Math.min(K,Math.min(R/n,R/B))};Editor.prototype.exportToCanvas=function(n,B,K,R,P,T,Q,V,Y,ea,ba,ca,ja,ia,Z,Da,Ga,Ba){try{T=null!=T?T:!0;Q=null!=Q?Q:!0;ca=null!=ca?ca:this.graph;ja=null!=ja?ja:0;var Ha=Y?null:ca.background;Ha==mxConstants.NONE&&(Ha=null);null==Ha&&(Ha=R);null==Ha&&0==Y&&(Ha=Da?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(ca.getSvg(null,
-null,ja,ia,null,Q,null,null,null,ea,null,Da,Ga,Ba),mxUtils.bind(this,function(pa){try{var Na=new Image;Na.onload=mxUtils.bind(this,function(){try{var ya=function(){mxClient.IS_SF?window.setTimeout(function(){xa.drawImage(Na,0,0);n(Ja,pa)},0):(xa.drawImage(Na,0,0),n(Ja,pa))},Ja=document.createElement("canvas"),Fa=parseInt(pa.getAttribute("width")),Pa=parseInt(pa.getAttribute("height"));V=null!=V?V:1;null!=B&&(V=T?Math.min(1,Math.min(3*B/(4*Pa),B/Fa)):B/Fa);V=this.getMaxCanvasScale(Fa,Pa,V);Fa=Math.ceil(V*
-Fa);Pa=Math.ceil(V*Pa);Ja.setAttribute("width",Fa);Ja.setAttribute("height",Pa);var xa=Ja.getContext("2d");null!=Ha&&(xa.beginPath(),xa.rect(0,0,Fa,Pa),xa.fillStyle=Ha,xa.fill());1!=V&&xa.scale(V,V);if(Z){var za=ca.view,ua=za.scale;za.scale=1;var Aa=btoa(unescape(encodeURIComponent(za.createSvgGrid(za.gridColor))));za.scale=ua;Aa="data:image/svg+xml;base64,"+Aa;var da=ca.gridSize*za.gridSteps*V,wa=ca.getGraphBounds(),ta=za.translate.x*ua,sa=za.translate.y*ua,ra=ta+(wa.x-ta)/ua-ja,va=sa+(wa.y-sa)/
-ua-ja,ha=new Image;ha.onload=function(){try{for(var ma=-Math.round(da-mxUtils.mod((ta-ra)*V,da)),aa=-Math.round(da-mxUtils.mod((sa-va)*V,da));ma<Fa;ma+=da)for(var fa=aa;fa<Pa;fa+=da)xa.drawImage(ha,ma/V,fa/V);ya()}catch(na){null!=P&&P(na)}};ha.onerror=function(ma){null!=P&&P(ma)};ha.src=Aa}else ya()}catch(ma){null!=P&&P(ma)}});Na.onerror=function(ya){null!=P&&P(ya)};ea&&this.graph.addSvgShadow(pa);this.graph.mathEnabled&&this.addMathCss(pa);var La=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&
-this.addFontCss(pa,this.resolvedFontCss),Na.src=Editor.createSvgDataUri(mxUtils.getXml(pa))}catch(ya){null!=P&&P(ya)}});this.embedExtFonts(mxUtils.bind(this,function(ya){try{null!=ya&&this.addFontCss(pa,ya),this.loadFonts(La)}catch(Ja){null!=P&&P(Ja)}}))}catch(ya){null!=P&&P(ya)}}),K,ba)}catch(pa){null!=P&&P(pa)}};Editor.crcTable=[];for(var t=0;256>t;t++)for(var u=t,E=0;8>E;E++)u=1==(u&1)?3988292384^u>>>1:u>>>1,Editor.crcTable[t]=u;Editor.updateCRC=function(n,B,K,R){for(var P=0;P<R;P++)n=Editor.crcTable[(n^
-B.charCodeAt(K+P))&255]^n>>>8;return n};Editor.crc32=function(n){for(var B=-1,K=0;K<n.length;K++)B=B>>>8^Editor.crcTable[(B^n.charCodeAt(K))&255];return(B^-1)>>>0};Editor.writeGraphModelToPng=function(n,B,K,R,P){function T(ba,ca){var ja=Y;Y+=ca;return ba.substring(ja,Y)}function Q(ba){ba=T(ba,4);return ba.charCodeAt(3)+(ba.charCodeAt(2)<<8)+(ba.charCodeAt(1)<<16)+(ba.charCodeAt(0)<<24)}function V(ba){return String.fromCharCode(ba>>24&255,ba>>16&255,ba>>8&255,ba&255)}n=n.substring(n.indexOf(",")+1);
-n=window.atob?atob(n):Base64.decode(n,!0);var Y=0;if(T(n,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=P&&P();else if(T(n,4),"IHDR"!=T(n,4))null!=P&&P();else{T(n,17);P=n.substring(0,Y);do{var ea=Q(n);if("IDAT"==T(n,4)){P=n.substring(0,Y-8);"pHYs"==B&&"dpi"==K?(K=Math.round(R/.0254),K=V(K)+V(K)+String.fromCharCode(1)):K=K+String.fromCharCode(0)+("zTXt"==B?String.fromCharCode(0):"")+R;R=4294967295;R=Editor.updateCRC(R,B,0,4);R=Editor.updateCRC(R,K,0,K.length);P+=V(K.length)+
-B+K+V(R^4294967295);P+=n.substring(Y-8,n.length);break}P+=n.substring(Y-8,Y-4+ea);T(n,ea);T(n,4)}while(ea);return"data:image/png;base64,"+(window.btoa?btoa(P):Base64.encode(P,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var c=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(n,B){c.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=
-function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(n,B){var K=null;null!=n.editor.graph.getModel().getParent(B)?K=B.getId():null!=n.currentPage&&(K=n.currentPage.getId());return K});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var k=Format.prototype.refresh;
-Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?k.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var n=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=n&&n.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(n){return!1};var m=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(n){n=m.apply(this,arguments);
-this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var B=this.editorUi,K=B.editor.graph,R=this.createOption(mxResources.get("shadow"),function(){return K.shadowVisible},function(P){var T=new ChangePageSetup(B);T.ignoreColor=!0;T.ignoreImage=!0;T.shadowVisible=P;K.model.execute(T)},{install:function(P){this.listener=function(){P(K.shadowVisible)};B.addListener("shadowVisibleChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});Editor.enableShadowOption||
-(R.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(R,60));n.appendChild(R)}return n};var p=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(n){n=p.apply(this,arguments);var B=this.editorUi,K=B.editor.graph;if(K.isEnabled()){var R=B.getCurrentFile();if(null!=R&&R.isAutosaveOptional()){var P=this.createOption(mxResources.get("autosave"),function(){return B.editor.autosave},function(Q){B.editor.setAutosave(Q);B.editor.autosave&&
-R.isModified()&&R.fileChanged()},{install:function(Q){this.listener=function(){Q(B.editor.autosave)};B.editor.addListener("autosaveChanged",this.listener)},destroy:function(){B.editor.removeListener(this.listener)}});n.appendChild(P)}}if(this.isMathOptionVisible()&&K.isEnabled()&&"undefined"!==typeof MathJax){P=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return K.mathEnabled},function(Q){B.actions.get("mathematicalTypesetting").funct()},{install:function(Q){this.listener=
-function(){Q(K.mathEnabled)};B.addListener("mathEnabledChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});P.style.paddingTop="5px";n.appendChild(P);var T=B.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");T.style.position="relative";T.style.marginLeft="6px";T.style.top="2px";P.appendChild(T)}return n};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=
-[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",
-type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",
-type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",
-type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},
-{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=[{name:"size",dispName:"Fold Size",
-type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"base",dispName:"Callout Width",
-type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",type:"enum",enumList:[{val:"left",
-dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];
-mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
+l.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){d.apply(this,arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(n,B){if("undefined"===typeof window.MathJax&&!mxClient.IS_IE&&!mxClient.IS_IE11){n=null!=n?n:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(P){try{MathJax.typesetClear([P]),
+MathJax.typeset([P]),Editor.onMathJaxDone()}catch(T){MathJax.typesetClear([P]),null!=T.retry?T.retry.then(function(){MathJax.typesetPromise([P]).then(Editor.onMathJaxDone)}):null!=window.console&&console.log("Error in MathJax: "+T.toString())}};window.MathJax=null!=B?B:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var P=0;P<Editor.mathJaxQueue.length;P++)Editor.doMathJaxRender(Editor.mathJaxQueue[P])}}};
+Editor.MathJaxRender=function(P){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(P):Editor.mathJaxQueue.push(P)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};Editor.onMathJaxDone=function(){};var K=Editor.prototype.init;Editor.prototype.init=function(){K.apply(this,arguments);var P=mxUtils.bind(this,function(T,Q){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,
+P);this.graph.addListener(mxEvent.REFRESH,P)};B=document.getElementsByTagName("script");if(null!=B&&0<B.length){var R=document.createElement("script");R.setAttribute("type","text/javascript");R.setAttribute("src",n);B[0].parentNode.appendChild(R)}}};Editor.prototype.csvToArray=function(n){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(n))return null;
+var B=[];n.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(K,R,P,T){void 0!==R?B.push(R.replace(/\\'/g,"'")):void 0!==P?B.push(P.replace(/\\"/g,'"')):void 0!==T&&B.push(T);return""});/,\s*$/.test(n)&&B.push("");return B};Editor.prototype.isCorsEnabledForUrl=function(n){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||n.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(n)||"https://raw.githubusercontent.com/"===n.substring(0,34)||"https://fonts.googleapis.com/"===n.substring(0,29)||"https://fonts.gstatic.com/"===n.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var n=new mxUrlConverter;n.updateBaseUrl();var B=n.convert,K=this;n.convert=function(R){if(null!=R){var P="http://"==R.substring(0,7)||"https://"==
+R.substring(0,8);P&&!navigator.onLine?R=Editor.svgBrokenImage.src:!P||R.substring(0,n.baseUrl.length)==n.baseUrl||K.crossOriginImages&&K.isCorsEnabledForUrl(R)?"chrome-extension://"==R.substring(0,19)||mxClient.IS_CHROMEAPP||(R=B.apply(this,arguments)):R=PROXY_URL+"?url="+encodeURIComponent(R)}return R};return n};Editor.createSvgDataUri=function(n){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(n)))};Editor.prototype.convertImageToDataUri=function(n,B){try{var K=!0,R=window.setTimeout(mxUtils.bind(this,
+function(){K=!1;B(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(n))mxUtils.get(n,mxUtils.bind(this,function(T){window.clearTimeout(R);K&&B(Editor.createSvgDataUri(T.getText()))}),function(){window.clearTimeout(R);K&&B(Editor.svgBrokenImage.src)});else{var P=new Image;this.crossOriginImages&&(P.crossOrigin="anonymous");P.onload=function(){window.clearTimeout(R);if(K)try{var T=document.createElement("canvas"),Q=T.getContext("2d");T.height=P.height;T.width=P.width;Q.drawImage(P,0,0);
+B(T.toDataURL())}catch(V){B(Editor.svgBrokenImage.src)}};P.onerror=function(){window.clearTimeout(R);K&&B(Editor.svgBrokenImage.src)};P.src=n}}catch(T){B(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(n,B,K,R){null==R&&(R=this.createImageUrlConverter());var P=0,T=K||{};K=mxUtils.bind(this,function(Q,V){Q=n.getElementsByTagName(Q);for(var Y=0;Y<Q.length;Y++)mxUtils.bind(this,function(ea){try{if(null!=ea){var ba=R.convert(ea.getAttribute(V));if(null!=ba&&"data:"!=ba.substring(0,
+5)){var ca=T[ba];null==ca?(P++,this.convertImageToDataUri(ba,function(ja){null!=ja&&(T[ba]=ja,ea.setAttribute(V,ja));P--;0==P&&B(n)})):ea.setAttribute(V,ca)}else null!=ba&&ea.setAttribute(V,ba)}}catch(ja){}})(Q[Y])});K("image","xlink:href");K("img","src");0==P&&B(n)};Editor.base64Encode=function(n){for(var B="",K=0,R=n.length,P,T,Q;K<R;){P=n.charCodeAt(K++)&255;if(K==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((P&
+3)<<4);B+="==";break}T=n.charCodeAt(K++);if(K==R){B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((P&3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2);B+="=";break}Q=n.charCodeAt(K++);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P>>2);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((P&
+3)<<4|(T&240)>>4);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((T&15)<<2|(Q&192)>>6);B+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(Q&63)}return B};Editor.prototype.loadUrl=function(n,B,K,R,P,T,Q,V){try{var Y=!Q&&(R||/(\.png)($|\?)/i.test(n)||/(\.jpe?g)($|\?)/i.test(n)||/(\.gif)($|\?)/i.test(n)||/(\.pdf)($|\?)/i.test(n));P=null!=P?P:!0;var ea=mxUtils.bind(this,function(){mxUtils.get(n,mxUtils.bind(this,function(ba){if(200<=ba.getStatus()&&
+299>=ba.getStatus()){if(null!=B){var ca=ba.getText();if(Y){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){ba=mxUtilsBinaryToArray(ba.request.responseBody).toArray();ca=Array(ba.length);for(var ja=0;ja<ba.length;ja++)ca[ja]=String.fromCharCode(ba[ja]);ca=ca.join("")}T=null!=T?T:"data:image/png;base64,";ca=T+Editor.base64Encode(ca)}B(ca)}}else null!=K&&(0==ba.getStatus()?K({message:mxResources.get("accessDenied")},ba):K({message:mxResources.get("error")+
+" "+ba.getStatus()},ba))}),function(ba){null!=K&&K({message:mxResources.get("error")+" "+ba.getStatus()})},Y,this.timeout,function(){P&&null!=K&&K({code:App.ERROR_TIMEOUT,retry:ea})},V)});ea()}catch(ba){null!=K&&K(ba)}};Editor.prototype.absoluteCssFonts=function(n){var B=null;if(null!=n){var K=n.split("url(");if(0<K.length){B=[K[0]];n=window.location.pathname;var R=null!=n?n.lastIndexOf("/"):-1;0<=R&&(n=n.substring(0,R+1));R=document.getElementsByTagName("base");var P=null;null!=R&&0<R.length&&(P=
+R[0].getAttribute("href"));for(var T=1;T<K.length;T++)if(R=K[T].indexOf(")"),0<R){var Q=Editor.trimCssUrl(K[T].substring(0,R));this.graph.isRelativeUrl(Q)&&(Q=null!=P?P+Q:window.location.protocol+"//"+window.location.hostname+("/"==Q.charAt(0)?"":n)+Q);B.push('url("'+Q+'"'+K[T].substring(R))}else B.push(K[T])}else B=[n]}return null!=B?B.join(""):null};Editor.prototype.mapFontUrl=function(n,B,K){/^https?:\/\//.test(B)&&!this.isCorsEnabledForUrl(B)&&(B=PROXY_URL+"?url="+encodeURIComponent(B));K(n,B)};
+Editor.prototype.embedCssFonts=function(n,B){var K=n.split("url("),R=0;null==this.cachedFonts&&(this.cachedFonts={});var P=mxUtils.bind(this,function(){if(0==R){for(var Y=[K[0]],ea=1;ea<K.length;ea++){var ba=K[ea].indexOf(")");Y.push('url("');Y.push(this.cachedFonts[Editor.trimCssUrl(K[ea].substring(0,ba))]);Y.push('"'+K[ea].substring(ba))}B(Y.join(""))}});if(0<K.length){for(n=1;n<K.length;n++){var T=K[n].indexOf(")"),Q=null,V=K[n].indexOf("format(",T);0<V&&(Q=Editor.trimCssUrl(K[n].substring(V+7,
+K[n].indexOf(")",V))));mxUtils.bind(this,function(Y){if(null==this.cachedFonts[Y]){this.cachedFonts[Y]=Y;R++;var ea="application/x-font-ttf";if("svg"==Q||/(\.svg)($|\?)/i.test(Y))ea="image/svg+xml";else if("otf"==Q||"embedded-opentype"==Q||/(\.otf)($|\?)/i.test(Y))ea="application/x-font-opentype";else if("woff"==Q||/(\.woff)($|\?)/i.test(Y))ea="application/font-woff";else if("woff2"==Q||/(\.woff2)($|\?)/i.test(Y))ea="application/font-woff2";else if("eot"==Q||/(\.eot)($|\?)/i.test(Y))ea="application/vnd.ms-fontobject";
+else if("sfnt"==Q||/(\.sfnt)($|\?)/i.test(Y))ea="application/font-sfnt";this.mapFontUrl(ea,Y,mxUtils.bind(this,function(ba,ca){this.loadUrl(ca,mxUtils.bind(this,function(ja){this.cachedFonts[Y]=ja;R--;P()}),mxUtils.bind(this,function(ja){R--;P()}),!0,null,"data:"+ba+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(K[n].substring(0,T)),Q)}P()}else B(n)};Editor.prototype.loadFonts=function(n){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(B){this.resolvedFontCss=
+B;null!=n&&n()})):null!=n&&n()};Editor.prototype.createGoogleFontCache=function(){var n={},B;for(B in Graph.fontMapping)Graph.isCssFontUrl(B)&&(n[B]=Graph.fontMapping[B]);return n};Editor.prototype.embedExtFonts=function(n){var B=this.graph.getCustomFonts();if(0<B.length){var K=[],R=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var P=mxUtils.bind(this,function(){0==R&&this.embedCssFonts(K.join(""),n)}),T=0;T<B.length;T++)mxUtils.bind(this,function(Q,V){Graph.isCssFontUrl(V)?
+null==this.cachedGoogleFonts[V]?(R++,this.loadUrl(V,mxUtils.bind(this,function(Y){this.cachedGoogleFonts[V]=Y;K.push(Y+"\n");R--;P()}),mxUtils.bind(this,function(Y){R--;K.push("@import url("+V+");\n");P()}))):K.push(this.cachedGoogleFonts[V]+"\n"):K.push('@font-face {font-family: "'+Q+'";src: url("'+V+'")}\n')})(B[T].name,B[T].url);P()}else n()};Editor.prototype.addMathCss=function(n){n=n.getElementsByTagName("defs");if(null!=n&&0<n.length)for(var B=document.getElementsByTagName("style"),K=0;K<B.length;K++){var R=
+mxUtils.getTextContent(B[K]);0>R.indexOf("mxPageSelector")&&0<R.indexOf("MathJax")&&n[0].appendChild(B[K].cloneNode(!0))}};Editor.prototype.addFontCss=function(n,B){B=null!=B?B:this.absoluteCssFonts(this.fontCss);if(null!=B){var K=n.getElementsByTagName("defs"),R=n.ownerDocument;0==K.length?(K=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"defs"):R.createElement("defs"),null!=n.firstChild?n.insertBefore(K,n.firstChild):n.appendChild(K)):K=K[0];n=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,
+"style"):R.createElement("style");n.setAttribute("type","text/css");mxUtils.setTextContent(n,B);K.appendChild(n)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(n,B,K){var R=mxClient.IS_FF?8192:16384;return Math.min(K,Math.min(R/n,R/B))};Editor.prototype.exportToCanvas=function(n,B,K,R,P,T,Q,V,Y,ea,ba,ca,ja,ia,Z,Da,Ga,Ba){try{T=null!=T?T:!0;Q=null!=Q?Q:!0;ca=null!=ca?ca:this.graph;ja=null!=ja?ja:0;var Ha=
+Y?null:ca.background;Ha==mxConstants.NONE&&(Ha=null);null==Ha&&(Ha=R);null==Ha&&0==Y&&(Ha=Da?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(ca.getSvg(null,null,ja,ia,null,Q,null,null,null,ea,null,Da,Ga,Ba),mxUtils.bind(this,function(pa){try{var Na=new Image;Na.onload=mxUtils.bind(this,function(){try{var ya=function(){mxClient.IS_SF?window.setTimeout(function(){xa.drawImage(Na,0,0);n(Ja,pa)},0):(xa.drawImage(Na,0,0),n(Ja,pa))},Ja=document.createElement("canvas"),Fa=parseInt(pa.getAttribute("width")),
+Pa=parseInt(pa.getAttribute("height"));V=null!=V?V:1;null!=B&&(V=T?Math.min(1,Math.min(3*B/(4*Pa),B/Fa)):B/Fa);V=this.getMaxCanvasScale(Fa,Pa,V);Fa=Math.ceil(V*Fa);Pa=Math.ceil(V*Pa);Ja.setAttribute("width",Fa);Ja.setAttribute("height",Pa);var xa=Ja.getContext("2d");null!=Ha&&(xa.beginPath(),xa.rect(0,0,Fa,Pa),xa.fillStyle=Ha,xa.fill());1!=V&&xa.scale(V,V);if(Z){var za=ca.view,ua=za.scale;za.scale=1;var Aa=btoa(unescape(encodeURIComponent(za.createSvgGrid(za.gridColor))));za.scale=ua;Aa="data:image/svg+xml;base64,"+
+Aa;var da=ca.gridSize*za.gridSteps*V,wa=ca.getGraphBounds(),ta=za.translate.x*ua,sa=za.translate.y*ua,ra=ta+(wa.x-ta)/ua-ja,va=sa+(wa.y-sa)/ua-ja,ha=new Image;ha.onload=function(){try{for(var ma=-Math.round(da-mxUtils.mod((ta-ra)*V,da)),aa=-Math.round(da-mxUtils.mod((sa-va)*V,da));ma<Fa;ma+=da)for(var fa=aa;fa<Pa;fa+=da)xa.drawImage(ha,ma/V,fa/V);ya()}catch(na){null!=P&&P(na)}};ha.onerror=function(ma){null!=P&&P(ma)};ha.src=Aa}else ya()}catch(ma){null!=P&&P(ma)}});Na.onerror=function(ya){null!=P&&
+P(ya)};ea&&this.graph.addSvgShadow(pa);this.graph.mathEnabled&&this.addMathCss(pa);var La=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(pa,this.resolvedFontCss),Na.src=Editor.createSvgDataUri(mxUtils.getXml(pa))}catch(ya){null!=P&&P(ya)}});this.embedExtFonts(mxUtils.bind(this,function(ya){try{null!=ya&&this.addFontCss(pa,ya),this.loadFonts(La)}catch(Ja){null!=P&&P(Ja)}}))}catch(ya){null!=P&&P(ya)}}),K,ba)}catch(pa){null!=P&&P(pa)}};Editor.crcTable=[];for(var t=0;256>
+t;t++)for(var u=t,E=0;8>E;E++)u=1==(u&1)?3988292384^u>>>1:u>>>1,Editor.crcTable[t]=u;Editor.updateCRC=function(n,B,K,R){for(var P=0;P<R;P++)n=Editor.crcTable[(n^B.charCodeAt(K+P))&255]^n>>>8;return n};Editor.crc32=function(n){for(var B=-1,K=0;K<n.length;K++)B=B>>>8^Editor.crcTable[(B^n.charCodeAt(K))&255];return(B^-1)>>>0};Editor.writeGraphModelToPng=function(n,B,K,R,P){function T(ba,ca){var ja=Y;Y+=ca;return ba.substring(ja,Y)}function Q(ba){ba=T(ba,4);return ba.charCodeAt(3)+(ba.charCodeAt(2)<<
+8)+(ba.charCodeAt(1)<<16)+(ba.charCodeAt(0)<<24)}function V(ba){return String.fromCharCode(ba>>24&255,ba>>16&255,ba>>8&255,ba&255)}n=n.substring(n.indexOf(",")+1);n=window.atob?atob(n):Base64.decode(n,!0);var Y=0;if(T(n,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=P&&P();else if(T(n,4),"IHDR"!=T(n,4))null!=P&&P();else{T(n,17);P=n.substring(0,Y);do{var ea=Q(n);if("IDAT"==T(n,4)){P=n.substring(0,Y-8);"pHYs"==B&&"dpi"==K?(K=Math.round(R/.0254),K=V(K)+V(K)+String.fromCharCode(1)):
+K=K+String.fromCharCode(0)+("zTXt"==B?String.fromCharCode(0):"")+R;R=4294967295;R=Editor.updateCRC(R,B,0,4);R=Editor.updateCRC(R,K,0,K.length);P+=V(K.length)+B+K+V(R^4294967295);P+=n.substring(Y-8,n.length);break}P+=n.substring(Y-8,Y-4+ea);T(n,ea);T(n,4)}while(ea);return"data:image/png;base64,"+(window.btoa?btoa(P):Base64.encode(P,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var c=ColorDialog.addRecentColor;ColorDialog.addRecentColor=
+function(n,B){c.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(n,B){var K=null;null!=n.editor.graph.getModel().getParent(B)?K=B.getId():null!=n.currentPage&&(K=n.currentPage.getId());return K});if(null!=window.StyleFormatPanel){var g=
+Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var k=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?k.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var n=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=n&&n.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=
+function(n){return!1};var m=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(n){n=m.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var B=this.editorUi,K=B.editor.graph,R=this.createOption(mxResources.get("shadow"),function(){return K.shadowVisible},function(P){var T=new ChangePageSetup(B);T.ignoreColor=!0;T.ignoreImage=!0;T.shadowVisible=P;K.model.execute(T)},{install:function(P){this.listener=function(){P(K.shadowVisible)};
+B.addListener("shadowVisibleChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});Editor.enableShadowOption||(R.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(R,60));n.appendChild(R)}return n};var p=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(n){n=p.apply(this,arguments);var B=this.editorUi,K=B.editor.graph;if(K.isEnabled()){var R=B.getCurrentFile();if(null!=R&&R.isAutosaveOptional()){var P=
+this.createOption(mxResources.get("autosave"),function(){return B.editor.autosave},function(Q){B.editor.setAutosave(Q);B.editor.autosave&&R.isModified()&&R.fileChanged()},{install:function(Q){this.listener=function(){Q(B.editor.autosave)};B.editor.addListener("autosaveChanged",this.listener)},destroy:function(){B.editor.removeListener(this.listener)}});n.appendChild(P)}}if(this.isMathOptionVisible()&&K.isEnabled()&&"undefined"!==typeof MathJax){P=this.createOption(mxResources.get("mathematicalTypesetting"),
+function(){return K.mathEnabled},function(Q){B.actions.get("mathematicalTypesetting").funct()},{install:function(Q){this.listener=function(){Q(K.mathEnabled)};B.addListener("mathEnabledChanged",this.listener)},destroy:function(){B.removeListener(this.listener)}});P.style.paddingTop="5px";n.appendChild(P);var T=B.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");T.style.position="relative";T.style.marginLeft="6px";T.style.top="2px";P.appendChild(T)}return n};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",
+dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",
+type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",
+dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=
+[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=
+[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
+{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",
+type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",
+type:"color",defVal:null}];mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
mxCellRenderer.defaultShapes.tableRow.prototype.customProperties=mxCellRenderer.defaultShapes.swimlane.prototype.customProperties.concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",
type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",
type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",
@@ -11682,33 +11682,33 @@ mxStencilRegistry.libraries["mockup/misc"]=[SHAPES_PATH+"/mockup/mxMockupMisc.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(n){var B=null;null!=n&&0<n.length&&("ER"==n.substring(0,2)?B="mxgraph.er":"sysML"==n.substring(0,5)&&(B="mxgraph.sysml"));return B};var S=mxMarker.createMarker;mxMarker.createMarker=function(n,B,K,R,P,T,Q,V,Y,ea){if(null!=K&&null==mxMarker.markers[K]){var ba=this.getPackageForType(K);null!=
ba&&mxStencilRegistry.getStencil(ba)}return S.apply(this,arguments)};var X=mxStencil.prototype.drawShape;mxStencil.prototype.drawShape=function(n,B,K,R,P,T){"1"==mxUtils.getValue(B.style,"lineShape",null)&&n.setFillColor(mxUtils.getValue(B.style,mxConstants.STYLE_STROKECOLOR,this.stroke));return X.apply(this,arguments)};PrintDialog.prototype.create=function(n,B){function K(){ja.value=Math.max(1,Math.min(V,Math.max(parseInt(ja.value),parseInt(ca.value))));ca.value=Math.max(1,Math.min(V,Math.min(parseInt(ja.value),
-parseInt(ca.value))))}function R(wa){function ta(Ea,Ia,Qa){var Ma=Ea.useCssTransforms,Ra=Ea.currentTranslate,Xa=Ea.currentScale,Ka=Ea.view.translate,Ta=Ea.view.scale;Ea.useCssTransforms&&(Ea.useCssTransforms=!1,Ea.currentTranslate=new mxPoint(0,0),Ea.currentScale=1,Ea.view.translate=new mxPoint(0,0),Ea.view.scale=1);var Ua=Ea.getGraphBounds(),Va=0,Za=0,Wa=Aa.get(),ab=1/Ea.pageScale,Ya=Ba.checked;if(Ya){ab=parseInt(za.value);var gb=parseInt(ua.value);ab=Math.min(Wa.height*gb/(Ua.height/Ea.view.scale),
-Wa.width*ab/(Ua.width/Ea.view.scale))}else ab=parseInt(Ga.value)/(100*Ea.pageScale),isNaN(ab)&&(sa=1/Ea.pageScale,Ga.value="100 %");Wa=mxRectangle.fromRectangle(Wa);Wa.width=Math.ceil(Wa.width*sa);Wa.height=Math.ceil(Wa.height*sa);ab*=sa;!Ya&&Ea.pageVisible?(Ua=Ea.getPageLayout(),Va-=Ua.x*Wa.width,Za-=Ua.y*Wa.height):Ya=!0;if(null==Ia){Ia=PrintDialog.createPrintPreview(Ea,ab,Wa,0,Va,Za,Ya);Ia.pageSelector=!1;Ia.mathEnabled=!1;ia.checked&&(Ia.isCellVisible=function($a){return Ea.isCellSelected($a)});
-Va=n.getCurrentFile();null!=Va&&(Ia.title=Va.getTitle());var hb=Ia.writeHead;Ia.writeHead=function($a){hb.apply(this,arguments);null!=n.editor.fontCss&&($a.writeln('<style type="text/css">'),$a.writeln(n.editor.fontCss),$a.writeln("</style>"));for(var cb=Ea.getCustomFonts(),bb=0;bb<cb.length;bb++){var eb=cb[bb].name,db=cb[bb].url;Graph.isCssFontUrl(db)?$a.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(db)+'" charset="UTF-8" type="text/css">'):($a.writeln('<style type="text/css">'),$a.writeln('@font-face {\nfont-family: "'+
-mxUtils.htmlEntities(eb)+'";\nsrc: url("'+mxUtils.htmlEntities(db)+'");\n}'),$a.writeln("</style>"))}};if("undefined"!==typeof MathJax){var ib=Ia.renderPage;Ia.renderPage=function($a,cb,bb,eb,db,kb){var jb=mxClient.NO_FO,fb=ib.apply(this,arguments);mxClient.NO_FO=jb;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:fb.className="geDisableMathJax";return fb}}Va=null;Za=P.shapeForegroundColor;Ya=P.shapeBackgroundColor;Wa=P.enableFlowAnimation;P.enableFlowAnimation=!1;null!=P.themes&&"darkTheme"==
-P.defaultThemeName&&(Va=P.stylesheet,P.stylesheet=P.getDefaultStylesheet(),P.shapeForegroundColor="#000000",P.shapeBackgroundColor="#ffffff",P.refresh());Ia.open(null,null,Qa,!0);P.enableFlowAnimation=Wa;null!=Va&&(P.shapeForegroundColor=Za,P.shapeBackgroundColor=Ya,P.stylesheet=Va,P.refresh())}else{Wa=Ea.background;if(null==Wa||""==Wa||Wa==mxConstants.NONE)Wa="#ffffff";Ia.backgroundColor=Wa;Ia.autoOrigin=Ya;Ia.appendGraph(Ea,ab,Va,Za,Qa,!0);Qa=Ea.getCustomFonts();if(null!=Ia.wnd)for(Va=0;Va<Qa.length;Va++)Za=
-Qa[Va].name,Ya=Qa[Va].url,Graph.isCssFontUrl(Ya)?Ia.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(Ya)+'" charset="UTF-8" type="text/css">'):(Ia.wnd.document.writeln('<style type="text/css">'),Ia.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(Za)+'";\nsrc: url("'+mxUtils.htmlEntities(Ya)+'");\n}'),Ia.wnd.document.writeln("</style>"))}Ma&&(Ea.useCssTransforms=Ma,Ea.currentTranslate=Ra,Ea.currentScale=Xa,Ea.view.translate=Ka,Ea.view.scale=Ta);return Ia}
-var sa=parseInt(da.value)/100;isNaN(sa)&&(sa=1,da.value="100 %");sa*=.75;var ra=null,va=P.shapeForegroundColor,ha=P.shapeBackgroundColor;null!=P.themes&&"darkTheme"==P.defaultThemeName&&(ra=P.stylesheet,P.stylesheet=P.getDefaultStylesheet(),P.shapeForegroundColor="#000000",P.shapeBackgroundColor="#ffffff",P.refresh());var ma=ca.value,aa=ja.value,fa=!ea.checked,na=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(n,ea.checked,ma,aa,Ba.checked,za.value,ua.value,parseInt(Ga.value)/100,parseInt(da.value)/
-100,Aa.get());else{fa&&(fa=ia.checked||ma==Y&&aa==Y);if(!fa&&null!=n.pages&&n.pages.length){var la=0;fa=n.pages.length-1;ea.checked||(la=parseInt(ma)-1,fa=parseInt(aa)-1);for(var qa=la;qa<=fa;qa++){var oa=n.pages[qa];ma=oa==n.currentPage?P:null;if(null==ma){ma=n.createTemporaryGraph(P.stylesheet);ma.shapeForegroundColor=P.shapeForegroundColor;ma.shapeBackgroundColor=P.shapeBackgroundColor;aa=!0;la=!1;var ka=null,Ca=null;null==oa.viewState&&null==oa.root&&n.updatePageRoot(oa);null!=oa.viewState&&(aa=
-oa.viewState.pageVisible,la=oa.viewState.mathEnabled,ka=oa.viewState.background,Ca=oa.viewState.backgroundImage,ma.extFonts=oa.viewState.extFonts);null!=Ca&&null!=Ca.originalSrc&&(Ca=n.createImageForPageLink(Ca.originalSrc,oa));ma.background=ka;ma.backgroundImage=null!=Ca?new mxImage(Ca.src,Ca.width,Ca.height,Ca.x,Ca.y):null;ma.pageVisible=aa;ma.mathEnabled=la;var Oa=ma.getGraphBounds;ma.getGraphBounds=function(){var Ea=Oa.apply(this,arguments),Ia=this.backgroundImage;if(null!=Ia&&null!=Ia.width&&
-null!=Ia.height){var Qa=this.view.translate,Ma=this.view.scale;Ea=mxRectangle.fromRectangle(Ea);Ea.add(new mxRectangle((Qa.x+Ia.x)*Ma,(Qa.y+Ia.y)*Ma,Ia.width*Ma,Ia.height*Ma))}return Ea};var Sa=ma.getGlobalVariable;ma.getGlobalVariable=function(Ea){return"page"==Ea?oa.getName():"pagenumber"==Ea?qa+1:"pagecount"==Ea?null!=n.pages?n.pages.length:1:Sa.apply(this,arguments)};document.body.appendChild(ma.container);n.updatePageRoot(oa);ma.model.setRoot(oa.root)}na=ta(ma,na,qa!=fa);ma!=P&&ma.container.parentNode.removeChild(ma.container)}}else na=
-ta(P);null==na?n.handleError({message:mxResources.get("errorUpdatingPreview")}):(na.mathEnabled&&(fa=na.wnd.document,wa&&(na.wnd.IMMEDIATE_PRINT=!0),fa.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),na.closeDocument(),!na.mathEnabled&&wa&&PrintDialog.printPreview(na));null!=ra&&(P.shapeForegroundColor=va,P.shapeBackgroundColor=ha,P.stylesheet=ra,P.refresh())}}var P=n.editor.graph,T=document.createElement("div"),Q=document.createElement("h3");Q.style.width=
-"100%";Q.style.textAlign="center";Q.style.marginTop="0px";mxUtils.write(Q,B||mxResources.get("print"));T.appendChild(Q);var V=1,Y=1;Q=document.createElement("div");Q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var ea=document.createElement("input");ea.style.cssText="margin-right:8px;margin-bottom:8px;";ea.setAttribute("value","all");ea.setAttribute("type","radio");ea.setAttribute("name","pages-printdialog");Q.appendChild(ea);B=document.createElement("span");
-mxUtils.write(B,mxResources.get("printAllPages"));Q.appendChild(B);mxUtils.br(Q);var ba=ea.cloneNode(!0);ea.setAttribute("checked","checked");ba.setAttribute("value","range");Q.appendChild(ba);B=document.createElement("span");mxUtils.write(B,mxResources.get("pages")+":");Q.appendChild(B);var ca=document.createElement("input");ca.style.cssText="margin:0 8px 0 8px;";ca.setAttribute("value","1");ca.setAttribute("type","number");ca.setAttribute("min","1");ca.style.width="50px";Q.appendChild(ca);B=document.createElement("span");
-mxUtils.write(B,mxResources.get("to"));Q.appendChild(B);var ja=ca.cloneNode(!0);Q.appendChild(ja);mxEvent.addListener(ca,"focus",function(){ba.checked=!0});mxEvent.addListener(ja,"focus",function(){ba.checked=!0});mxEvent.addListener(ca,"change",K);mxEvent.addListener(ja,"change",K);if(null!=n.pages&&(V=n.pages.length,null!=n.currentPage))for(B=0;B<n.pages.length;B++)if(n.currentPage==n.pages[B]){Y=B+1;ca.value=Y;ja.value=Y;break}ca.setAttribute("max",V);ja.setAttribute("max",V);n.isPagesEnabled()?
-1<V&&(T.appendChild(Q),ba.checked=!0):ba.checked=!0;mxUtils.br(Q);var ia=document.createElement("input");ia.setAttribute("value","all");ia.setAttribute("type","radio");ia.style.marginRight="8px";P.isSelectionEmpty()&&ia.setAttribute("disabled","disabled");var Z=document.createElement("div");Z.style.marginBottom="10px";1==V?(ia.setAttribute("type","checkbox"),ia.style.marginBottom="12px",Z.appendChild(ia)):(ia.setAttribute("name","pages-printdialog"),ia.style.marginBottom="8px",Q.appendChild(ia));
-B=document.createElement("span");mxUtils.write(B,mxResources.get("selectionOnly"));ia.parentNode.appendChild(B);1==V&&mxUtils.br(ia.parentNode);var Da=document.createElement("input");Da.style.marginRight="8px";Da.setAttribute("value","adjust");Da.setAttribute("type","radio");Da.setAttribute("name","printZoom");Z.appendChild(Da);B=document.createElement("span");mxUtils.write(B,mxResources.get("adjustTo"));Z.appendChild(B);var Ga=document.createElement("input");Ga.style.cssText="margin:0 8px 0 8px;";
-Ga.setAttribute("value","100 %");Ga.style.width="50px";Z.appendChild(Ga);mxEvent.addListener(Ga,"focus",function(){Da.checked=!0});T.appendChild(Z);Q=Q.cloneNode(!1);var Ba=Da.cloneNode(!0);Ba.setAttribute("value","fit");Da.setAttribute("checked","checked");B=document.createElement("div");B.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";B.appendChild(Ba);Q.appendChild(B);Z=document.createElement("table");Z.style.display="inline-block";var Ha=document.createElement("tbody"),
-pa=document.createElement("tr"),Na=pa.cloneNode(!0),La=document.createElement("td"),ya=La.cloneNode(!0),Ja=La.cloneNode(!0),Fa=La.cloneNode(!0),Pa=La.cloneNode(!0),xa=La.cloneNode(!0);La.style.textAlign="right";Fa.style.textAlign="right";mxUtils.write(La,mxResources.get("fitTo"));var za=document.createElement("input");za.style.cssText="margin:0 8px 0 8px;";za.setAttribute("value","1");za.setAttribute("min","1");za.setAttribute("type","number");za.style.width="40px";ya.appendChild(za);B=document.createElement("span");
-mxUtils.write(B,mxResources.get("fitToSheetsAcross"));Ja.appendChild(B);mxUtils.write(Fa,mxResources.get("fitToBy"));var ua=za.cloneNode(!0);Pa.appendChild(ua);mxEvent.addListener(za,"focus",function(){Ba.checked=!0});mxEvent.addListener(ua,"focus",function(){Ba.checked=!0});B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsDown"));xa.appendChild(B);pa.appendChild(La);pa.appendChild(ya);pa.appendChild(Ja);Na.appendChild(Fa);Na.appendChild(Pa);Na.appendChild(xa);Ha.appendChild(pa);
-Ha.appendChild(Na);Z.appendChild(Ha);Q.appendChild(Z);T.appendChild(Q);Q=document.createElement("div");B=document.createElement("div");B.style.fontWeight="bold";B.style.marginBottom="12px";mxUtils.write(B,mxResources.get("paperSize"));Q.appendChild(B);B=document.createElement("div");B.style.marginBottom="12px";var Aa=PageSetupDialog.addPageFormatPanel(B,"printdialog",n.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);Q.appendChild(B);B=document.createElement("span");mxUtils.write(B,mxResources.get("pageScale"));
-Q.appendChild(B);var da=document.createElement("input");da.style.cssText="margin:0 8px 0 8px;";da.setAttribute("value","100 %");da.style.width="60px";Q.appendChild(da);T.appendChild(Q);B=document.createElement("div");B.style.cssText="text-align:right;margin:48px 0 0 0;";Q=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});Q.className="geBtn";n.editor.cancelFirst&&B.appendChild(Q);n.isOffline()||(Z=mxUtils.button(mxResources.get("help"),function(){P.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
-Z.className="geBtn",B.appendChild(Z));PrintDialog.previewEnabled&&(Z=mxUtils.button(mxResources.get("preview"),function(){n.hideDialog();R(!1)}),Z.className="geBtn",B.appendChild(Z));Z=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){n.hideDialog();R(!0)});Z.className="geBtn gePrimaryBtn";B.appendChild(Z);n.editor.cancelFirst||B.appendChild(Q);T.appendChild(B);this.container=T};var O=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 n=this.image;null!=n&&null!=n.src&&Graph.isPageLink(n.src)&&(n={originalSrc:n.src});this.page.viewState.backgroundImage=n}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 O.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 W=document.createElement("canvas"),U=new Image;U.onload=function(){try{W.getContext("2d").drawImage(U,
-0,0);var n=W.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=n&&6<n.length}catch(B){}};U.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(n){}})();
+parseInt(ca.value))))}function R(wa){function ta(Ea,Ia,Qa){var Ma=Ea.useCssTransforms,Ra=Ea.currentTranslate,Xa=Ea.currentScale,Ka=Ea.view.translate,Ta=Ea.view.scale;Ea.useCssTransforms&&(Ea.useCssTransforms=!1,Ea.currentTranslate=new mxPoint(0,0),Ea.currentScale=1,Ea.view.translate=new mxPoint(0,0),Ea.view.scale=1);var Ua=Ea.getGraphBounds(),Va=0,$a=0,Wa=Aa.get(),ab=1/Ea.pageScale,Za=Ba.checked;if(Za){ab=parseInt(za.value);var gb=parseInt(ua.value);ab=Math.min(Wa.height*gb/(Ua.height/Ea.view.scale),
+Wa.width*ab/(Ua.width/Ea.view.scale))}else ab=parseInt(Ga.value)/(100*Ea.pageScale),isNaN(ab)&&(sa=1/Ea.pageScale,Ga.value="100 %");Wa=mxRectangle.fromRectangle(Wa);Wa.width=Math.ceil(Wa.width*sa);Wa.height=Math.ceil(Wa.height*sa);ab*=sa;!Za&&Ea.pageVisible?(Ua=Ea.getPageLayout(),Va-=Ua.x*Wa.width,$a-=Ua.y*Wa.height):Za=!0;if(null==Ia){Ia=PrintDialog.createPrintPreview(Ea,ab,Wa,0,Va,$a,Za);Ia.pageSelector=!1;Ia.mathEnabled=!1;ia.checked&&(Ia.isCellVisible=function(Ya){return Ea.isCellSelected(Ya)});
+Va=n.getCurrentFile();null!=Va&&(Ia.title=Va.getTitle());var hb=Ia.writeHead;Ia.writeHead=function(Ya){hb.apply(this,arguments);mxClient.IS_GC&&(Ya.writeln('<style type="text/css">'),Ya.writeln("@media print {"),Ya.writeln(".MathJax svg { shape-rendering: crispEdges; }"),Ya.writeln("}"),Ya.writeln("</style>"));null!=n.editor.fontCss&&(Ya.writeln('<style type="text/css">'),Ya.writeln(n.editor.fontCss),Ya.writeln("</style>"));for(var cb=Ea.getCustomFonts(),bb=0;bb<cb.length;bb++){var eb=cb[bb].name,
+db=cb[bb].url;Graph.isCssFontUrl(db)?Ya.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(db)+'" charset="UTF-8" type="text/css">'):(Ya.writeln('<style type="text/css">'),Ya.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(eb)+'";\nsrc: url("'+mxUtils.htmlEntities(db)+'");\n}'),Ya.writeln("</style>"))}};if("undefined"!==typeof MathJax){var ib=Ia.renderPage;Ia.renderPage=function(Ya,cb,bb,eb,db,kb){var jb=mxClient.NO_FO,fb=ib.apply(this,arguments);mxClient.NO_FO=jb;this.graph.mathEnabled?
+this.mathEnabled=this.mathEnabled||!0:fb.className="geDisableMathJax";return fb}}Va=null;$a=P.shapeForegroundColor;Za=P.shapeBackgroundColor;Wa=P.enableFlowAnimation;P.enableFlowAnimation=!1;null!=P.themes&&"darkTheme"==P.defaultThemeName&&(Va=P.stylesheet,P.stylesheet=P.getDefaultStylesheet(),P.shapeForegroundColor="#000000",P.shapeBackgroundColor="#ffffff",P.refresh());Ia.open(null,null,Qa,!0);P.enableFlowAnimation=Wa;null!=Va&&(P.shapeForegroundColor=$a,P.shapeBackgroundColor=Za,P.stylesheet=Va,
+P.refresh())}else{Wa=Ea.background;if(null==Wa||""==Wa||Wa==mxConstants.NONE)Wa="#ffffff";Ia.backgroundColor=Wa;Ia.autoOrigin=Za;Ia.appendGraph(Ea,ab,Va,$a,Qa,!0);Qa=Ea.getCustomFonts();if(null!=Ia.wnd)for(Va=0;Va<Qa.length;Va++)$a=Qa[Va].name,Za=Qa[Va].url,Graph.isCssFontUrl(Za)?Ia.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(Za)+'" charset="UTF-8" type="text/css">'):(Ia.wnd.document.writeln('<style type="text/css">'),Ia.wnd.document.writeln('@font-face {\nfont-family: "'+
+mxUtils.htmlEntities($a)+'";\nsrc: url("'+mxUtils.htmlEntities(Za)+'");\n}'),Ia.wnd.document.writeln("</style>"))}Ma&&(Ea.useCssTransforms=Ma,Ea.currentTranslate=Ra,Ea.currentScale=Xa,Ea.view.translate=Ka,Ea.view.scale=Ta);return Ia}var sa=parseInt(da.value)/100;isNaN(sa)&&(sa=1,da.value="100 %");sa*=.75;var ra=null,va=P.shapeForegroundColor,ha=P.shapeBackgroundColor;null!=P.themes&&"darkTheme"==P.defaultThemeName&&(ra=P.stylesheet,P.stylesheet=P.getDefaultStylesheet(),P.shapeForegroundColor="#000000",
+P.shapeBackgroundColor="#ffffff",P.refresh());var ma=ca.value,aa=ja.value,fa=!ea.checked,na=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(n,ea.checked,ma,aa,Ba.checked,za.value,ua.value,parseInt(Ga.value)/100,parseInt(da.value)/100,Aa.get());else{fa&&(fa=ia.checked||ma==Y&&aa==Y);if(!fa&&null!=n.pages&&n.pages.length){var la=0;fa=n.pages.length-1;ea.checked||(la=parseInt(ma)-1,fa=parseInt(aa)-1);for(var qa=la;qa<=fa;qa++){var oa=n.pages[qa];ma=oa==n.currentPage?P:null;if(null==ma){ma=n.createTemporaryGraph(P.stylesheet);
+ma.shapeForegroundColor=P.shapeForegroundColor;ma.shapeBackgroundColor=P.shapeBackgroundColor;aa=!0;la=!1;var ka=null,Ca=null;null==oa.viewState&&null==oa.root&&n.updatePageRoot(oa);null!=oa.viewState&&(aa=oa.viewState.pageVisible,la=oa.viewState.mathEnabled,ka=oa.viewState.background,Ca=oa.viewState.backgroundImage,ma.extFonts=oa.viewState.extFonts);null!=Ca&&null!=Ca.originalSrc&&(Ca=n.createImageForPageLink(Ca.originalSrc,oa));ma.background=ka;ma.backgroundImage=null!=Ca?new mxImage(Ca.src,Ca.width,
+Ca.height,Ca.x,Ca.y):null;ma.pageVisible=aa;ma.mathEnabled=la;var Oa=ma.getGraphBounds;ma.getGraphBounds=function(){var Ea=Oa.apply(this,arguments),Ia=this.backgroundImage;if(null!=Ia&&null!=Ia.width&&null!=Ia.height){var Qa=this.view.translate,Ma=this.view.scale;Ea=mxRectangle.fromRectangle(Ea);Ea.add(new mxRectangle((Qa.x+Ia.x)*Ma,(Qa.y+Ia.y)*Ma,Ia.width*Ma,Ia.height*Ma))}return Ea};var Sa=ma.getGlobalVariable;ma.getGlobalVariable=function(Ea){return"page"==Ea?oa.getName():"pagenumber"==Ea?qa+1:
+"pagecount"==Ea?null!=n.pages?n.pages.length:1:Sa.apply(this,arguments)};document.body.appendChild(ma.container);n.updatePageRoot(oa);ma.model.setRoot(oa.root)}na=ta(ma,na,qa!=fa);ma!=P&&ma.container.parentNode.removeChild(ma.container)}}else na=ta(P);null==na?n.handleError({message:mxResources.get("errorUpdatingPreview")}):(na.mathEnabled&&(fa=na.wnd.document,wa&&(na.wnd.IMMEDIATE_PRINT=!0),fa.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),na.closeDocument(),
+!na.mathEnabled&&wa&&PrintDialog.printPreview(na));null!=ra&&(P.shapeForegroundColor=va,P.shapeBackgroundColor=ha,P.stylesheet=ra,P.refresh())}}var P=n.editor.graph,T=document.createElement("div"),Q=document.createElement("h3");Q.style.width="100%";Q.style.textAlign="center";Q.style.marginTop="0px";mxUtils.write(Q,B||mxResources.get("print"));T.appendChild(Q);var V=1,Y=1;Q=document.createElement("div");Q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var ea=
+document.createElement("input");ea.style.cssText="margin-right:8px;margin-bottom:8px;";ea.setAttribute("value","all");ea.setAttribute("type","radio");ea.setAttribute("name","pages-printdialog");Q.appendChild(ea);B=document.createElement("span");mxUtils.write(B,mxResources.get("printAllPages"));Q.appendChild(B);mxUtils.br(Q);var ba=ea.cloneNode(!0);ea.setAttribute("checked","checked");ba.setAttribute("value","range");Q.appendChild(ba);B=document.createElement("span");mxUtils.write(B,mxResources.get("pages")+
+":");Q.appendChild(B);var ca=document.createElement("input");ca.style.cssText="margin:0 8px 0 8px;";ca.setAttribute("value","1");ca.setAttribute("type","number");ca.setAttribute("min","1");ca.style.width="50px";Q.appendChild(ca);B=document.createElement("span");mxUtils.write(B,mxResources.get("to"));Q.appendChild(B);var ja=ca.cloneNode(!0);Q.appendChild(ja);mxEvent.addListener(ca,"focus",function(){ba.checked=!0});mxEvent.addListener(ja,"focus",function(){ba.checked=!0});mxEvent.addListener(ca,"change",
+K);mxEvent.addListener(ja,"change",K);if(null!=n.pages&&(V=n.pages.length,null!=n.currentPage))for(B=0;B<n.pages.length;B++)if(n.currentPage==n.pages[B]){Y=B+1;ca.value=Y;ja.value=Y;break}ca.setAttribute("max",V);ja.setAttribute("max",V);n.isPagesEnabled()?1<V&&(T.appendChild(Q),ba.checked=!0):ba.checked=!0;mxUtils.br(Q);var ia=document.createElement("input");ia.setAttribute("value","all");ia.setAttribute("type","radio");ia.style.marginRight="8px";P.isSelectionEmpty()&&ia.setAttribute("disabled",
+"disabled");var Z=document.createElement("div");Z.style.marginBottom="10px";1==V?(ia.setAttribute("type","checkbox"),ia.style.marginBottom="12px",Z.appendChild(ia)):(ia.setAttribute("name","pages-printdialog"),ia.style.marginBottom="8px",Q.appendChild(ia));B=document.createElement("span");mxUtils.write(B,mxResources.get("selectionOnly"));ia.parentNode.appendChild(B);1==V&&mxUtils.br(ia.parentNode);var Da=document.createElement("input");Da.style.marginRight="8px";Da.setAttribute("value","adjust");
+Da.setAttribute("type","radio");Da.setAttribute("name","printZoom");Z.appendChild(Da);B=document.createElement("span");mxUtils.write(B,mxResources.get("adjustTo"));Z.appendChild(B);var Ga=document.createElement("input");Ga.style.cssText="margin:0 8px 0 8px;";Ga.setAttribute("value","100 %");Ga.style.width="50px";Z.appendChild(Ga);mxEvent.addListener(Ga,"focus",function(){Da.checked=!0});T.appendChild(Z);Q=Q.cloneNode(!1);var Ba=Da.cloneNode(!0);Ba.setAttribute("value","fit");Da.setAttribute("checked",
+"checked");B=document.createElement("div");B.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";B.appendChild(Ba);Q.appendChild(B);Z=document.createElement("table");Z.style.display="inline-block";var Ha=document.createElement("tbody"),pa=document.createElement("tr"),Na=pa.cloneNode(!0),La=document.createElement("td"),ya=La.cloneNode(!0),Ja=La.cloneNode(!0),Fa=La.cloneNode(!0),Pa=La.cloneNode(!0),xa=La.cloneNode(!0);La.style.textAlign="right";Fa.style.textAlign="right";mxUtils.write(La,
+mxResources.get("fitTo"));var za=document.createElement("input");za.style.cssText="margin:0 8px 0 8px;";za.setAttribute("value","1");za.setAttribute("min","1");za.setAttribute("type","number");za.style.width="40px";ya.appendChild(za);B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsAcross"));Ja.appendChild(B);mxUtils.write(Fa,mxResources.get("fitToBy"));var ua=za.cloneNode(!0);Pa.appendChild(ua);mxEvent.addListener(za,"focus",function(){Ba.checked=!0});mxEvent.addListener(ua,
+"focus",function(){Ba.checked=!0});B=document.createElement("span");mxUtils.write(B,mxResources.get("fitToSheetsDown"));xa.appendChild(B);pa.appendChild(La);pa.appendChild(ya);pa.appendChild(Ja);Na.appendChild(Fa);Na.appendChild(Pa);Na.appendChild(xa);Ha.appendChild(pa);Ha.appendChild(Na);Z.appendChild(Ha);Q.appendChild(Z);T.appendChild(Q);Q=document.createElement("div");B=document.createElement("div");B.style.fontWeight="bold";B.style.marginBottom="12px";mxUtils.write(B,mxResources.get("paperSize"));
+Q.appendChild(B);B=document.createElement("div");B.style.marginBottom="12px";var Aa=PageSetupDialog.addPageFormatPanel(B,"printdialog",n.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);Q.appendChild(B);B=document.createElement("span");mxUtils.write(B,mxResources.get("pageScale"));Q.appendChild(B);var da=document.createElement("input");da.style.cssText="margin:0 8px 0 8px;";da.setAttribute("value","100 %");da.style.width="60px";Q.appendChild(da);T.appendChild(Q);B=document.createElement("div");
+B.style.cssText="text-align:right;margin:48px 0 0 0;";Q=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});Q.className="geBtn";n.editor.cancelFirst&&B.appendChild(Q);n.isOffline()||(Z=mxUtils.button(mxResources.get("help"),function(){P.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),Z.className="geBtn",B.appendChild(Z));PrintDialog.previewEnabled&&(Z=mxUtils.button(mxResources.get("preview"),function(){n.hideDialog();R(!1)}),Z.className="geBtn",B.appendChild(Z));Z=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?
+"print":"ok"),function(){n.hideDialog();R(!0)});Z.className="geBtn gePrimaryBtn";B.appendChild(Z);n.editor.cancelFirst||B.appendChild(Q);T.appendChild(B);this.container=T};var O=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 n=this.image;null!=n&&null!=n.src&&Graph.isPageLink(n.src)&&
+(n={originalSrc:n.src});this.page.viewState.backgroundImage=n}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 O.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 W=document.createElement("canvas"),U=new Image;U.onload=function(){try{W.getContext("2d").drawImage(U,0,0);var n=W.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=n&&6<n.length}catch(B){}};U.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(n){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};b.afterDecode=function(f,l,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.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=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.1";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(c,e,g,k,m,p,v){p=null!=p?p:0<=c.indexOf("NetworkError")||0<=c.indexOf("SecurityError")||0<=c.indexOf("NS_ERROR_FAILURE")||0<=c.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index c91fcfc7..dbe6743b 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -110,7 +110,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.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/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.1",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]"!==
@@ -1990,12 +1990,12 @@ Editor.prototype.setFilename=function(b){this.filename=b};
Editor.prototype.createUndoManager=function(){var b=this.graph,e=new mxUndoManager;this.undoListener=function(n,D){e.undoableEditHappened(D.getProperty("edit"))};var k=mxUtils.bind(this,function(n,D){this.undoListener.apply(this,arguments)});b.getModel().addListener(mxEvent.UNDO,k);b.getView().addListener(mxEvent.UNDO,k);k=function(n,D){n=b.getSelectionCellsForChanges(D.getProperty("edit").changes,function(E){return!(E instanceof mxChildChange)});if(0<n.length){b.getModel();D=[];for(var t=0;t<n.length;t++)null!=
b.view.getState(n[t])&&D.push(n[t]);b.setSelectionCells(D)}};e.addListener(mxEvent.UNDO,k);e.addListener(mxEvent.REDO,k);return e};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(b){this.consumer=this.producer=null;this.done=b;this.args=null};OpenFile.prototype.setConsumer=function(b){this.consumer=b;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};
OpenFile.prototype.error=function(b){this.cancel(!0);mxUtils.alert(b)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(b){null!=this.done&&this.done(null!=b?b:!0)};
-function Dialog(b,e,k,n,D,t,E,d,f,g,m){var q=f?57:0,y=k,F=n,C=f?0:64,I=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(I.height=window.innerHeight);var G=I.height,aa=Math.max(1,Math.round((I.width-k-C)/2)),ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
-2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=G+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));I=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=I.x+"px";this.bg.style.top=I.y+"px";aa+=I.x;ca+=I.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+
-"px",ca+=b.embedViewport.y,aa+=b.embedViewport.x);D&&document.body.appendChild(this.bg);var ba=b.createDiv(f?"geTransDialog":"geDialog");D=this.getPosition(aa,ca,k,n);aa=D.x;ca=D.y;ba.style.width=k+"px";ba.style.height=n+"px";ba.style.left=aa+"px";ba.style.top=ca+"px";ba.style.zIndex=this.zIndex;ba.appendChild(e);document.body.appendChild(ba);!d&&e.clientHeight>ba.clientHeight-C&&(e.style.overflowY="auto");e.style.overflowX="hidden";if(t&&(t=document.createElement("img"),t.setAttribute("src",Dialog.prototype.closeImage),
-t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=ca+14+"px",t.style.left=aa+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!m)){var Z=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Z=!0}),null,mxUtils.bind(this,function(qa){Z&&(b.hideDialog(!0),Z=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
-g();null!=qa&&(y=k=qa.w,F=n=qa.h)}qa=mxUtils.getDocumentSize();G=qa.height;this.bg.style.height=G+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");aa=Math.max(1,Math.round((qa.width-k-C)/2));ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));k=null!=document.body?Math.min(y,document.body.scrollWidth-C):y;n=Math.min(F,G-C);qa=this.getPosition(aa,ca,k,n);aa=qa.x;ca=qa.y;ba.style.left=aa+"px";ba.style.top=ca+"px";ba.style.width=k+"px";ba.style.height=
-n+"px";!d&&e.clientHeight>ba.clientHeight-C&&(e.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=ca+14+"px",this.dialogImg.style.left=aa+k+38-q+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=E;this.container=ba;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+function Dialog(b,e,k,n,D,t,E,d,f,g,m){var q=f?57:0,y=k,F=n,C=f?0:64,I=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(I.height=window.innerHeight);var G=I.height,Z=Math.max(1,Math.round((I.width-k-C)/2)),ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
+2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=G+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));I=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=I.x+"px";this.bg.style.top=I.y+"px";Z+=I.x;ca+=I.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
+ca+=b.embedViewport.y,Z+=b.embedViewport.x);D&&document.body.appendChild(this.bg);var aa=b.createDiv(f?"geTransDialog":"geDialog");D=this.getPosition(Z,ca,k,n);Z=D.x;ca=D.y;aa.style.width=k+"px";aa.style.height=n+"px";aa.style.left=Z+"px";aa.style.top=ca+"px";aa.style.zIndex=this.zIndex;aa.appendChild(e);document.body.appendChild(aa);!d&&e.clientHeight>aa.clientHeight-C&&(e.style.overflowY="auto");e.style.overflowX="hidden";if(t&&(t=document.createElement("img"),t.setAttribute("src",Dialog.prototype.closeImage),
+t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=ca+14+"px",t.style.left=Z+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!m)){var Y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Y=!0}),null,mxUtils.bind(this,function(qa){Y&&(b.hideDialog(!0),Y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
+g();null!=qa&&(y=k=qa.w,F=n=qa.h)}qa=mxUtils.getDocumentSize();G=qa.height;this.bg.style.height=G+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");Z=Math.max(1,Math.round((qa.width-k-C)/2));ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));k=null!=document.body?Math.min(y,document.body.scrollWidth-C):y;n=Math.min(F,G-C);qa=this.getPosition(Z,ca,k,n);Z=qa.x;ca=qa.y;aa.style.left=Z+"px";aa.style.top=ca+"px";aa.style.width=k+"px";aa.style.height=
+n+"px";!d&&e.clientHeight>aa.clientHeight-C&&(e.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=ca+14+"px",this.dialogImg.style.left=Z+k+38-q+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=E;this.container=aa;b.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+
@@ -2003,8 +2003,8 @@ Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKA
var ErrorDialog=function(b,e,k,n,D,t,E,d,f,g,m){f=null!=f?f:!0;var q=document.createElement("div");q.style.textAlign="center";if(null!=e){var y=document.createElement("div");y.style.padding="0px";y.style.margin="0px";y.style.fontSize="18px";y.style.paddingBottom="16px";y.style.marginBottom="10px";y.style.borderBottom="1px solid #c0c0c0";y.style.color="gray";y.style.whiteSpace="nowrap";y.style.textOverflow="ellipsis";y.style.overflow="hidden";mxUtils.write(y,e);y.setAttribute("title",e);q.appendChild(y)}e=
document.createElement("div");e.style.lineHeight="1.2em";e.style.padding="6px";e.innerHTML=k;q.appendChild(e);k=document.createElement("div");k.style.marginTop="12px";k.style.textAlign="center";null!=t&&(e=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();t()}),e.className="geBtn",k.appendChild(e),k.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=m&&m()}),g.className="geBtn",k.appendChild(g));var F=mxUtils.button(n,function(){f&&b.hideDialog();null!=D&&D()});
F.className="geBtn";k.appendChild(F);null!=E&&(n=mxUtils.button(E,function(){f&&b.hideDialog();null!=d&&d()}),n.className="geBtn gePrimaryBtn",k.appendChild(n));this.init=function(){F.focus()};q.appendChild(k);this.container=q},PrintDialog=function(b,e){this.create(b,e)};
-PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,I=parseInt(q.value)/100;isNaN(I)&&(I=1,q.value="100%");I*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,aa=1/k.pageScale;if(C){var ca=E.checked?1:parseInt(m.value);isNaN(ca)||(aa=mxUtils.getScaleForPageCount(ca,k,G))}k.getGraphBounds();var ba=ca=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*I);G.height=Math.ceil(G.height*I);aa*=I;!C&&k.pageVisible?(I=k.getPageLayout(),ca-=I.x*G.width,ba-=I.y*
-G.height):C=!0;C=PrintDialog.createPrintPreview(k,aa,G,0,ca,ba,C);C.open();F&&PrintDialog.printPreview(C)}var k=b.editor.graph,n=document.createElement("table");n.style.width="100%";n.style.height="100%";var D=document.createElement("tbody");var t=document.createElement("tr");var E=document.createElement("input");E.setAttribute("type","checkbox");var d=document.createElement("td");d.setAttribute("colspan","2");d.style.fontSize="10pt";d.appendChild(E);var f=document.createElement("span");mxUtils.write(f,
+PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,I=parseInt(q.value)/100;isNaN(I)&&(I=1,q.value="100%");I*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,Z=1/k.pageScale;if(C){var ca=E.checked?1:parseInt(m.value);isNaN(ca)||(Z=mxUtils.getScaleForPageCount(ca,k,G))}k.getGraphBounds();var aa=ca=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*I);G.height=Math.ceil(G.height*I);Z*=I;!C&&k.pageVisible?(I=k.getPageLayout(),ca-=I.x*G.width,aa-=I.y*
+G.height):C=!0;C=PrintDialog.createPrintPreview(k,Z,G,0,ca,aa,C);C.open();F&&PrintDialog.printPreview(C)}var k=b.editor.graph,n=document.createElement("table");n.style.width="100%";n.style.height="100%";var D=document.createElement("tbody");var t=document.createElement("tr");var E=document.createElement("input");E.setAttribute("type","checkbox");var d=document.createElement("td");d.setAttribute("colspan","2");d.style.fontSize="10pt";d.appendChild(E);var f=document.createElement("span");mxUtils.write(f,
" "+mxResources.get("fitPage"));d.appendChild(f);mxEvent.addListener(f,"click",function(F){E.checked=!E.checked;g.checked=!E.checked;mxEvent.consume(F)});mxEvent.addListener(E,"change",function(){g.checked=!E.checked});t.appendChild(d);D.appendChild(t);t=t.cloneNode(!1);var g=document.createElement("input");g.setAttribute("type","checkbox");d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(g);f=document.createElement("span");mxUtils.write(f," "+mxResources.get("posterPrint")+":");
d.appendChild(f);mxEvent.addListener(f,"click",function(F){g.checked=!g.checked;E.checked=!g.checked;mxEvent.consume(F)});t.appendChild(d);var m=document.createElement("input");m.setAttribute("value","1");m.setAttribute("type","number");m.setAttribute("min","1");m.setAttribute("size","4");m.setAttribute("disabled","disabled");m.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(m);mxUtils.write(d," "+mxResources.get("pages")+" (max)");t.appendChild(d);D.appendChild(t);
mxEvent.addListener(g,"change",function(){g.checked?m.removeAttribute("disabled"):m.setAttribute("disabled","disabled");E.checked=!g.checked});t=t.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");t.appendChild(d);d=document.createElement("td");var q=document.createElement("input");q.setAttribute("value","100 %");q.setAttribute("size","5");q.style.width="50px";d.appendChild(q);t.appendChild(d);D.appendChild(t);t=document.createElement("tr");d=document.createElement("td");
@@ -2015,29 +2015,29 @@ PrintDialog.previewEnabled=!0;
var PageSetupDialog=function(b){function e(){null==m||m==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=m,g.style.backgroundImage="")}function k(){var G=C;null!=G&&Graph.isPageLink(G.src)&&(G=b.createImageForPageLink(G.src,null));null!=G&&null!=G.src?(F.setAttribute("src",G.src),F.style.display=""):(F.removeAttribute("src"),F.style.display="none")}var n=b.editor.graph,D=document.createElement("table");D.style.width=
"100%";D.style.height="100%";var t=document.createElement("tbody");var E=document.createElement("tr");var d=document.createElement("td");d.style.verticalAlign="top";d.style.fontSize="10pt";mxUtils.write(d,mxResources.get("paperSize")+":");E.appendChild(d);d=document.createElement("td");d.style.verticalAlign="top";d.style.fontSize="10pt";var f=PageSetupDialog.addPageFormatPanel(d,"pagesetupdialog",n.pageFormat);E.appendChild(d);t.appendChild(E);E=document.createElement("tr");d=document.createElement("td");
mxUtils.write(d,mxResources.get("background")+":");E.appendChild(d);d=document.createElement("td");d.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=n.background;e();mxEvent.addListener(g,
-"click",function(G){b.pickColor(m||"none",function(aa){m=aa;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
+"click",function(G){b.pickColor(m||"none",function(Z){m=Z;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
d=document.createElement("td");mxUtils.write(d,mxResources.get("image")+":");E.appendChild(d);d=document.createElement("td");var y=document.createElement("button");y.className="geBtn";y.style.margin="0px";mxUtils.write(y,mxResources.get("change")+"...");var F=document.createElement("img");F.setAttribute("valign","middle");F.style.verticalAlign="middle";F.style.border="1px solid lightGray";F.style.borderRadius="4px";F.style.marginRight="14px";F.style.maxWidth="100px";F.style.cursor="pointer";F.style.height=
-"60px";F.style.padding="4px";var C=n.backgroundImage,I=function(G){b.showBackgroundImageDialog(function(aa,ca){ca||(C=aa,k())},C);mxEvent.consume(G)};mxEvent.addListener(y,"click",I);mxEvent.addListener(F,"click",I);k();d.appendChild(F);d.appendChild(y);E.appendChild(d);t.appendChild(E);E=document.createElement("tr");d=document.createElement("td");d.colSpan=2;d.style.paddingTop="16px";d.setAttribute("align","right");y=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});y.className=
+"60px";F.style.padding="4px";var C=n.backgroundImage,I=function(G){b.showBackgroundImageDialog(function(Z,ca){ca||(C=Z,k())},C);mxEvent.consume(G)};mxEvent.addListener(y,"click",I);mxEvent.addListener(F,"click",I);k();d.appendChild(F);d.appendChild(y);E.appendChild(d);t.appendChild(E);E=document.createElement("tr");d=document.createElement("td");d.colSpan=2;d.style.paddingTop="16px";d.setAttribute("align","right");y=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});y.className=
"geBtn";b.editor.cancelFirst&&d.appendChild(y);I=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var G=parseInt(q.value);isNaN(G)||n.gridSize===G||n.setGridSize(G);G=new ChangePageSetup(b,m,C,f.get());G.ignoreColor=n.background==m;G.ignoreImage=(null!=n.backgroundImage?n.backgroundImage.src:null)===(null!=C?C.src:null);n.pageFormat.width==G.previousFormat.width&&n.pageFormat.height==G.previousFormat.height&&G.ignoreColor&&G.ignoreImage||n.model.execute(G)});I.className="geBtn gePrimaryBtn";
d.appendChild(I);b.editor.cancelFirst||d.appendChild(y);E.appendChild(d);t.appendChild(E);D.appendChild(t);this.container=D};
-PageSetupDialog.addPageFormatPanel=function(b,e,k,n){function D(qa,N,Y){if(Y||q!=document.activeElement&&y!=document.activeElement){qa=!1;for(N=0;N<C.length;N++)Y=C[N],ca?"custom"==Y.key&&(d.value=Y.key,ca=!1):null!=Y.format&&("a4"==Y.key?826==k.width?(k=mxRectangle.fromRectangle(k),k.width=827):826==k.height&&(k=mxRectangle.fromRectangle(k),k.height=827):"a5"==Y.key&&(584==k.width?(k=mxRectangle.fromRectangle(k),k.width=583):584==k.height&&(k=mxRectangle.fromRectangle(k),k.height=583)),k.width==
-Y.format.width&&k.height==Y.format.height?(d.value=Y.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==Y.format.height&&k.height==Y.format.width&&(d.value=Y.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",m.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
+PageSetupDialog.addPageFormatPanel=function(b,e,k,n){function D(qa,Q,X){if(X||q!=document.activeElement&&y!=document.activeElement){qa=!1;for(Q=0;Q<C.length;Q++)X=C[Q],ca?"custom"==X.key&&(d.value=X.key,ca=!1):null!=X.format&&("a4"==X.key?826==k.width?(k=mxRectangle.fromRectangle(k),k.width=827):826==k.height&&(k=mxRectangle.fromRectangle(k),k.height=827):"a5"==X.key&&(584==k.width?(k=mxRectangle.fromRectangle(k),k.width=583):584==k.height&&(k=mxRectangle.fromRectangle(k),k.height=583)),k.width==
+X.format.width&&k.height==X.format.height?(d.value=X.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==X.format.height&&k.height==X.format.width&&(d.value=X.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",m.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
"checked"),d.value="custom",f.style.display="none",m.style.display="")}}e="format-"+e;var t=document.createElement("input");t.setAttribute("name",e);t.setAttribute("type","radio");t.setAttribute("value","portrait");var E=document.createElement("input");E.setAttribute("name",e);E.setAttribute("type","radio");E.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 f=document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";t.style.marginRight="6px";f.appendChild(t);e=document.createElement("span");e.style.maxWidth="100px";mxUtils.write(e,mxResources.get("portrait"));f.appendChild(e);E.style.marginLeft="10px";E.style.marginRight="6px";f.appendChild(E);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));f.appendChild(g);var m=document.createElement("div");m.style.marginLeft=
-"4px";m.style.width="210px";m.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";m.appendChild(q);mxUtils.write(m," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";m.appendChild(y);mxUtils.write(m," in");f.style.display="none";m.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),I=0;I<C.length;I++){var G=C[I];F[G.key]=G;var aa=document.createElement("option");aa.setAttribute("value",
-G.key);mxUtils.write(aa,G.title);d.appendChild(aa)}var ca=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(m);var ba=k,Z=function(qa,N){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,m.style.display="none",f.style.display=""):(f.style.display="none",m.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
-Math.floor(100*parseFloat(y.value)));"custom"!=d.value&&E.checked&&(qa=new mxRectangle(0,0,qa.height,qa.width));N&&ca||qa.width==ba.width&&qa.height==ba.height||(ba=qa,null!=n&&n(ba))};mxEvent.addListener(e,"click",function(qa){t.checked=!0;Z(qa);mxEvent.consume(qa)});mxEvent.addListener(g,"click",function(qa){E.checked=!0;Z(qa);mxEvent.consume(qa)});mxEvent.addListener(q,"blur",Z);mxEvent.addListener(q,"click",Z);mxEvent.addListener(y,"blur",Z);mxEvent.addListener(y,"click",Z);mxEvent.addListener(E,
-"change",Z);mxEvent.addListener(t,"change",Z);mxEvent.addListener(d,"change",function(qa){ca="custom"==d.value;Z(qa,!0)});Z();return{set:function(qa){k=qa;D(null,null,!0)},get:function(){return ba},widthInput:q,heightInput:y}};
+"4px";m.style.width="210px";m.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";m.appendChild(q);mxUtils.write(m," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";m.appendChild(y);mxUtils.write(m," in");f.style.display="none";m.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),I=0;I<C.length;I++){var G=C[I];F[G.key]=G;var Z=document.createElement("option");Z.setAttribute("value",
+G.key);mxUtils.write(Z,G.title);d.appendChild(Z)}var ca=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(m);var aa=k,Y=function(qa,Q){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,m.style.display="none",f.style.display=""):(f.style.display="none",m.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
+Math.floor(100*parseFloat(y.value)));"custom"!=d.value&&E.checked&&(qa=new mxRectangle(0,0,qa.height,qa.width));Q&&ca||qa.width==aa.width&&qa.height==aa.height||(aa=qa,null!=n&&n(aa))};mxEvent.addListener(e,"click",function(qa){t.checked=!0;Y(qa);mxEvent.consume(qa)});mxEvent.addListener(g,"click",function(qa){E.checked=!0;Y(qa);mxEvent.consume(qa)});mxEvent.addListener(q,"blur",Y);mxEvent.addListener(q,"click",Y);mxEvent.addListener(y,"blur",Y);mxEvent.addListener(y,"click",Y);mxEvent.addListener(E,
+"change",Y);mxEvent.addListener(t,"change",Y);mxEvent.addListener(d,"change",function(qa){ca="custom"==d.value;Y(qa,!0)});Y();return{set:function(qa){k=qa;D(null,null,!0)},get:function(){return aa},widthInput:q,heightInput:y}};
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(b,e,k,n,D,t,E,d,f,g,m,q,y){f=null!=f?f:!0;var F=document.createElement("table"),C=document.createElement("tbody");F.style.position="absolute";F.style.top="30px";F.style.left="20px";var I=document.createElement("tr");var G=document.createElement("td");G.style.textOverflow="ellipsis";G.style.textAlign="right";G.style.maxWidth=(y?y+15:100)+"px";G.style.fontSize="10pt";G.style.width=(y?y:84)+"px";mxUtils.write(G,(D||mxResources.get("filename"))+":");I.appendChild(G);var aa=
-document.createElement("input");aa.setAttribute("value",e||"");aa.style.marginLeft="4px";aa.style.width=null!=q?q+"px":"180px";var ca=mxUtils.button(k,function(){if(null==t||t(aa.value))f&&b.hideDialog(),n(aa.value)});ca.className="geBtn gePrimaryBtn";this.init=function(){if(null!=D||null==E)if(aa.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?aa.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var ba=F.parentNode;if(null!=ba){var Z=null;mxEvent.addListener(ba,
-"dragleave",function(qa){null!=Z&&(Z.style.backgroundColor="",Z=null);qa.stopPropagation();qa.preventDefault()});mxEvent.addListener(ba,"dragover",mxUtils.bind(this,function(qa){null==Z&&(!mxClient.IS_IE||10<document.documentMode)&&(Z=aa,Z.style.backgroundColor="#ebf2f9");qa.stopPropagation();qa.preventDefault()}));mxEvent.addListener(ba,"drop",mxUtils.bind(this,function(qa){null!=Z&&(Z.style.backgroundColor="",Z=null);0<=mxUtils.indexOf(qa.dataTransfer.types,"text/uri-list")&&(aa.value=decodeURIComponent(qa.dataTransfer.getData("text/uri-list")),
-ca.click());qa.stopPropagation();qa.preventDefault()}))}}};G=document.createElement("td");G.style.whiteSpace="nowrap";G.appendChild(aa);I.appendChild(G);if(null!=D||null==E)C.appendChild(I),null!=m&&(G.appendChild(FilenameDialog.createTypeHint(b,aa,m)),null!=b.editor.diagramFileTypes&&(I=document.createElement("tr"),G=document.createElement("td"),G.style.textOverflow="ellipsis",G.style.textAlign="right",G.style.maxWidth="100px",G.style.fontSize="10pt",G.style.width="84px",mxUtils.write(G,mxResources.get("type")+
-":"),I.appendChild(G),G=document.createElement("td"),G.style.whiteSpace="nowrap",I.appendChild(G),e=FilenameDialog.createFileTypes(b,aa,b.editor.diagramFileTypes),e.style.marginLeft="4px",e.style.width="198px",G.appendChild(e),aa.style.width=null!=q?q-40+"px":"190px",I.appendChild(G),C.appendChild(I)));null!=E&&(I=document.createElement("tr"),G=document.createElement("td"),G.colSpan=2,G.appendChild(E),I.appendChild(G),C.appendChild(I));I=document.createElement("tr");G=document.createElement("td");
-G.colSpan=2;G.style.paddingTop=null!=m?"12px":"20px";G.style.whiteSpace="nowrap";G.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});m.className="geBtn";b.editor.cancelFirst&&G.appendChild(m);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",G.appendChild(q));mxEvent.addListener(aa,"keypress",function(ba){13==ba.keyCode&&ca.click()});G.appendChild(ca);b.editor.cancelFirst||
-G.appendChild(m);I.appendChild(G);C.appendChild(I);F.appendChild(C);this.container=F};FilenameDialog.filenameHelpLink=null;
+var FilenameDialog=function(b,e,k,n,D,t,E,d,f,g,m,q,y){f=null!=f?f:!0;var F=document.createElement("table"),C=document.createElement("tbody");F.style.position="absolute";F.style.top="30px";F.style.left="20px";var I=document.createElement("tr");var G=document.createElement("td");G.style.textOverflow="ellipsis";G.style.textAlign="right";G.style.maxWidth=(y?y+15:100)+"px";G.style.fontSize="10pt";G.style.width=(y?y:84)+"px";mxUtils.write(G,(D||mxResources.get("filename"))+":");I.appendChild(G);var Z=
+document.createElement("input");Z.setAttribute("value",e||"");Z.style.marginLeft="4px";Z.style.width=null!=q?q+"px":"180px";var ca=mxUtils.button(k,function(){if(null==t||t(Z.value))f&&b.hideDialog(),n(Z.value)});ca.className="geBtn gePrimaryBtn";this.init=function(){if(null!=D||null==E)if(Z.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Z.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var aa=F.parentNode;if(null!=aa){var Y=null;mxEvent.addListener(aa,"dragleave",
+function(qa){null!=Y&&(Y.style.backgroundColor="",Y=null);qa.stopPropagation();qa.preventDefault()});mxEvent.addListener(aa,"dragover",mxUtils.bind(this,function(qa){null==Y&&(!mxClient.IS_IE||10<document.documentMode)&&(Y=Z,Y.style.backgroundColor="#ebf2f9");qa.stopPropagation();qa.preventDefault()}));mxEvent.addListener(aa,"drop",mxUtils.bind(this,function(qa){null!=Y&&(Y.style.backgroundColor="",Y=null);0<=mxUtils.indexOf(qa.dataTransfer.types,"text/uri-list")&&(Z.value=decodeURIComponent(qa.dataTransfer.getData("text/uri-list")),
+ca.click());qa.stopPropagation();qa.preventDefault()}))}}};G=document.createElement("td");G.style.whiteSpace="nowrap";G.appendChild(Z);I.appendChild(G);if(null!=D||null==E)C.appendChild(I),null!=m&&(G.appendChild(FilenameDialog.createTypeHint(b,Z,m)),null!=b.editor.diagramFileTypes&&(I=document.createElement("tr"),G=document.createElement("td"),G.style.textOverflow="ellipsis",G.style.textAlign="right",G.style.maxWidth="100px",G.style.fontSize="10pt",G.style.width="84px",mxUtils.write(G,mxResources.get("type")+
+":"),I.appendChild(G),G=document.createElement("td"),G.style.whiteSpace="nowrap",I.appendChild(G),e=FilenameDialog.createFileTypes(b,Z,b.editor.diagramFileTypes),e.style.marginLeft="4px",e.style.width="198px",G.appendChild(e),Z.style.width=null!=q?q-40+"px":"190px",I.appendChild(G),C.appendChild(I)));null!=E&&(I=document.createElement("tr"),G=document.createElement("td"),G.colSpan=2,G.appendChild(E),I.appendChild(G),C.appendChild(I));I=document.createElement("tr");G=document.createElement("td");G.colSpan=
+2;G.style.paddingTop=null!=m?"12px":"20px";G.style.whiteSpace="nowrap";G.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});m.className="geBtn";b.editor.cancelFirst&&G.appendChild(m);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",G.appendChild(q));mxEvent.addListener(Z,"keypress",function(aa){13==aa.keyCode&&ca.click()});G.appendChild(ca);b.editor.cancelFirst||G.appendChild(m);
+I.appendChild(G);C.appendChild(I);F.appendChild(C);this.container=F};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(b,e,k){var n=document.createElement("img");n.style.backgroundPosition="center bottom";n.style.backgroundRepeat="no-repeat";n.style.margin="2px 0 0 4px";n.style.verticalAlign="top";n.style.cursor="pointer";n.style.height="16px";n.style.width="16px";mxUtils.setOpacity(n,70);var D=function(){n.setAttribute("src",Editor.helpImage);n.setAttribute("title",mxResources.get("help"));for(var t=0;t<k.length;t++)if(0<k[t].ext.length&&e.value.toLowerCase().substring(e.value.length-
k[t].ext.length-1)=="."+k[t].ext){n.setAttribute("title",mxResources.get(k[t].title));break}};mxEvent.addListener(e,"keyup",D);mxEvent.addListener(e,"change",D);mxEvent.addListener(n,"click",function(t){var E=n.getAttribute("title");n.getAttribute("src")==Editor.helpImage?b.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=E&&b.showError(null,E,mxResources.get("help"),function(){b.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(t)});
D();return n};
@@ -2051,41 +2051,41 @@ mxGraphView.prototype.validateBackgroundStyles=function(){var E=this.graph,d=nul
E.defaultPageBorderColor,E.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(E.container.className="geDiagramContainer",f.style.backgroundPosition=m,f.style.backgroundColor=d,f.style.backgroundImage=g)};mxGraphView.prototype.createSvgGrid=function(E){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,g=[],m=1;m<this.gridSteps;m++){var q=m*d;g.push("M 0 "+q+" L "+f+" "+q+" M "+q+" 0 L "+q+
" "+f)}return'<svg width="'+f+'" height="'+f+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+f+'" height="'+f+'" patternUnits="userSpaceOnUse"><path d="'+g.join(" ")+'" fill="none" stroke="'+E+'" opacity="0.2" stroke-width="1"/><path d="M '+f+" 0 L 0 0 0 "+f+'" fill="none" stroke="'+E+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var b=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){b.apply(this,arguments);
if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps;g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+E,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";f.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.view.scale,m=this.view.translate,q=this.pageFormat,y=g*this.pageScale,F=this.view.getBackgroundPageBounds();
-d=F.width;f=F.height;var C=new mxRectangle(g*m.x,g*m.y,q.width*y,q.height*y),I=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,aa=F.x+d,ca=F.y+f;null==this.horizontalPageBreaks&&0<I&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(ba){if(null!=ba){for(var Z=ba==this.horizontalPageBreaks?I:G,qa=0;qa<=Z;qa++){var N=ba==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
-Math.round(F.y+(qa+1)*C.height)),new mxPoint(Math.round(aa),Math.round(F.y+(qa+1)*C.height))]:[new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(F.y)),new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(ca))];null!=ba[qa]?(ba[qa].points=N,ba[qa].redraw()):(N=new mxPolyline(N,this.pageBreakColor),N.dialect=this.dialect,N.isDashed=this.pageBreakDashed,N.pointerEvents=!1,N.init(this.view.backgroundPane),N.redraw(),ba[qa]=N)}for(qa=Z;qa<ba.length;qa++)ba[qa].destroy();ba.splice(Z,ba.length-Z)}});
+d=F.width;f=F.height;var C=new mxRectangle(g*m.x,g*m.y,q.width*y,q.height*y),I=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,Z=F.x+d,ca=F.y+f;null==this.horizontalPageBreaks&&0<I&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(aa){if(null!=aa){for(var Y=aa==this.horizontalPageBreaks?I:G,qa=0;qa<=Y;qa++){var Q=aa==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
+Math.round(F.y+(qa+1)*C.height)),new mxPoint(Math.round(Z),Math.round(F.y+(qa+1)*C.height))]:[new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(F.y)),new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(ca))];null!=aa[qa]?(aa[qa].points=Q,aa[qa].redraw()):(Q=new mxPolyline(Q,this.pageBreakColor),Q.dialect=this.dialect,Q.isDashed=this.pageBreakDashed,Q.pointerEvents=!1,Q.init(this.view.backgroundPane),Q.redraw(),aa[qa]=Q)}for(qa=Y;qa<aa.length;qa++)aa[qa].destroy();aa.splice(Y,aa.length-Y)}});
E(this.horizontalPageBreaks);E(this.verticalPageBreaks)};var e=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(E,d,f){for(var g=0;g<d.length;g++){if(this.graph.isTableCell(d[g])||this.graph.isTableRow(d[g]))return!1;if(this.graph.getModel().isVertex(d[g])){var m=this.graph.getCellGeometry(d[g]);if(null!=m&&m.relative)return!1}}return e.apply(this,arguments)};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=
function(){var E=k.apply(this,arguments);E.intersects=mxUtils.bind(this,function(d,f){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(E,arguments)});return E};mxGraphView.prototype.createBackgroundPageShape=function(E){return new mxRectangleShape(E,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var E=this.getGraphBounds(),d=0<E.width?E.x/this.scale-this.translate.x:0,f=0<E.height?E.y/this.scale-this.translate.y:0,g=this.graph.pageFormat,
m=this.graph.pageScale,q=g.width*m;g=g.height*m;m=Math.floor(Math.min(0,d)/q);var y=Math.floor(Math.min(0,f)/g);return new mxRectangle(this.scale*(this.translate.x+m*q),this.scale*(this.translate.y+y*g),this.scale*(Math.ceil(Math.max(1,d+E.width/this.scale)/q)-m)*q,this.scale*(Math.ceil(Math.max(1,f+E.height/this.scale)/g)-y)*g)};var n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){n.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=E+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var D=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(E,d,f,g,m,q){var y=D.apply(this,arguments);null==q||q||mxEvent.addListener(y,"mousedown",function(F){mxEvent.consume(F)});return y};var t=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(E,d,f){var g=this.graph.model.getParent(E);if(d){var m=this.graph.model.isEdge(E)?null:this.graph.getCellGeometry(E);m=!this.graph.model.isEdge(g)&&!this.graph.isSiblingSelected(E)&&(null!=m&&m.relative||!this.graph.isContainer(g)||this.graph.isPart(E))}else if(m=t.apply(this,arguments),this.graph.isTableCell(E)||this.graph.isTableRow(E))m=g,this.graph.isTable(m)||(m=this.graph.model.getParent(m)),m=!this.graph.selectionCellsHandler.isHandled(m)||this.graph.isCellSelected(m)&&this.graph.isToggleEvent(f.getEvent())||
-this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return m};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),m=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);m=m||q;if(q||!m&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var J=D.apply(this,arguments),W=this.backgroundImage;if(null!=W&&null!=W.width&&null!=W.height){var Q=this.view.translate,S=this.view.scale;J=mxRectangle.fromRectangle(J);J.add(new mxRectangle((Q.x+W.x)*S,(Q.y+W.y)*S,W.width*S,W.height*S))}return J};n.useCssTransforms&&(this.lazyZoomDelay=
-0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(J,W){this.clearSelectionState()});n.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
-n.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);n.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);n.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);n.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,n.isEnabled=function(){return!1},n.panningHandler.isForcePanningEvent=function(J){return!mxEvent.isPopupTrigger(J.getEvent())});this.actions=new Actions(this);this.menus=
+this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return m};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),m=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);m=m||q;if(q||!m&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var O=D.apply(this,arguments),N=this.backgroundImage;if(null!=N&&null!=N.width&&null!=N.height){var ba=this.view.translate,la=this.view.scale;O=mxRectangle.fromRectangle(O);O.add(new mxRectangle((ba.x+N.x)*la,(ba.y+N.y)*la,N.width*la,N.height*la))}return O};n.useCssTransforms&&(this.lazyZoomDelay=
+0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(O,N){this.clearSelectionState()});n.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
+n.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);n.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);n.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);n.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,n.isEnabled=function(){return!1},n.panningHandler.isForcePanningEvent=function(O){return!mxEvent.isPopupTrigger(O.getEvent())});this.actions=new Actions(this);this.menus=
this.createMenus();if(!n.standalone){var t="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),E="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(J){try{var W=n.getCellStyle(J,!1),Q=[],S=[],ha;for(ha in W)Q.push(W[ha]),S.push(ha);n.getModel().isEdge(J)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",S,"values",Q,"cells",[J]))}catch(la){this.handleError(la)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=mxUtils.clone(n.defaultEdgeStyle);
-n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),m=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(J,W,Q,S,ha,la,u){S=null!=S?S:n.currentVertexStyle;ha=null!=ha?ha:n.currentEdgeStyle;la=null!=la?la:!0;Q=null!=Q?Q:n.getModel();if(u){u=[];for(var H=0;H<J.length;H++)u=u.concat(Q.getDescendants(J[H]));J=u}Q.beginUpdate();try{for(H=0;H<J.length;H++){var O=J[H];if(W)var T=["fontSize","fontFamily",
-"fontColor"];else{var R=Q.getStyle(O),da=null!=R?R.split(";"):[];T=t.slice();for(var P=0;P<da.length;P++){var ma=da[P],ra=ma.indexOf("=");if(0<=ra){var xa=ma.substring(0,ra),ta=mxUtils.indexOf(T,xa);0<=ta&&T.splice(ta,1);for(u=0;u<m.length;u++){var Aa=m[u];if(0<=mxUtils.indexOf(Aa,xa))for(var Ca=0;Ca<Aa.length;Ca++){var Ba=mxUtils.indexOf(T,Aa[Ca]);0<=Ba&&T.splice(Ba,1)}}}}}var sa=Q.isEdge(O);u=sa?ha:S;var Oa=Q.getStyle(O);for(P=0;P<T.length;P++){xa=T[P];var Ta=u[xa];null!=Ta&&"edgeStyle"!=xa&&("shape"!=
-xa||sa)&&(!sa||la||0>mxUtils.indexOf(d,xa))&&(Oa=mxUtils.setStyle(Oa,xa,Ta))}Editor.simpleLabels&&(Oa=mxUtils.setStyle(mxUtils.setStyle(Oa,"html",null),"whiteSpace",null));Q.setStyle(O,Oa)}}finally{Q.endUpdate()}return J};n.addListener("cellsInserted",function(J,W){q(W.getProperty("cells"),null,null,null,null,!0,!0)});n.addListener("textInserted",function(J,W){q(W.getProperty("cells"),!0)});this.insertHandler=q;this.createDivs();this.createUi();this.refresh();var y=mxUtils.bind(this,function(J){null==
-J&&(J=window.event);return n.isEditing()||null!=J&&this.isSelectionAllowed(J)});this.container==document.body&&(this.menubarContainer.onselectstart=y,this.menubarContainer.onmousedown=y,this.toolbarContainer.onselectstart=y,this.toolbarContainer.onmousedown=y,this.diagramContainer.onselectstart=y,this.diagramContainer.onmousedown=y,this.sidebarContainer.onselectstart=y,this.sidebarContainer.onmousedown=y,this.formatContainer.onselectstart=y,this.formatContainer.onmousedown=y,this.footerContainer.onselectstart=
-y,this.footerContainer.onmousedown=y,null!=this.tabContainer&&(this.tabContainer.onselectstart=y));!this.editor.chromeless||this.editor.editable?(e=function(J){if(null!=J){var W=mxEvent.getSource(J);if("A"==W.nodeName)for(;null!=W;){if("geHint"==W.className)return!0;W=W.parentNode}}return y(J)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",e):this.diagramContainer.oncontextmenu=e):n.panningHandler.usePopupTrigger=
-!1;n.init(this.diagramContainer);mxClient.IS_SVG&&null!=n.view.getDrawPane()&&(e=n.view.getDrawPane().ownerSVGElement,null!=e&&(e.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=n.graphHandler){var F=n.graphHandler.start;n.graphHandler.start=function(){null!=ea.hoverIcons&&ea.hoverIcons.reset();F.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(J){var W=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(J)-
-W.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(J)-W.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var C=!1,I=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(J,W){return C||I.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(J){32!=J.which||n.isEditing()?mxEvent.isConsumed(J)||27!=J.keyCode||this.hideDialog(null,!0):(C=!0,this.hoverIcons.reset(),
-n.container.style.cursor="move",n.isEditing()||mxEvent.getSource(J)!=n.container||mxEvent.consume(J))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(J){n.container.style.cursor="";C=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var G=n.panningHandler.isForcePanningEvent;n.panningHandler.isForcePanningEvent=function(J){return G.apply(this,arguments)||C||mxEvent.isMouseEvent(J.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(J.getEvent()))&&
-(!mxEvent.isControlDown(J.getEvent())&&mxEvent.isRightMouseButton(J.getEvent())||mxEvent.isMiddleMouseButton(J.getEvent()))};var aa=n.cellEditor.isStopEditingEvent;n.cellEditor.isStopEditingEvent=function(J){return aa.apply(this,arguments)||13==J.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(J)||mxClient.IS_MAC&&mxEvent.isMetaDown(J)||mxClient.IS_SF&&mxEvent.isShiftDown(J))};var ca=n.isZoomWheelEvent;n.isZoomWheelEvent=function(){return C||ca.apply(this,arguments)};var ba=!1,Z=null,qa=null,N=null,
-Y=mxUtils.bind(this,function(){if(null!=this.toolbar&&ba!=n.cellEditor.isContentEditing()){for(var J=this.toolbar.container.firstChild,W=[];null!=J;){var Q=J.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,J)&&(J.parentNode.removeChild(J),W.push(J));J=Q}J=this.toolbar.fontMenu;Q=this.toolbar.sizeMenu;if(null==N)this.toolbar.createTextToolbar();else{for(var S=0;S<N.length;S++)this.toolbar.container.appendChild(N[S]);this.toolbar.fontMenu=Z;this.toolbar.sizeMenu=qa}ba=n.cellEditor.isContentEditing();
-Z=J;qa=Q;N=W}}),ea=this,ka=n.cellEditor.startEditing;n.cellEditor.startEditing=function(){ka.apply(this,arguments);Y();if(n.cellEditor.isContentEditing()){var J=!1,W=function(){J||(J=!0,window.setTimeout(function(){var Q=n.getSelectedEditingElement();null!=Q&&(Q=mxUtils.getCurrentStyle(Q),null!=Q&&null!=ea.toolbar&&(ea.toolbar.setFontName(Graph.stripQuotes(Q.fontFamily)),ea.toolbar.setFontSize(parseInt(Q.fontSize))));J=!1},0))};mxEvent.addListener(n.cellEditor.textarea,"input",W);mxEvent.addListener(n.cellEditor.textarea,
-"touchend",W);mxEvent.addListener(n.cellEditor.textarea,"mouseup",W);mxEvent.addListener(n.cellEditor.textarea,"keyup",W);W()}};var ja=n.cellEditor.stopEditing;n.cellEditor.stopEditing=function(J,W){try{ja.apply(this,arguments),Y()}catch(Q){ea.handleError(Q)}};n.container.setAttribute("tabindex","0");n.container.style.cursor="default";if(window.self===window.top&&null!=n.container.parentNode)try{n.container.focus()}catch(J){}var V=n.fireMouseEvent;n.fireMouseEvent=function(J,W,Q){J==mxEvent.MOUSE_DOWN&&
-this.container.focus();V.apply(this,arguments)};n.popupMenuHandler.autoExpand=!0;null!=this.menus&&(n.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(J,W,Q){this.menus.createPopupMenu(J,W,Q)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(J){n.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};n.connectionHandler.addListener(mxEvent.CONNECT,function(J,W){var Q=[W.getProperty("cell")];W.getProperty("terminalInserted")&&
-(Q.push(W.getProperty("terminal")),window.setTimeout(function(){null!=ea.hoverIcons&&ea.hoverIcons.update(n.view.getState(Q[Q.length-1]))},0));q(Q)});this.addListener("styleChanged",mxUtils.bind(this,function(J,W){var Q=W.getProperty("cells"),S=J=!1;if(0<Q.length)for(var ha=0;ha<Q.length&&(J=n.getModel().isVertex(Q[ha])||J,!(S=n.getModel().isEdge(Q[ha])||S)||!J);ha++);else S=J=!0;Q=W.getProperty("keys");W=W.getProperty("values");for(ha=0;ha<Q.length;ha++){var la=0<=mxUtils.indexOf(f,Q[ha]);if("strokeColor"!=
-Q[ha]||null!=W[ha]&&"none"!=W[ha])if(0<=mxUtils.indexOf(E,Q[ha]))S||0<=mxUtils.indexOf(g,Q[ha])?null==W[ha]?delete n.currentEdgeStyle[Q[ha]]:n.currentEdgeStyle[Q[ha]]=W[ha]:J&&0<=mxUtils.indexOf(t,Q[ha])&&(null==W[ha]?delete n.currentVertexStyle[Q[ha]]:n.currentVertexStyle[Q[ha]]=W[ha]);else if(0<=mxUtils.indexOf(t,Q[ha])){if(J||la)null==W[ha]?delete n.currentVertexStyle[Q[ha]]:n.currentVertexStyle[Q[ha]]=W[ha];if(S||la||0<=mxUtils.indexOf(g,Q[ha]))null==W[ha]?delete n.currentEdgeStyle[Q[ha]]:n.currentEdgeStyle[Q[ha]]=
-W[ha]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==
-n.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
-(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==n.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==n.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==n.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var J=n.currentVertexStyle.fontFamily||"Helvetica",W=String(n.currentVertexStyle.fontSize||"12"),Q=n.getView().getState(n.getSelectionCell());null!=Q&&(J=
-Q.style[mxConstants.STYLE_FONTFAMILY]||J,W=Q.style[mxConstants.STYLE_FONTSIZE]||W,10<J.length&&(J=J.substring(0,8)+"..."));this.toolbar.setFontName(J);this.toolbar.setFontSize(W)}),n.getSelectionModel().addListener(mxEvent.CHANGE,b),n.getModel().addListener(mxEvent.CHANGE,b));n.addListener(mxEvent.CELLS_ADDED,function(J,W){J=W.getProperty("cells");W=W.getProperty("parent");null!=W&&n.getModel().isLayer(W)&&!n.isCellVisible(W)&&null!=J&&0<J.length&&n.getModel().setVisible(W,!0)});this.gestureHandler=
-mxUtils.bind(this,function(J){null!=this.currentMenu&&mxEvent.getSource(J)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
-this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));
-n.addListener("gridSizeChanged",mxUtils.bind(this,function(){n.isGridEnabled()&&n.view.validateBackground()}));this.editor.resetGraph()}this.init();n.standalone||this.open()};EditorUi.compactUi=!0;
+d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" "),f=!1,g=!1;this.setDefaultStyle=function(O){try{var N=n.getCellStyle(O,!1),ba=[],la=[],u;for(u in N)ba.push(N[u]),la.push(u);n.getModel().isEdge(O)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",la,"values",ba,"cells",[O]));n.getModel().isEdge(O)?g=!0:f=!0}catch(H){this.handleError(H)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=
+mxUtils.clone(n.defaultEdgeStyle);n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);f=g=!1;this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var m=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<m.length;e++)0>mxUtils.indexOf(t,m[e])&&t.push(m[e]);var q="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),y=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],
+["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<y.length;e++)for(k=0;k<y[e].length;k++)t.push(y[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var F=function(O,N,ba,la,u,H,P){la=null!=la?la:n.currentVertexStyle;u=null!=u?u:n.currentEdgeStyle;H=null!=H?H:!0;ba=null!=ba?ba:n.getModel();if(P){P=[];for(var T=0;T<O.length;T++)P=P.concat(ba.getDescendants(O[T]));O=P}ba.beginUpdate();try{for(T=0;T<O.length;T++){var S=
+O[T];if(N)var da=["fontSize","fontFamily","fontColor"];else{var R=ba.getStyle(S),ma=null!=R?R.split(";"):[];da=t.slice();for(var ra=0;ra<ma.length;ra++){var xa=ma[ra],ta=xa.indexOf("=");if(0<=ta){var Aa=xa.substring(0,ta),Ca=mxUtils.indexOf(da,Aa);0<=Ca&&da.splice(Ca,1);for(P=0;P<y.length;P++){var Ba=y[P];if(0<=mxUtils.indexOf(Ba,Aa))for(var sa=0;sa<Ba.length;sa++){var Pa=mxUtils.indexOf(da,Ba[sa]);0<=Pa&&da.splice(Pa,1)}}}}}var Ta=ba.isEdge(S);P=Ta?u:la;var Oa=ba.getStyle(S);for(ra=0;ra<da.length;ra++){Aa=
+da[ra];var Xa=P[Aa];null!=Xa&&"edgeStyle"!=Aa&&("shape"!=Aa||Ta)&&(!Ta||H||0>mxUtils.indexOf(d,Aa))&&(Oa=mxUtils.setStyle(Oa,Aa,Xa))}Editor.simpleLabels&&(Oa=mxUtils.setStyle(mxUtils.setStyle(Oa,"html",null),"whiteSpace",null));ba.setStyle(S,Oa)}}finally{ba.endUpdate()}return O};n.addListener("cellsInserted",function(O,N){F(N.getProperty("cells"),null,null,null,null,!0,!0)});n.addListener("textInserted",function(O,N){F(N.getProperty("cells"),!0)});this.insertHandler=F;this.createDivs();this.createUi();
+this.refresh();var C=mxUtils.bind(this,function(O){null==O&&(O=window.event);return n.isEditing()||null!=O&&this.isSelectionAllowed(O)});this.container==document.body&&(this.menubarContainer.onselectstart=C,this.menubarContainer.onmousedown=C,this.toolbarContainer.onselectstart=C,this.toolbarContainer.onmousedown=C,this.diagramContainer.onselectstart=C,this.diagramContainer.onmousedown=C,this.sidebarContainer.onselectstart=C,this.sidebarContainer.onmousedown=C,this.formatContainer.onselectstart=C,
+this.formatContainer.onmousedown=C,this.footerContainer.onselectstart=C,this.footerContainer.onmousedown=C,null!=this.tabContainer&&(this.tabContainer.onselectstart=C));!this.editor.chromeless||this.editor.editable?(e=function(O){if(null!=O){var N=mxEvent.getSource(O);if("A"==N.nodeName)for(;null!=N;){if("geHint"==N.className)return!0;N=N.parentNode}}return C(O)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",
+e):this.diagramContainer.oncontextmenu=e):n.panningHandler.usePopupTrigger=!1;n.init(this.diagramContainer);mxClient.IS_SVG&&null!=n.view.getDrawPane()&&(e=n.view.getDrawPane().ownerSVGElement,null!=e&&(e.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=n.graphHandler){var I=n.graphHandler.start;n.graphHandler.start=function(){null!=ia.hoverIcons&&ia.hoverIcons.reset();I.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(O){var N=
+mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(O)-N.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(O)-N.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var G=!1,Z=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(O,N){return G||Z.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(O){32!=O.which||n.isEditing()?mxEvent.isConsumed(O)||
+27!=O.keyCode||this.hideDialog(null,!0):(G=!0,this.hoverIcons.reset(),n.container.style.cursor="move",n.isEditing()||mxEvent.getSource(O)!=n.container||mxEvent.consume(O))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(O){n.container.style.cursor="";G=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var ca=n.panningHandler.isForcePanningEvent;n.panningHandler.isForcePanningEvent=function(O){return ca.apply(this,arguments)||G||
+mxEvent.isMouseEvent(O.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(O.getEvent()))&&(!mxEvent.isControlDown(O.getEvent())&&mxEvent.isRightMouseButton(O.getEvent())||mxEvent.isMiddleMouseButton(O.getEvent()))};var aa=n.cellEditor.isStopEditingEvent;n.cellEditor.isStopEditingEvent=function(O){return aa.apply(this,arguments)||13==O.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(O)||mxClient.IS_MAC&&mxEvent.isMetaDown(O)||mxClient.IS_SF&&mxEvent.isShiftDown(O))};var Y=n.isZoomWheelEvent;
+n.isZoomWheelEvent=function(){return G||Y.apply(this,arguments)};var qa=!1,Q=null,X=null,fa=null,ka=mxUtils.bind(this,function(){if(null!=this.toolbar&&qa!=n.cellEditor.isContentEditing()){for(var O=this.toolbar.container.firstChild,N=[];null!=O;){var ba=O.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,O)&&(O.parentNode.removeChild(O),N.push(O));O=ba}O=this.toolbar.fontMenu;ba=this.toolbar.sizeMenu;if(null==fa)this.toolbar.createTextToolbar();else{for(var la=0;la<fa.length;la++)this.toolbar.container.appendChild(fa[la]);
+this.toolbar.fontMenu=Q;this.toolbar.sizeMenu=X}qa=n.cellEditor.isContentEditing();Q=O;X=ba;fa=N}}),ia=this,V=n.cellEditor.startEditing;n.cellEditor.startEditing=function(){V.apply(this,arguments);ka();if(n.cellEditor.isContentEditing()){var O=!1,N=function(){O||(O=!0,window.setTimeout(function(){var ba=n.getSelectedEditingElement();null!=ba&&(ba=mxUtils.getCurrentStyle(ba),null!=ba&&null!=ia.toolbar&&(ia.toolbar.setFontName(Graph.stripQuotes(ba.fontFamily)),ia.toolbar.setFontSize(parseInt(ba.fontSize))));
+O=!1},0))};mxEvent.addListener(n.cellEditor.textarea,"input",N);mxEvent.addListener(n.cellEditor.textarea,"touchend",N);mxEvent.addListener(n.cellEditor.textarea,"mouseup",N);mxEvent.addListener(n.cellEditor.textarea,"keyup",N);N()}};var L=n.cellEditor.stopEditing;n.cellEditor.stopEditing=function(O,N){try{L.apply(this,arguments),ka()}catch(ba){ia.handleError(ba)}};n.container.setAttribute("tabindex","0");n.container.style.cursor="default";if(window.self===window.top&&null!=n.container.parentNode)try{n.container.focus()}catch(O){}var ea=
+n.fireMouseEvent;n.fireMouseEvent=function(O,N,ba){O==mxEvent.MOUSE_DOWN&&this.container.focus();ea.apply(this,arguments)};n.popupMenuHandler.autoExpand=!0;null!=this.menus&&(n.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(O,N,ba){this.menus.createPopupMenu(O,N,ba)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(O){n.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};n.connectionHandler.addListener(mxEvent.CONNECT,
+function(O,N){var ba=[N.getProperty("cell")];N.getProperty("terminalInserted")&&(ba.push(N.getProperty("terminal")),window.setTimeout(function(){null!=ia.hoverIcons&&ia.hoverIcons.update(n.view.getState(ba[ba.length-1]))},0));F(ba)});this.addListener("styleChanged",mxUtils.bind(this,function(O,N){var ba=N.getProperty("cells"),la=O=!1;if(0<ba.length)for(var u=0;u<ba.length&&(O=n.getModel().isVertex(ba[u])||O,!(la=n.getModel().isEdge(ba[u])||la)||!O);u++);else la=O=!0;O=O&&!f;la=la&&!g;ba=N.getProperty("keys");
+N=N.getProperty("values");for(u=0;u<ba.length;u++){var H=0<=mxUtils.indexOf(m,ba[u]);if("strokeColor"!=ba[u]||null!=N[u]&&"none"!=N[u])if(0<=mxUtils.indexOf(E,ba[u]))la||0<=mxUtils.indexOf(q,ba[u])?null==N[u]?delete n.currentEdgeStyle[ba[u]]:n.currentEdgeStyle[ba[u]]=N[u]:O&&0<=mxUtils.indexOf(t,ba[u])&&(null==N[u]?delete n.currentVertexStyle[ba[u]]:n.currentVertexStyle[ba[u]]=N[u]);else if(0<=mxUtils.indexOf(t,ba[u])){if(O||H)null==N[u]?delete n.currentVertexStyle[ba[u]]:n.currentVertexStyle[ba[u]]=
+N[u];if(la||H||0<=mxUtils.indexOf(q,ba[u]))null==N[u]?delete n.currentEdgeStyle[ba[u]]:n.currentEdgeStyle[ba[u]]=N[u]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?
+"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?
+"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==n.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==n.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==n.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var O=n.currentVertexStyle.fontFamily||"Helvetica",
+N=String(n.currentVertexStyle.fontSize||"12"),ba=n.getView().getState(n.getSelectionCell());null!=ba&&(O=ba.style[mxConstants.STYLE_FONTFAMILY]||O,N=ba.style[mxConstants.STYLE_FONTSIZE]||N,10<O.length&&(O=O.substring(0,8)+"..."));this.toolbar.setFontName(O);this.toolbar.setFontSize(N)}),n.getSelectionModel().addListener(mxEvent.CHANGE,b),n.getModel().addListener(mxEvent.CHANGE,b));n.addListener(mxEvent.CELLS_ADDED,function(O,N){O=N.getProperty("cells");N=N.getProperty("parent");null!=N&&n.getModel().isLayer(N)&&
+!n.isCellVisible(N)&&null!=O&&0<O.length&&n.getModel().setVisible(N,!0)});this.gestureHandler=mxUtils.bind(this,function(O){null!=this.currentMenu&&mxEvent.getSource(O)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=
+mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));
+this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));n.addListener("gridSizeChanged",mxUtils.bind(this,function(){n.isGridEnabled()&&n.view.validateBackground()}));this.editor.resetGraph()}this.init();n.standalone||this.open()};EditorUi.compactUi=!0;
EditorUi.parsePng=function(b,e,k){function n(d,f){var g=t;t+=f;return d.substring(g,t)}function D(d){d=n(d,4);return d.charCodeAt(3)+(d.charCodeAt(2)<<8)+(d.charCodeAt(1)<<16)+(d.charCodeAt(0)<<24)}var t=0;if(n(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=k&&k();else if(n(b,4),"IHDR"!=n(b,4))null!=k&&k();else{n(b,17);do{k=D(b);var E=n(b,4);if(null!=e&&e(t-8,E,k))break;value=n(b,k);n(b,4);if("IEND"==E)break}while(k)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
@@ -2103,7 +2103,7 @@ EditorUi.prototype.installShapePicker=function(){var b=this.editor.graph,e=this;
b.popupMenuHandler.isMenuShowing=function(){return n.apply(this,arguments)||null!=e.shapePicker};var D=b.dblClick;b.dblClick=function(f,g){if(this.isEnabled())if(null!=g||null==e.sidebar||mxEvent.isShiftDown(f)||b.isCellLocked(b.getDefaultParent()))D.apply(this,arguments);else{var m=mxUtils.convertPoint(this.container,mxEvent.getClientX(f),mxEvent.getClientY(f));mxEvent.consume(f);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.x,m.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
k);var t=this.hoverIcons.drag;this.hoverIcons.drag=function(){e.hideShapePicker();t.apply(this,arguments)};var E=this.hoverIcons.execute;this.hoverIcons.execute=function(f,g,m){var q=m.getEvent();this.graph.isCloneEvent(q)||mxEvent.isShiftDown(q)?E.apply(this,arguments):this.graph.connectVertex(f.cell,g,this.graph.defaultEdgeLength,q,null,null,mxUtils.bind(this,function(y,F,C){var I=b.getCompositeParent(f.cell);y=b.getCellGeometry(I);for(m.consume();null!=I&&b.model.isVertex(I)&&null!=y&&y.relative;)cell=
I,I=b.model.getParent(cell),y=b.getCellGeometry(I);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.getGraphX(),m.getGraphY(),I,mxUtils.bind(this,function(G){C(G);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(G))}),g)}),30)}),mxUtils.bind(this,function(y){this.graph.selectCellsForConnectVertex(y,q,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d);d=window.setTimeout(mxUtils.bind(this,function(){var m=
-g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");m=m.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+m.x-F.x;F=b.container.scrollTop+m.y-F.y;var I=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,I,mxUtils.bind(this,function(aa){null!=aa&&b.connectVertex(I,q,b.defaultEdgeLength,y,!0,!0,function(ca,ba,Z){Z(aa);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(aa))},
+g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");m=m.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+m.x-F.x;F=b.container.scrollTop+m.y-F.y;var I=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,I,mxUtils.bind(this,function(Z){null!=Z&&b.connectVertex(I,q,b.defaultEdgeLength,y,!0,!0,function(ca,aa,Y){Y(Z);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(Z))},
function(ca){b.selectCellsForConnectVertex(ca)},y,this.hoverIcons)}),q,!0);this.centerShapePicker(G,m,C,F,q);mxUtils.setOpacity(G,30);mxEvent.addListener(G,"mouseenter",function(){mxUtils.setOpacity(G,100)});mxEvent.addListener(G,"mouseleave",function(){e.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d)}))}};
EditorUi.prototype.centerShapePicker=function(b,e,k,n,D){if(D==mxConstants.DIRECTION_EAST||D==mxConstants.DIRECTION_WEST)b.style.width="40px";var t=b.getBoundingClientRect();D==mxConstants.DIRECTION_NORTH?(k-=t.width/2-10,n-=t.height+6):D==mxConstants.DIRECTION_SOUTH?(k-=t.width/2-10,n+=e.height+6):D==mxConstants.DIRECTION_WEST?(k-=t.width+6,n-=t.height/2-10):D==mxConstants.DIRECTION_EAST&&(k+=e.width+6,n-=t.height/2-10);b.style.left=k+"px";b.style.top=n+"px"};
EditorUi.prototype.showShapePicker=function(b,e,k,n,D,t){b=this.createShapePicker(b,e,k,n,D,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(k,t),t);null!=b&&(null==this.hoverIcons||t||this.hoverIcons.reset(),t=this.editor.graph,t.popupMenuHandler.hideMenu(),t.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=n,this.shapePicker=b);return b};
@@ -2129,40 +2129,40 @@ EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipb
0),y=0;y<g.length;y++){m.add(q,g[y]);var F=t.view.getState(E[y]);if(null!=F){var C=t.getCellGeometry(g[y]);null!=C&&C.relative&&!m.isEdge(E[y])&&null==f[mxObjectIdentity.get(m.getParent(E[y]))]&&(C.offset=null,C.relative=!1,C.x=F.x/F.view.scale-F.view.translate.x,C.y=F.y/F.view.scale-F.view.translate.y)}}t.updateCustomLinks(t.createCellMapping(d,f),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return E};var k=mxClipboard.paste;mxClipboard.paste=function(t){var E=
null;t.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):E=k.apply(this,arguments);b.updatePasteActionStates();return E};var n=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){n.apply(this,arguments);b.updatePasteActionStates()};var D=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(t,E){D.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
-EditorUi.prototype.initCanvas=function(){var b=this.editor.graph;b.timerAutoScroll=!0;b.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((b.container.offsetWidth-34)/b.view.scale)),Math.max(0,Math.round((b.container.offsetHeight-34)/b.view.scale)))};b.view.getBackgroundPageBounds=function(){var Q=this.graph.getPageLayout(),S=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+Q.x*S.width),this.scale*(this.translate.y+Q.y*S.height),this.scale*Q.width*S.width,
-this.scale*Q.height*S.height)};b.getPreferredPageSize=function(Q,S,ha){Q=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,Q.width*S.width,Q.height*S.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(Q,S,ha,la){if(null!=b.container&&!b.isViewer()){ha=null!=ha?ha:0;la=null!=la?la:0;var u=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),H=mxUtils.hasScrollbars(b.container),O=b.view.translate,T=b.view.scale,
-R=mxRectangle.fromRectangle(u);R.x=R.x/T-O.x;R.y=R.y/T-O.y;R.width/=T;R.height/=T;O=b.container.scrollTop;var da=b.container.scrollLeft,P=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)P+=3;var ma=b.container.offsetWidth-P;P=b.container.offsetHeight-P;Q=Q?Math.max(.3,Math.min(S||1,ma/R.width)):T;S=(ma-Q*R.width)/2/Q;var ra=0==this.lightboxVerticalDivider?0:(P-Q*R.height)/this.lightboxVerticalDivider/Q;H&&(S=Math.max(S,0),ra=Math.max(ra,0));if(H||u.width<ma||u.height<
-P)b.view.scaleAndTranslate(Q,Math.floor(S-R.x),Math.floor(ra-R.y)),b.container.scrollTop=O*Q/T,b.container.scrollLeft=da*Q/T;else if(0!=ha||0!=la)u=b.view.translate,b.view.setTranslate(Math.floor(u.x+ha/T),Math.floor(u.y+la/T))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
-n)});this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(Q){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(Q){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var D=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";
+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 O=this.graph.getPageLayout(),N=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+O.x*N.width),this.scale*(this.translate.y+O.y*N.height),this.scale*O.width*N.width,
+this.scale*O.height*N.height)};b.getPreferredPageSize=function(O,N,ba){O=this.getPageLayout();N=this.getPageSize();return new mxRectangle(0,0,O.width*N.width,O.height*N.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(O,N,ba,la){if(null!=b.container&&!b.isViewer()){ba=null!=ba?ba:0;la=null!=la?la:0;var u=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),H=mxUtils.hasScrollbars(b.container),P=b.view.translate,T=b.view.scale,
+S=mxRectangle.fromRectangle(u);S.x=S.x/T-P.x;S.y=S.y/T-P.y;S.width/=T;S.height/=T;P=b.container.scrollTop;var da=b.container.scrollLeft,R=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)R+=3;var ma=b.container.offsetWidth-R;R=b.container.offsetHeight-R;O=O?Math.max(.3,Math.min(N||1,ma/S.width)):T;N=(ma-O*S.width)/2/O;var ra=0==this.lightboxVerticalDivider?0:(R-O*S.height)/this.lightboxVerticalDivider/O;H&&(N=Math.max(N,0),ra=Math.max(ra,0));if(H||u.width<ma||u.height<
+R)b.view.scaleAndTranslate(O,Math.floor(N-S.x),Math.floor(ra-S.y)),b.container.scrollTop=P*O/T,b.container.scrollLeft=da*O/T;else if(0!=ba||0!=la)u=b.view.translate,b.view.setTranslate(Math.floor(u.x+ba/T),Math.floor(u.y+la/T))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
+n)});this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(O){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(O){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var D=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";
this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=b.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var Q=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=Q?parseInt(Q["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(Q,S,ha){E++;
-var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",Q);null!=ha&&la.setAttribute("title",ha);Q=document.createElement("img");Q.setAttribute("border","0");Q.setAttribute("src",S);Q.style.width="36px";Q.style.filter="invert(100%)";la.appendChild(Q);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(Q){window.location.href=D.backBtn.url;mxEvent.consume(Q)}),
-Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=t(mxUtils.bind(this,function(Q){this.actions.get("previousPage").funct();mxEvent.consume(Q)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";
-this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(Q){this.actions.get("nextPage").funct();mxEvent.consume(Q)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerText="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
-function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(Q){this.actions.get("zoomOut").funct();mxEvent.consume(Q)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){this.actions.get("zoomIn").funct();
-mxEvent.consume(Q)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){b.isLightboxView()?(1==b.view.scale?this.lightboxFit():b.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(Q)}),Editor.zoomFitImage,mxResources.get("fit"));var y=null,F=null,C=mxUtils.bind(this,function(Q){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);y=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
-0);y=null;F=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";F=null}),600)}),Q||200)}),I=mxUtils.bind(this,function(Q){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,Q||30)});if("1"==urlParams.layers){this.layersDialog=null;var G=t(mxUtils.bind(this,function(Q){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),
-this.layersDialog=null;else{this.layersDialog=b.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var S=G.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=S.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));S=mxUtils.getCurrentStyle(this.editor.graph.container);
-this.layersDialog.style.zIndex=S.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(Q)}),Editor.layersImage,mxResources.get("layers")),aa=b.getModel();aa.addListener(mxEvent.CHANGE,function(){G.style.display=1<aa.getChildCount(aa.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(t);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||t(mxUtils.bind(this,
-function(Q){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):b.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(Q)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(q=0;q<this.lightboxToolbarActions.length;q++){var ca=this.lightboxToolbarActions[q];ca.elem=t(ca.fn,ca.icon,ca.tooltip)}null!=D.refreshBtn&&t(mxUtils.bind(this,function(Q){D.refreshBtn.url?
-window.location.href=D.refreshBtn.url:window.location.reload();mxEvent.consume(Q)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=D.fullscreenBtn&&window.self!==window.top&&t(mxUtils.bind(this,function(Q){D.fullscreenBtn.url?b.openLink(D.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(Q)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(D.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=
-document.body))&&t(mxUtils.bind(this,function(Q){"1"==urlParams.close||D.closeBtn?window.close():(this.destroy(),mxEvent.consume(Q))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(Q){mxEvent.isTouchEvent(Q)||
-(mxEvent.isShiftDown(Q)||I(30),C())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(Q){mxEvent.consume(Q)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(Q){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(Q)?C():I(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(Q){mxEvent.isShiftDown(Q)?C():I(100);mxEvent.consume(Q)}));mxEvent.addListener(this.chromelessToolbar,
-"mouseleave",mxUtils.bind(this,function(Q){mxEvent.isTouchEvent(Q)||I(30)}));var ba=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(Q,S){this.startX=S.getGraphX();this.startY=S.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(Q,S){},mouseUp:function(Q,S){mxEvent.isTouchEvent(S.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<ba&&Math.abs(this.scrollTop-b.container.scrollTop)<
-ba&&Math.abs(this.startX-S.getGraphX())<ba&&Math.abs(this.startY-S.getGraphY())<ba&&(0<parseFloat(k.chromelessToolbar.style.opacity||0)?C():I(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var Z=b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var Q=this.graph.getPagePadding(),S=this.graph.getPageSize();this.translate.x=Q.x-(this.x0||0)*S.width;this.translate.y=Q.y-(this.y0||0)*
-S.height}Z.apply(this,arguments)};if(!b.isViewer()){var qa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var Q=this.getPageLayout(),S=this.getPagePadding(),ha=this.getPageSize(),la=Math.ceil(2*S.x+Q.width*ha.width),u=Math.ceil(2*S.y+Q.height*ha.height),H=b.minimumGraphSize;if(null==H||H.width!=la||H.height!=u)b.minimumGraphSize=new mxRectangle(0,0,la,u);la=S.x-Q.x*ha.width;S=S.y-Q.y*ha.height;this.autoTranslate||this.view.translate.x==la&&
-this.view.translate.y==S?qa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=Q.x,this.view.y0=Q.y,Q=b.view.translate.x,ha=b.view.translate.y,b.view.setTranslate(la,S),b.container.scrollLeft+=Math.round((la-Q)*b.view.scale),b.container.scrollTop+=Math.round((S-ha)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var N=b.view.getBackgroundPane(),Y=b.view.getDrawPane();b.cumulativeZoomFactor=1;var ea=null,ka=null,ja=null,
-V=null,J=null,W=function(Q){null!=ea&&window.clearTimeout(ea);0<=Q&&window.setTimeout(function(){if(!b.isMouseDown||V)ea=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),Y.style.transformOrigin="",N.style.transformOrigin="",mxClient.IS_SF?
-(Y.style.transform="scale(1)",N.style.transform="scale(1)",window.setTimeout(function(){Y.style.transform="";N.style.transform=""},0)):(Y.style.transform="",N.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var S=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ha=mxUtils.getOffset(b.container),la=b.view.scale,u=0,H=0;null!=ka&&(u=b.container.offsetWidth/2-ka.x+ha.x,H=b.container.offsetHeight/2-ka.y+ha.y);b.zoom(b.cumulativeZoomFactor,
-null,b.isFastZoomEnabled()?20:null);b.view.scale!=la&&(null!=ja&&(u+=S.x-ja.x,H+=S.y-ja.y),null!=e&&k.chromelessResize(!1,null,u*(b.cumulativeZoomFactor-1),H*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==u&&0==H||(b.container.scrollLeft-=u*(b.cumulativeZoomFactor-1),b.container.scrollTop-=H*(b.cumulativeZoomFactor-1)));null!=J&&Y.setAttribute("filter",J);b.cumulativeZoomFactor=1;J=V=ka=ja=ea=null}),null!=Q?Q:b.isFastZoomEnabled()?k.wheelZoomDelay:k.lazyZoomDelay)},0)};b.lazyZoom=
-function(Q,S,ha,la){la=null!=la?la:this.zoomFactor;(S=S||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));Q?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
-(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==J&&""!=Y.getAttribute("filter")&&(J=Y.getAttribute("filter"),Y.removeAttribute("filter")),ja=new mxPoint(b.container.scrollLeft,b.container.scrollTop),Q=S||null==ka?b.container.scrollLeft+
-b.container.clientWidth/2:ka.x+b.container.scrollLeft-b.container.offsetLeft,la=S||null==ka?b.container.scrollTop+b.container.clientHeight/2:ka.y+b.container.scrollTop-b.container.offsetTop,Y.style.transformOrigin=Q+"px "+la+"px",Y.style.transform="scale("+this.cumulativeZoomFactor+")",N.style.transformOrigin=Q+"px "+la+"px",N.style.transform="scale("+this.cumulativeZoomFactor+")",null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(Q=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(Q.style,
-"transform-origin",(S||null==ka?b.container.clientWidth/2+b.container.scrollLeft-Q.offsetLeft+"px":ka.x+b.container.scrollLeft-Q.offsetLeft-b.container.offsetLeft+"px")+" "+(S||null==ka?b.container.clientHeight/2+b.container.scrollTop-Q.offsetTop+"px":ka.y+b.container.scrollTop-Q.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(Q.style,"transform","scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=k.hoverIcons&&
-k.hoverIcons.reset());W(b.isFastZoomEnabled()?ha:0)};mxEvent.addGestureListeners(b.container,function(Q){null!=ea&&window.clearTimeout(ea)},null,function(Q){1!=b.cumulativeZoomFactor&&W(0)});mxEvent.addListener(b.container,"scroll",function(Q){null==ea||b.isMouseDown||1==b.cumulativeZoomFactor||W(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(Q,S,ha,la,u){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ha&&b.isScrollWheelEvent(Q))ha=
-b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(Q)?b.view.setTranslate(ha.x+(S?-la:la),ha.y):b.view.setTranslate(ha.x,ha.y+(S?la:-la));else if(ha||b.isZoomWheelEvent(Q))for(var H=mxEvent.getSource(Q);null!=H;){if(H==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=u?new mxPoint(la,u):new mxPoint(mxEvent.getClientX(Q),mxEvent.getClientY(Q)),V=ha,ha=b.zoomFactor,la=null,Q.ctrlKey&&null!=Q.deltaY&&40>Math.abs(Q.deltaY)&&Math.round(Q.deltaY)!=Q.deltaY?ha=1+Math.abs(Q.deltaY)/
-20*(ha-1):null!=Q.movementY&&"pointermove"==Q.type&&(ha=1+Math.max(1,Math.abs(Q.movementY))/20*(ha-1),la=-1),b.lazyZoom(S,null,la,ha),mxEvent.consume(Q),!1;H=H.parentNode}}),b.container);b.panningHandler.zoomGraph=function(Q){b.cumulativeZoomFactor=Q.scale;b.lazyZoom(0<Q.scale,!0);mxEvent.consume(Q)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
+"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var O=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=O?parseInt(O["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(O,N,ba){E++;
+var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",O);null!=ba&&la.setAttribute("title",ba);O=document.createElement("img");O.setAttribute("border","0");O.setAttribute("src",N);O.style.width="36px";O.style.filter="invert(100%)";la.appendChild(O);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(O){window.location.href=D.backBtn.url;mxEvent.consume(O)}),
+Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=t(mxUtils.bind(this,function(O){this.actions.get("previousPage").funct();mxEvent.consume(O)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";
+this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(O){this.actions.get("nextPage").funct();mxEvent.consume(O)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerText="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
+function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(O){this.actions.get("zoomOut").funct();mxEvent.consume(O)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(O){this.actions.get("zoomIn").funct();
+mxEvent.consume(O)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(O){b.isLightboxView()?(1==b.view.scale?this.lightboxFit():b.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(O)}),Editor.zoomFitImage,mxResources.get("fit"));var y=null,F=null,C=mxUtils.bind(this,function(O){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);y=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
+0);y=null;F=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";F=null}),600)}),O||200)}),I=mxUtils.bind(this,function(O){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,O||30)});if("1"==urlParams.layers){this.layersDialog=null;var G=t(mxUtils.bind(this,function(O){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),
+this.layersDialog=null;else{this.layersDialog=b.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var N=G.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=N.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));N=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=N.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(O)}),Editor.layersImage,mxResources.get("layers")),Z=b.getModel();Z.addListener(mxEvent.CHANGE,function(){G.style.display=1<Z.getChildCount(Z.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(t);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||t(mxUtils.bind(this,function(O){null!=
+this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):b.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(O)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(q=0;q<this.lightboxToolbarActions.length;q++){var ca=this.lightboxToolbarActions[q];ca.elem=t(ca.fn,ca.icon,ca.tooltip)}null!=D.refreshBtn&&t(mxUtils.bind(this,function(O){D.refreshBtn.url?window.location.href=
+D.refreshBtn.url:window.location.reload();mxEvent.consume(O)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=D.fullscreenBtn&&window.self!==window.top&&t(mxUtils.bind(this,function(O){D.fullscreenBtn.url?b.openLink(D.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(O)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(D.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&
+t(mxUtils.bind(this,function(O){"1"==urlParams.close||D.closeBtn?window.close():(this.destroy(),mxEvent.consume(O))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(O){mxEvent.isTouchEvent(O)||(mxEvent.isShiftDown(O)||
+I(30),C())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(O){mxEvent.consume(O)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(O){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(O)?C():I(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(O){mxEvent.isShiftDown(O)?C():I(100);mxEvent.consume(O)}));mxEvent.addListener(this.chromelessToolbar,
+"mouseleave",mxUtils.bind(this,function(O){mxEvent.isTouchEvent(O)||I(30)}));var aa=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(O,N){this.startX=N.getGraphX();this.startY=N.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(O,N){},mouseUp:function(O,N){mxEvent.isTouchEvent(N.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<aa&&Math.abs(this.scrollTop-b.container.scrollTop)<
+aa&&Math.abs(this.startX-N.getGraphX())<aa&&Math.abs(this.startY-N.getGraphY())<aa&&(0<parseFloat(k.chromelessToolbar.style.opacity||0)?C():I(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var Y=b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var O=this.graph.getPagePadding(),N=this.graph.getPageSize();this.translate.x=O.x-(this.x0||0)*N.width;this.translate.y=O.y-(this.y0||0)*
+N.height}Y.apply(this,arguments)};if(!b.isViewer()){var qa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var O=this.getPageLayout(),N=this.getPagePadding(),ba=this.getPageSize(),la=Math.ceil(2*N.x+O.width*ba.width),u=Math.ceil(2*N.y+O.height*ba.height),H=b.minimumGraphSize;if(null==H||H.width!=la||H.height!=u)b.minimumGraphSize=new mxRectangle(0,0,la,u);la=N.x-O.x*ba.width;N=N.y-O.y*ba.height;this.autoTranslate||this.view.translate.x==la&&
+this.view.translate.y==N?qa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=O.x,this.view.y0=O.y,O=b.view.translate.x,ba=b.view.translate.y,b.view.setTranslate(la,N),b.container.scrollLeft+=Math.round((la-O)*b.view.scale),b.container.scrollTop+=Math.round((N-ba)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var Q=b.view.getBackgroundPane(),X=b.view.getDrawPane();b.cumulativeZoomFactor=1;var fa=null,ka=null,ia=null,
+V=null,L=null,ea=function(O){null!=fa&&window.clearTimeout(fa);0<=O&&window.setTimeout(function(){if(!b.isMouseDown||V)fa=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),X.style.transformOrigin="",Q.style.transformOrigin="",mxClient.IS_SF?
+(X.style.transform="scale(1)",Q.style.transform="scale(1)",window.setTimeout(function(){X.style.transform="";Q.style.transform=""},0)):(X.style.transform="",Q.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var N=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ba=mxUtils.getOffset(b.container),la=b.view.scale,u=0,H=0;null!=ka&&(u=b.container.offsetWidth/2-ka.x+ba.x,H=b.container.offsetHeight/2-ka.y+ba.y);b.zoom(b.cumulativeZoomFactor,
+null,b.isFastZoomEnabled()?20:null);b.view.scale!=la&&(null!=ia&&(u+=N.x-ia.x,H+=N.y-ia.y),null!=e&&k.chromelessResize(!1,null,u*(b.cumulativeZoomFactor-1),H*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==u&&0==H||(b.container.scrollLeft-=u*(b.cumulativeZoomFactor-1),b.container.scrollTop-=H*(b.cumulativeZoomFactor-1)));null!=L&&X.setAttribute("filter",L);b.cumulativeZoomFactor=1;L=V=ka=ia=fa=null}),null!=O?O:b.isFastZoomEnabled()?k.wheelZoomDelay:k.lazyZoomDelay)},0)};b.lazyZoom=
+function(O,N,ba,la){la=null!=la?la:this.zoomFactor;(N=N||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));O?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
+(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==L&&""!=X.getAttribute("filter")&&(L=X.getAttribute("filter"),X.removeAttribute("filter")),ia=new mxPoint(b.container.scrollLeft,b.container.scrollTop),O=N||null==ka?b.container.scrollLeft+
+b.container.clientWidth/2:ka.x+b.container.scrollLeft-b.container.offsetLeft,la=N||null==ka?b.container.scrollTop+b.container.clientHeight/2:ka.y+b.container.scrollTop-b.container.offsetTop,X.style.transformOrigin=O+"px "+la+"px",X.style.transform="scale("+this.cumulativeZoomFactor+")",Q.style.transformOrigin=O+"px "+la+"px",Q.style.transform="scale("+this.cumulativeZoomFactor+")",null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(O=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(O.style,
+"transform-origin",(N||null==ka?b.container.clientWidth/2+b.container.scrollLeft-O.offsetLeft+"px":ka.x+b.container.scrollLeft-O.offsetLeft-b.container.offsetLeft+"px")+" "+(N||null==ka?b.container.clientHeight/2+b.container.scrollTop-O.offsetTop+"px":ka.y+b.container.scrollTop-O.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(O.style,"transform","scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=k.hoverIcons&&
+k.hoverIcons.reset());ea(b.isFastZoomEnabled()?ba:0)};mxEvent.addGestureListeners(b.container,function(O){null!=fa&&window.clearTimeout(fa)},null,function(O){1!=b.cumulativeZoomFactor&&ea(0)});mxEvent.addListener(b.container,"scroll",function(O){null==fa||b.isMouseDown||1==b.cumulativeZoomFactor||ea(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(O,N,ba,la,u){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ba&&b.isScrollWheelEvent(O))ba=
+b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(O)?b.view.setTranslate(ba.x+(N?-la:la),ba.y):b.view.setTranslate(ba.x,ba.y+(N?la:-la));else if(ba||b.isZoomWheelEvent(O))for(var H=mxEvent.getSource(O);null!=H;){if(H==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=u?new mxPoint(la,u):new mxPoint(mxEvent.getClientX(O),mxEvent.getClientY(O)),V=ba,ba=b.zoomFactor,la=null,O.ctrlKey&&null!=O.deltaY&&40>Math.abs(O.deltaY)&&Math.round(O.deltaY)!=O.deltaY?ba=1+Math.abs(O.deltaY)/
+20*(ba-1):null!=O.movementY&&"pointermove"==O.type&&(ba=1+Math.max(1,Math.abs(O.movementY))/20*(ba-1),la=-1),b.lazyZoom(N,null,la,ba),mxEvent.consume(O),!1;H=H.parentNode}}),b.container);b.panningHandler.zoomGraph=function(O){b.cumulativeZoomFactor=O.scale;b.lazyZoom(0<O.scale,!0);mxEvent.consume(O)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
EditorUi.prototype.toggleFormatPanel=function(b){b=null!=b?b:0==this.formatWidth;null!=this.format&&(this.formatWidth=b?240:0,this.formatContainer.style.display=b?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(b){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var e=urlParams.border,k=60;null!=e&&(k=parseInt(e));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(k,null,null,null,null,null,b);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var b=this.editor.graph.getModel();return 1==b.getChildCount(b.root)&&0==b.getChildCount(b.getChildAt(b.root,0))};
@@ -2237,8 +2237,8 @@ EditorUi.prototype.showBackgroundImageDialog=function(b,e){b=null!=b?b:mxUtils.b
EditorUi.prototype.setBackgroundImage=function(b){this.editor.graph.setBackgroundImage(b);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(b,e,k){mxUtils.confirm(b)?null!=e&&e():null!=k&&k()};EditorUi.prototype.createOutline=function(b){var e=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){e.update(!1)});return e};
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(b){function e(q,y,F){if(!n.isSelectionEmpty()&&n.isEnabled()){y=null!=y?y:1;var C=n.getCompositeParents(n.getSelectionCells()),I=0<C.length?C[0]:null;if(null!=I)if(F){n.getModel().beginUpdate();try{for(I=0;I<C.length;I++)if(n.getModel().isVertex(C[I])&&n.isCellResizable(C[I])){var G=n.getCellGeometry(C[I]);null!=G&&(G=G.clone(),37==q?G.width=Math.max(0,G.width-y):38==q?G.height=Math.max(0,G.height-y):39==q?G.width+=y:40==q&&(G.height+=y),n.getModel().setGeometry(C[I],
-G))}}finally{n.getModel().endUpdate()}}else{G=n.model.getParent(I);var aa=n.getView().scale;F=null;1==n.getSelectionCount()&&n.model.isVertex(I)&&null!=n.layoutManager&&!n.isCellLocked(I)&&(F=n.layoutManager.getLayout(G));if(null!=F&&F.constructor==mxStackLayout)y=G.getIndex(I),37==q||38==q?n.model.add(G,I,Math.max(0,y-1)):(39==q||40==q)&&n.model.add(G,I,Math.min(n.model.getChildCount(G),y+1));else{var ca=n.graphHandler;null!=ca&&(null==ca.first&&ca.start(I,0,0,C),null!=ca.first&&(I=C=0,37==q?C=-y:
-38==q?I=-y:39==q?C=y:40==q&&(I=y),ca.currentDx+=C*aa,ca.currentDy+=I*aa,ca.checkPreview(),ca.updatePreview()),null!=E&&window.clearTimeout(E),E=window.setTimeout(function(){if(null!=ca.first){var ba=ca.roundLength(ca.currentDx/aa),Z=ca.roundLength(ca.currentDy/aa);ca.moveCells(ca.cells,ba,Z);ca.reset()}},400))}}}}var k=this,n=this.editor.graph,D=new mxKeyHandler(n),t=D.isEventIgnored;D.isEventIgnored=function(q){return!(mxEvent.isShiftDown(q)&&9==q.keyCode)&&(!this.isControlDown(q)||mxEvent.isShiftDown(q)||
+G))}}finally{n.getModel().endUpdate()}}else{G=n.model.getParent(I);var Z=n.getView().scale;F=null;1==n.getSelectionCount()&&n.model.isVertex(I)&&null!=n.layoutManager&&!n.isCellLocked(I)&&(F=n.layoutManager.getLayout(G));if(null!=F&&F.constructor==mxStackLayout)y=G.getIndex(I),37==q||38==q?n.model.add(G,I,Math.max(0,y-1)):(39==q||40==q)&&n.model.add(G,I,Math.min(n.model.getChildCount(G),y+1));else{var ca=n.graphHandler;null!=ca&&(null==ca.first&&ca.start(I,0,0,C),null!=ca.first&&(I=C=0,37==q?C=-y:
+38==q?I=-y:39==q?C=y:40==q&&(I=y),ca.currentDx+=C*Z,ca.currentDy+=I*Z,ca.checkPreview(),ca.updatePreview()),null!=E&&window.clearTimeout(E),E=window.setTimeout(function(){if(null!=ca.first){var aa=ca.roundLength(ca.currentDx/Z),Y=ca.roundLength(ca.currentDy/Z);ca.moveCells(ca.cells,aa,Y);ca.reset()}},400))}}}}var k=this,n=this.editor.graph,D=new mxKeyHandler(n),t=D.isEventIgnored;D.isEventIgnored=function(q){return!(mxEvent.isShiftDown(q)&&9==q.keyCode)&&(!this.isControlDown(q)||mxEvent.isShiftDown(q)||
90!=q.keyCode&&89!=q.keyCode&&188!=q.keyCode&&190!=q.keyCode&&85!=q.keyCode)&&(66!=q.keyCode&&73!=q.keyCode||!this.isControlDown(q)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&t.apply(this,arguments)};D.isEnabledForEvent=function(q){return!mxEvent.isConsumed(q)&&this.isGraphEvent(q)&&this.isEnabled()&&(null==k.dialogs||0==k.dialogs.length)};D.isControlDown=function(q){return mxEvent.isControlDown(q)||mxClient.IS_MAC&&q.metaKey};var E=null,d={37:mxConstants.DIRECTION_WEST,
38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},f=D.getFunction;mxKeyHandler.prototype.getFunction=function(q){if(n.isEnabled()){if(mxEvent.isShiftDown(q)&&mxEvent.isAltDown(q)){var y=k.actions.get(k.altShiftActions[q.keyCode]);if(null!=y)return y.funct}if(null!=d[q.keyCode]&&!n.isSelectionEmpty())if(!this.isControlDown(q)&&mxEvent.isShiftDown(q)&&mxEvent.isAltDown(q)){if(n.model.isVertex(n.getSelectionCell()))return function(){var F=n.connectVertex(n.getSelectionCell(),
d[q.keyCode],n.defaultEdgeLength,q,!0);null!=F&&0<F.length&&(1==F.length&&n.model.isEdge(F[0])?n.setSelectionCell(n.model.getTerminal(F[0],!1)):n.setSelectionCell(F[F.length-1]),n.scrollCellToVisible(n.getSelectionCell()),null!=k.hoverIcons&&k.hoverIcons.update(n.view.getState(n.getSelectionCell())))}}else return this.isControlDown(q)?function(){e(q.keyCode,mxEvent.isShiftDown(q)?n.gridSize:null,!0)}:function(){e(q.keyCode,mxEvent.isShiftDown(q)?n.gridSize:null)}}return f.apply(this,arguments)};D.bindAction=
@@ -2259,37 +2259,38 @@ mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGr
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,e,k){return null};
mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:image/svg+xml;base64,"==b.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=b)this.clippedSvg=Graph.clipSvgDataUri(b,!0),this.clippedImage=b;b=this.clippedSvg}return b};
-Graph=function(b,e,k,n,D,t){mxGraph.call(this,b,e,k,n);this.themes=D||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=t?t:!1;b=this.baseUrl;e=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<e&&(e=b.indexOf("/",e+2),0<e&&(this.domainUrl=b.substring(0,e)),e=b.lastIndexOf("/"),0<e&&(this.domainPathUrl=b.substring(0,e+1)));this.isHtmlLabel=function(J){J=this.getCurrentCellStyle(J);
-return null!=J?"1"==J.html||"wrap"==J[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(J,W){if("mouseDown"==W.getProperty("eventName")&&this.isEnabled()){J=W.getProperty("event");var Q=J.getState();W=this.view.scale;if(!mxEvent.isAltDown(J.getEvent())&&null!=Q)if(this.model.isEdge(Q.cell))if(E=new mxPoint(J.getGraphX(),J.getGraphY()),m=this.isCellSelected(Q.cell),f=Q,d=J,null!=Q.text&&null!=
-Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,J.getGraphX(),J.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var S=this.selectionCellsHandler.getHandler(Q.cell);null!=S&&null!=S.bends&&0<S.bends.length&&(g=S.getHandleForEvent(J))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(J.getEvent())&&(S=this.selectionCellsHandler.getHandler(Q.cell),null==S||null==S.getHandleForEvent(J))){var ha=new mxRectangle(J.getGraphX()-1,J.getGraphY()-1),la=mxEvent.isTouchEvent(J.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2;S=la+2;ha.grow(la);if(this.isTableCell(Q.cell)&&!this.isCellSelected(Q.cell)&&!(mxUtils.contains(Q,J.getGraphX()-S,J.getGraphY()-S)&&mxUtils.contains(Q,J.getGraphX()-S,J.getGraphY()+S)&&mxUtils.contains(Q,J.getGraphX()+S,J.getGraphY()+S)&&mxUtils.contains(Q,J.getGraphX()+S,J.getGraphY()-S))){var u=this.model.getParent(Q.cell);S=this.model.getParent(u);if(!this.isCellSelected(S)){la*=W;var H=2*la;if(this.model.getChildAt(S,0)!=u&&mxUtils.intersects(ha,new mxRectangle(Q.x,
-Q.y-la,Q.width,H))||this.model.getChildAt(u,0)!=Q.cell&&mxUtils.intersects(ha,new mxRectangle(Q.x-la,Q.y,H,Q.height))||mxUtils.intersects(ha,new mxRectangle(Q.x,Q.y+Q.height-la,Q.width,H))||mxUtils.intersects(ha,new mxRectangle(Q.x+Q.width-la,Q.y,H,Q.height)))u=this.selectionCellsHandler.isHandled(S),this.selectCellForEvent(S,J.getEvent()),S=this.selectionCellsHandler.getHandler(S),null!=S&&(la=S.getHandleForEvent(J),null!=la&&(S.start(J.getGraphX(),J.getGraphY(),la),S.blockDelayedSelection=!u,J.consume()))}}for(;!J.isConsumed()&&
-null!=Q&&(this.isTableCell(Q.cell)||this.isTableRow(Q.cell)||this.isTable(Q.cell));)this.isSwimlane(Q.cell)&&(S=this.getActualStartSize(Q.cell),(0<S.x||0<S.width)&&mxUtils.intersects(ha,new mxRectangle(Q.x+(S.x-S.width-1)*W+(0==S.x?Q.width:0),Q.y,1,Q.height))||(0<S.y||0<S.height)&&mxUtils.intersects(ha,new mxRectangle(Q.x,Q.y+(S.y-S.height-1)*W+(0==S.y?Q.height:0),Q.width,1)))&&(this.selectCellForEvent(Q.cell,J.getEvent()),S=this.selectionCellsHandler.getHandler(Q.cell),null!=S&&(la=mxEvent.CUSTOM_HANDLE-
-S.customHandles.length+1,S.start(J.getGraphX(),J.getGraphY(),la),J.consume())),Q=this.view.getState(this.model.getParent(Q.cell))}}}));this.addMouseListener({mouseDown:function(J,W){},mouseMove:mxUtils.bind(this,function(J,W){J=this.selectionCellsHandler.handlers.map;for(var Q in J)if(null!=J[Q].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(W.getEvent())){var S=this.tolerance;if(null!=E&&null!=f&&null!=d){if(Q=f,Math.abs(E.x-W.getGraphX())>S||Math.abs(E.y-W.getGraphY())>
-S){var ha=this.selectionCellsHandler.getHandler(Q.cell);null==ha&&this.model.isEdge(Q.cell)&&(ha=this.createHandler(Q));if(null!=ha&&null!=ha.bends&&0<ha.bends.length){J=ha.getHandleForEvent(d);var la=this.view.getEdgeStyle(Q);S=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(J=g);if(S&&0!=J&&J!=ha.bends.length-1&&J!=mxEvent.LABEL_HANDLE)!S||null==Q.visibleSourceState&&null==Q.visibleTargetState||(this.graphHandler.reset(),W.consume());else if(J==mxEvent.LABEL_HANDLE||0==J||null!=Q.visibleSourceState||
-J==ha.bends.length-1||null!=Q.visibleTargetState)S||J==mxEvent.LABEL_HANDLE||(S=Q.absolutePoints,null!=S&&(null==la&&null==J||la==mxEdgeStyle.OrthConnector)&&(J=g,null==J&&(J=new mxRectangle(E.x,E.y),J.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(J,S[0].x,S[0].y)?J=0:mxUtils.contains(J,S[S.length-1].x,S[S.length-1].y)?J=ha.bends.length-1:null!=la&&(2==S.length||3==S.length&&(0==Math.round(S[0].x-S[1].x)&&0==Math.round(S[1].x-S[2].x)||0==Math.round(S[0].y-S[1].y)&&0==Math.round(S[1].y-
-S[2].y)))?J=2:(J=mxUtils.findNearestSegment(Q,E.x,E.y),J=null==la?mxEvent.VIRTUAL_HANDLE-J:J+1))),null==J&&(J=mxEvent.VIRTUAL_HANDLE)),ha.start(W.getGraphX(),W.getGraphX(),J),W.consume(),this.graphHandler.reset()}null!=ha&&(this.selectionCellsHandler.isHandlerActive(ha)?this.isCellSelected(Q.cell)||(this.selectionCellsHandler.handlers.put(Q.cell,ha),this.selectCellForEvent(Q.cell,W.getEvent())):this.isCellSelected(Q.cell)||ha.destroy());m=!1;E=d=f=g=null}}else if(Q=W.getState(),null!=Q&&this.isCellEditable(Q.cell)){ha=
-null;if(this.model.isEdge(Q.cell)){if(J=new mxRectangle(W.getGraphX(),W.getGraphY()),J.grow(mxEdgeHandler.prototype.handleImage.width/2),S=Q.absolutePoints,null!=S)if(null!=Q.text&&null!=Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,W.getGraphX(),W.getGraphY()))ha="move";else if(mxUtils.contains(J,S[0].x,S[0].y)||mxUtils.contains(J,S[S.length-1].x,S[S.length-1].y))ha="pointer";else if(null!=Q.visibleSourceState||null!=Q.visibleTargetState)J=this.view.getEdgeStyle(Q),ha="crosshair",J!=mxEdgeStyle.EntityRelation&&
-this.isOrthogonal(Q)&&(W=mxUtils.findNearestSegment(Q,W.getGraphX(),W.getGraphY()),W<S.length-1&&0<=W&&(ha=0==Math.round(S[W].x-S[W+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(W.getEvent())){S=mxShape.prototype.svgStrokeTolerance/2;J=new mxRectangle(W.getGraphX(),W.getGraphY());J.grow(S);if(this.isTableCell(Q.cell)&&(W=this.model.getParent(Q.cell),S=this.model.getParent(W),!this.isCellSelected(S)))if(mxUtils.intersects(J,new mxRectangle(Q.x,Q.y-2,Q.width,4))&&this.model.getChildAt(S,
-0)!=W||mxUtils.intersects(J,new mxRectangle(Q.x,Q.y+Q.height-2,Q.width,4)))ha="row-resize";else if(mxUtils.intersects(J,new mxRectangle(Q.x-2,Q.y,4,Q.height))&&this.model.getChildAt(W,0)!=Q.cell||mxUtils.intersects(J,new mxRectangle(Q.x+Q.width-2,Q.y,4,Q.height)))ha="col-resize";for(W=Q;null==ha&&null!=W&&(this.isTableCell(W.cell)||this.isTableRow(W.cell)||this.isTable(W.cell));)this.isSwimlane(W.cell)&&(S=this.getActualStartSize(W.cell),la=this.view.scale,(0<S.x||0<S.width)&&mxUtils.intersects(J,
-new mxRectangle(W.x+(S.x-S.width-1)*la+(0==S.x?W.width*la:0),W.y,1,W.height))?ha="col-resize":(0<S.y||0<S.height)&&mxUtils.intersects(J,new mxRectangle(W.x,W.y+(S.y-S.height-1)*la+(0==S.y?W.height:0),W.width,1))&&(ha="row-resize")),W=this.view.getState(this.model.getParent(W.cell))}null!=ha&&Q.setCursor(ha)}}}),mouseUp:mxUtils.bind(this,function(J,W){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(J){var W=mxCellRenderer.prototype.getLabelValue.apply(this,
-arguments);J.view.graph.isHtmlLabel(J.cell)&&(W=1!=J.style.html?mxUtils.htmlEntities(W,!1):J.view.graph.sanitizeHtml(W));return W};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);
-this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(J,W){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var J=q.apply(this,arguments);if(this.graph.pageVisible){var W=[],Q=this.graph.pageFormat,S=this.graph.pageScale,ha=Q.width*S;Q=Q.height*S;S=this.graph.view.translate;for(var la=this.graph.view.scale,u=this.graph.getPageLayout(),H=0;H<u.width;H++)W.push(new mxRectangle(((u.x+
-H)*ha+S.x)*la,(u.y*Q+S.y)*la,ha*la,Q*la));for(H=1;H<u.height;H++)W.push(new mxRectangle((u.x*ha+S.x)*la,((u.y+H)*Q+S.y)*la,ha*la,Q*la));J=W.concat(J)}return J};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(J,W){return null==J.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(J){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
-arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(J){for(var W=y.apply(this,arguments),Q=new mxDictionary,S=[],ha=0;ha<W.length;ha++){var la=this.graph.isTableCell(J)&&this.graph.isTableCell(W[ha])&&this.graph.isCellSelected(W[ha])?this.graph.model.getParent(W[ha]):this.graph.isTableRow(J)&&this.graph.isTableRow(W[ha])&&this.graph.isCellSelected(W[ha])?W[ha]:this.graph.getCompositeParent(W[ha]);null==la||Q.get(la)||(Q.put(la,!0),S.push(la))}return S};var F=this.graphHandler.start;
-this.graphHandler.start=function(J,W,Q,S){var ha=!1;this.graph.isTableCell(J)&&(this.graph.isCellSelected(J)?ha=!0:J=this.graph.model.getParent(J));ha||this.graph.isTableRow(J)&&this.graph.isCellSelected(J)||(J=this.graph.getCompositeParent(J));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(J,W){W=this.graph.getCompositeParent(W);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var C=new mxRubberband(this);this.getRubberband=function(){return C};
-var I=(new Date).getTime(),G=0,aa=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var J=this.currentState;aa.apply(this,arguments);J!=this.currentState?(I=(new Date).getTime(),G=0):G=(new Date).getTime()-I};var ca=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(J){return mxEvent.isShiftDown(J.getEvent())&&mxEvent.isAltDown(J.getEvent())?!1:null!=this.currentState&&J.getState()==this.currentState&&2E3<G||(null==this.currentState||
-"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&ca.apply(this,arguments)};var ba=this.isToggleEvent;this.isToggleEvent=function(J){return ba.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J)};var Z=C.isForceRubberbandEvent;C.isForceRubberbandEvent=function(J){return Z.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==J.getState()&&mxEvent.isTouchEvent(J.getEvent())};
-var qa=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(qa=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=qa)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(J){return mxEvent.isMouseEvent(J.getEvent())};var N=this.click;this.click=function(J){var W=null==J.state&&
-null!=J.sourceState&&this.isCellLocked(J.sourceState.cell);if(this.isEnabled()&&!W||J.isConsumed())return N.apply(this,arguments);var Q=W?J.sourceState.cell:J.getCell();null!=Q&&(Q=this.getClickableLinkForCell(Q),null!=Q&&(this.isCustomLink(Q)?this.customLinkClicked(Q):this.openLink(Q)));this.isEnabled()&&W&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(J){return J.sourceState};var Y=this.tooltipHandler.show;this.tooltipHandler.show=function(){Y.apply(this,arguments);if(null!=
-this.div)for(var J=this.div.getElementsByTagName("a"),W=0;W<J.length;W++)null!=J[W].getAttribute("href")&&null==J[W].getAttribute("target")&&J[W].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(J){return J.sourceState};this.getCursorForMouseEvent=function(J){var W=null==J.state&&null!=J.sourceState&&this.isCellLocked(J.sourceState.cell);return this.getCursorForCell(W?J.sourceState.cell:J.getCell())};var ea=this.getCursorForCell;this.getCursorForCell=function(J){if(!this.isEnabled()||
-this.isCellLocked(J)){if(null!=this.getClickableLinkForCell(J))return"pointer";if(this.isCellLocked(J))return"default"}return ea.apply(this,arguments)};this.selectRegion=function(J,W){var Q=mxEvent.isAltDown(W)?J:null;J=this.getCells(J.x,J.y,J.width,J.height,null,null,Q,function(S){return"1"==mxUtils.getValue(S.style,"locked","0")},!0);if(this.isToggleEvent(W))for(Q=0;Q<J.length;Q++)this.selectCellForEvent(J[Q],W);else this.selectCellsForEvent(J,W);return J};var ka=this.graphHandler.shouldRemoveCellsFromParent;
-this.graphHandler.shouldRemoveCellsFromParent=function(J,W,Q){return this.graph.isCellSelected(J)?!1:ka.apply(this,arguments)};this.isCellLocked=function(J){for(;null!=J;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(J),"locked","0"))return!0;J=this.model.getParent(J)}return!1};var ja=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(J,W){"mouseDown"==W.getProperty("eventName")&&(J=W.getProperty("event").getState(),ja=null==J||this.isSelectionEmpty()||this.isCellSelected(J.cell)?
-null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(J,W){if(!mxEvent.isMultiTouchEvent(W)){J=W.getProperty("event");var Q=W.getProperty("cell");null==Q?(J=mxUtils.convertPoint(this.container,mxEvent.getClientX(J),mxEvent.getClientY(J)),C.start(J.x,J.y)):null!=ja?this.addSelectionCells(ja):1<this.getSelectionCount()&&this.isCellSelected(Q)&&this.removeSelectionCell(Q);ja=null;W.consume()}}));this.connectionHandler.selectCells=function(J,W){this.graph.setSelectionCell(W||
-J)};this.connectionHandler.constraintHandler.isStateIgnored=function(J,W){var Q=J.view.graph;return W&&(Q.isCellSelected(J.cell)||Q.isTableRow(J.cell)&&Q.selectionCellsHandler.isHandled(Q.model.getParent(J.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var J=this.connectionHandler.constraintHandler;null!=J.currentFocus&&J.isStateIgnored(J.currentFocus,!0)&&(J.currentFocus=null,J.constraints=null,J.destroyIcons());J.destroyFocusHighlight()}));Graph.touchStyle&&
-this.initTouch();var V=this.updateMouseEvent;this.updateMouseEvent=function(J){J=V.apply(this,arguments);null!=J.state&&this.isCellLocked(J.getCell())&&(J.state=null);return J}}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">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
+Graph=function(b,e,k,n,D,t){mxGraph.call(this,b,e,k,n);this.themes=D||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=t?t:!1;b=this.baseUrl;e=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<e&&(e=b.indexOf("/",e+2),0<e&&(this.domainUrl=b.substring(0,e)),e=b.lastIndexOf("/"),0<e&&(this.domainPathUrl=b.substring(0,e+1)));this.isHtmlLabel=function(L){L=this.getCurrentCellStyle(L);
+return null!=L?"1"==L.html||"wrap"==L[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(L,ea){if("mouseDown"==ea.getProperty("eventName")&&this.isEnabled()){L=ea.getProperty("event");var O=L.getState();ea=this.view.scale;if(!mxEvent.isAltDown(L.getEvent())&&null!=O)if(this.model.isEdge(O.cell))if(E=new mxPoint(L.getGraphX(),L.getGraphY()),m=this.isCellSelected(O.cell),f=O,d=L,null!=O.text&&
+null!=O.text.boundingBox&&mxUtils.contains(O.text.boundingBox,L.getGraphX(),L.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var N=this.selectionCellsHandler.getHandler(O.cell);null!=N&&null!=N.bends&&0<N.bends.length&&(g=N.getHandleForEvent(L))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(L.getEvent())&&(N=this.selectionCellsHandler.getHandler(O.cell),null==N||null==N.getHandleForEvent(L))){var ba=new mxRectangle(L.getGraphX()-1,L.getGraphY()-1),la=mxEvent.isTouchEvent(L.getEvent())?
+mxShape.prototype.svgStrokeTolerance-1:(mxShape.prototype.svgStrokeTolerance+2)/2;N=la+2;ba.grow(la);if(this.isTableCell(O.cell)&&!this.isCellSelected(O.cell)&&!(mxUtils.contains(O,L.getGraphX()-N,L.getGraphY()-N)&&mxUtils.contains(O,L.getGraphX()-N,L.getGraphY()+N)&&mxUtils.contains(O,L.getGraphX()+N,L.getGraphY()+N)&&mxUtils.contains(O,L.getGraphX()+N,L.getGraphY()-N))){var u=this.model.getParent(O.cell);N=this.model.getParent(u);if(!this.isCellSelected(N)){la*=ea;var H=2*la;if(this.model.getChildAt(N,
+0)!=u&&mxUtils.intersects(ba,new mxRectangle(O.x,O.y-la,O.width,H))||this.model.getChildAt(u,0)!=O.cell&&mxUtils.intersects(ba,new mxRectangle(O.x-la,O.y,H,O.height))||mxUtils.intersects(ba,new mxRectangle(O.x,O.y+O.height-la,O.width,H))||mxUtils.intersects(ba,new mxRectangle(O.x+O.width-la,O.y,H,O.height)))u=this.selectionCellsHandler.isHandled(N),this.selectCellForEvent(N,L.getEvent()),N=this.selectionCellsHandler.getHandler(N),null!=N&&(la=N.getHandleForEvent(L),null!=la&&(N.start(L.getGraphX(),
+L.getGraphY(),la),N.blockDelayedSelection=!u,L.consume()))}}for(;!L.isConsumed()&&null!=O&&(this.isTableCell(O.cell)||this.isTableRow(O.cell)||this.isTable(O.cell));)this.isSwimlane(O.cell)&&(N=this.getActualStartSize(O.cell),(0<N.x||0<N.width)&&mxUtils.intersects(ba,new mxRectangle(O.x+(N.x-N.width-1)*ea+(0==N.x?O.width:0),O.y,1,O.height))||(0<N.y||0<N.height)&&mxUtils.intersects(ba,new mxRectangle(O.x,O.y+(N.y-N.height-1)*ea+(0==N.y?O.height:0),O.width,1)))&&(this.selectCellForEvent(O.cell,L.getEvent()),
+N=this.selectionCellsHandler.getHandler(O.cell),null!=N&&(la=mxEvent.CUSTOM_HANDLE-N.customHandles.length+1,N.start(L.getGraphX(),L.getGraphY(),la),L.consume())),O=this.view.getState(this.model.getParent(O.cell))}}}));this.addMouseListener({mouseDown:function(L,ea){},mouseMove:mxUtils.bind(this,function(L,ea){L=this.selectionCellsHandler.handlers.map;for(var O in L)if(null!=L[O].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(ea.getEvent())){var N=this.tolerance;
+if(null!=E&&null!=f&&null!=d){if(O=f,Math.abs(E.x-ea.getGraphX())>N||Math.abs(E.y-ea.getGraphY())>N){var ba=this.selectionCellsHandler.getHandler(O.cell);null==ba&&this.model.isEdge(O.cell)&&(ba=this.createHandler(O));if(null!=ba&&null!=ba.bends&&0<ba.bends.length){L=ba.getHandleForEvent(d);var la=this.view.getEdgeStyle(O);N=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(L=g);if(N&&0!=L&&L!=ba.bends.length-1&&L!=mxEvent.LABEL_HANDLE)!N||null==O.visibleSourceState&&null==O.visibleTargetState||
+(this.graphHandler.reset(),ea.consume());else if(L==mxEvent.LABEL_HANDLE||0==L||null!=O.visibleSourceState||L==ba.bends.length-1||null!=O.visibleTargetState)N||L==mxEvent.LABEL_HANDLE||(N=O.absolutePoints,null!=N&&(null==la&&null==L||la==mxEdgeStyle.OrthConnector)&&(L=g,null==L&&(L=new mxRectangle(E.x,E.y),L.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(L,N[0].x,N[0].y)?L=0:mxUtils.contains(L,N[N.length-1].x,N[N.length-1].y)?L=ba.bends.length-1:null!=la&&(2==N.length||3==N.length&&
+(0==Math.round(N[0].x-N[1].x)&&0==Math.round(N[1].x-N[2].x)||0==Math.round(N[0].y-N[1].y)&&0==Math.round(N[1].y-N[2].y)))?L=2:(L=mxUtils.findNearestSegment(O,E.x,E.y),L=null==la?mxEvent.VIRTUAL_HANDLE-L:L+1))),null==L&&(L=mxEvent.VIRTUAL_HANDLE)),ba.start(ea.getGraphX(),ea.getGraphX(),L),ea.consume(),this.graphHandler.reset()}null!=ba&&(this.selectionCellsHandler.isHandlerActive(ba)?this.isCellSelected(O.cell)||(this.selectionCellsHandler.handlers.put(O.cell,ba),this.selectCellForEvent(O.cell,ea.getEvent())):
+this.isCellSelected(O.cell)||ba.destroy());m=!1;E=d=f=g=null}}else if(O=ea.getState(),null!=O&&this.isCellEditable(O.cell)){ba=null;if(this.model.isEdge(O.cell)){if(L=new mxRectangle(ea.getGraphX(),ea.getGraphY()),L.grow(mxEdgeHandler.prototype.handleImage.width/2),N=O.absolutePoints,null!=N)if(null!=O.text&&null!=O.text.boundingBox&&mxUtils.contains(O.text.boundingBox,ea.getGraphX(),ea.getGraphY()))ba="move";else if(mxUtils.contains(L,N[0].x,N[0].y)||mxUtils.contains(L,N[N.length-1].x,N[N.length-
+1].y))ba="pointer";else if(null!=O.visibleSourceState||null!=O.visibleTargetState)L=this.view.getEdgeStyle(O),ba="crosshair",L!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(O)&&(ea=mxUtils.findNearestSegment(O,ea.getGraphX(),ea.getGraphY()),ea<N.length-1&&0<=ea&&(ba=0==Math.round(N[ea].x-N[ea+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(ea.getEvent())){N=mxShape.prototype.svgStrokeTolerance/2;L=new mxRectangle(ea.getGraphX(),ea.getGraphY());L.grow(N);if(this.isTableCell(O.cell)&&
+(ea=this.model.getParent(O.cell),N=this.model.getParent(ea),!this.isCellSelected(N)))if(mxUtils.intersects(L,new mxRectangle(O.x,O.y-2,O.width,4))&&this.model.getChildAt(N,0)!=ea||mxUtils.intersects(L,new mxRectangle(O.x,O.y+O.height-2,O.width,4)))ba="row-resize";else if(mxUtils.intersects(L,new mxRectangle(O.x-2,O.y,4,O.height))&&this.model.getChildAt(ea,0)!=O.cell||mxUtils.intersects(L,new mxRectangle(O.x+O.width-2,O.y,4,O.height)))ba="col-resize";for(ea=O;null==ba&&null!=ea&&(this.isTableCell(ea.cell)||
+this.isTableRow(ea.cell)||this.isTable(ea.cell));)this.isSwimlane(ea.cell)&&(N=this.getActualStartSize(ea.cell),la=this.view.scale,(0<N.x||0<N.width)&&mxUtils.intersects(L,new mxRectangle(ea.x+(N.x-N.width-1)*la+(0==N.x?ea.width*la:0),ea.y,1,ea.height))?ba="col-resize":(0<N.y||0<N.height)&&mxUtils.intersects(L,new mxRectangle(ea.x,ea.y+(N.y-N.height-1)*la+(0==N.y?ea.height:0),ea.width,1))&&(ba="row-resize")),ea=this.view.getState(this.model.getParent(ea.cell))}null!=ba&&O.setCursor(ba)}}}),mouseUp:mxUtils.bind(this,
+function(L,ea){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(L){var ea=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);L.view.graph.isHtmlLabel(L.cell)&&(ea=1!=L.style.html?mxUtils.htmlEntities(ea,!1):L.view.graph.sanitizeHtml(ea));return ea};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(L,ea){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var L=q.apply(this,arguments);if(this.graph.pageVisible){var ea=[],O=this.graph.pageFormat,
+N=this.graph.pageScale,ba=O.width*N;O=O.height*N;N=this.graph.view.translate;for(var la=this.graph.view.scale,u=this.graph.getPageLayout(),H=0;H<u.width;H++)ea.push(new mxRectangle(((u.x+H)*ba+N.x)*la,(u.y*O+N.y)*la,ba*la,O*la));for(H=1;H<u.height;H++)ea.push(new mxRectangle((u.x*ba+N.x)*la,((u.y+H)*O+N.y)*la,ba*la,O*la));L=ea.concat(L)}return L};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(L,ea){return null==L.cell?"#ffa500":mxConstants.GUIDE_COLOR};
+this.graphHandler.createPreviewShape=function(L){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(L){for(var ea=y.apply(this,arguments),O=new mxDictionary,N=[],ba=0;ba<ea.length;ba++){var la=this.graph.isTableCell(L)&&this.graph.isTableCell(ea[ba])&&this.graph.isCellSelected(ea[ba])?this.graph.model.getParent(ea[ba]):
+this.graph.isTableRow(L)&&this.graph.isTableRow(ea[ba])&&this.graph.isCellSelected(ea[ba])?ea[ba]:this.graph.getCompositeParent(ea[ba]);null==la||O.get(la)||(O.put(la,!0),N.push(la))}return N};var F=this.graphHandler.start;this.graphHandler.start=function(L,ea,O,N){var ba=!1;this.graph.isTableCell(L)&&(this.graph.isCellSelected(L)?ba=!0:L=this.graph.model.getParent(L));ba||this.graph.isTableRow(L)&&this.graph.isCellSelected(L)||(L=this.graph.getCompositeParent(L));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=
+function(L,ea){ea=this.graph.getCompositeParent(ea);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var C=new mxRubberband(this);this.getRubberband=function(){return C};var I=(new Date).getTime(),G=0,Z=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var L=this.currentState;Z.apply(this,arguments);L!=this.currentState?(I=(new Date).getTime(),G=0):G=(new Date).getTime()-I};var ca=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=
+function(L){return mxEvent.isShiftDown(L.getEvent())&&mxEvent.isAltDown(L.getEvent())?!1:null!=this.currentState&&L.getState()==this.currentState&&2E3<G||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&ca.apply(this,arguments)};var aa=this.isToggleEvent;this.isToggleEvent=function(L){return aa.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(L)};var Y=C.isForceRubberbandEvent;C.isForceRubberbandEvent=function(L){return Y.apply(this,
+arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(L.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==L.getState()&&mxEvent.isTouchEvent(L.getEvent())};var qa=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(qa=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=
+qa)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(L){return mxEvent.isMouseEvent(L.getEvent())};var Q=this.click;this.click=function(L){var ea=null==L.state&&null!=L.sourceState&&this.isCellLocked(L.sourceState.cell);if(this.isEnabled()&&!ea||L.isConsumed())return Q.apply(this,arguments);var O=ea?L.sourceState.cell:L.getCell();null!=O&&(O=this.getClickableLinkForCell(O),null!=O&&(this.isCustomLink(O)?this.customLinkClicked(O):this.openLink(O)));this.isEnabled()&&
+ea&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(L){return L.sourceState};var X=this.tooltipHandler.show;this.tooltipHandler.show=function(){X.apply(this,arguments);if(null!=this.div)for(var L=this.div.getElementsByTagName("a"),ea=0;ea<L.length;ea++)null!=L[ea].getAttribute("href")&&null==L[ea].getAttribute("target")&&L[ea].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(L){return L.sourceState};this.getCursorForMouseEvent=function(L){var ea=
+null==L.state&&null!=L.sourceState&&this.isCellLocked(L.sourceState.cell);return this.getCursorForCell(ea?L.sourceState.cell:L.getCell())};var fa=this.getCursorForCell;this.getCursorForCell=function(L){if(!this.isEnabled()||this.isCellLocked(L)){if(null!=this.getClickableLinkForCell(L))return"pointer";if(this.isCellLocked(L))return"default"}return fa.apply(this,arguments)};this.selectRegion=function(L,ea){var O=mxEvent.isAltDown(ea)?L:null;L=this.getCells(L.x,L.y,L.width,L.height,null,null,O,function(N){return"1"==
+mxUtils.getValue(N.style,"locked","0")},!0);if(this.isToggleEvent(ea))for(O=0;O<L.length;O++)this.selectCellForEvent(L[O],ea);else this.selectCellsForEvent(L,ea);return L};var ka=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(L,ea,O){return this.graph.isCellSelected(L)?!1:ka.apply(this,arguments)};this.isCellLocked=function(L){for(;null!=L;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(L),"locked","0"))return!0;L=this.model.getParent(L)}return!1};
+var ia=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(L,ea){"mouseDown"==ea.getProperty("eventName")&&(L=ea.getProperty("event").getState(),ia=null==L||this.isSelectionEmpty()||this.isCellSelected(L.cell)?null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(L,ea){if(!mxEvent.isMultiTouchEvent(ea)){L=ea.getProperty("event");var O=ea.getProperty("cell");null==O?(L=mxUtils.convertPoint(this.container,mxEvent.getClientX(L),mxEvent.getClientY(L)),
+C.start(L.x,L.y)):null!=ia?this.addSelectionCells(ia):1<this.getSelectionCount()&&this.isCellSelected(O)&&this.removeSelectionCell(O);ia=null;ea.consume()}}));this.connectionHandler.selectCells=function(L,ea){this.graph.setSelectionCell(ea||L)};this.connectionHandler.constraintHandler.isStateIgnored=function(L,ea){var O=L.view.graph;return ea&&(O.isCellSelected(L.cell)||O.isTableRow(L.cell)&&O.selectionCellsHandler.isHandled(O.model.getParent(L.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,
+mxUtils.bind(this,function(){var L=this.connectionHandler.constraintHandler;null!=L.currentFocus&&L.isStateIgnored(L.currentFocus,!0)&&(L.currentFocus=null,L.constraints=null,L.destroyIcons());L.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var V=this.updateMouseEvent;this.updateMouseEvent=function(L){L=V.apply(this,arguments);null!=L.state&&this.isCellLocked(L.getCell())&&(L.state=null);return L}}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">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";
+Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
Graph.createOffscreenGraph=function(b){var e=new Graph(document.createElement("div"));e.stylesheet.styles=mxUtils.clone(b.styles);e.resetViewOnRootChange=!1;e.setConnectable(!1);e.gridEnabled=!1;e.autoScroll=!1;e.setTooltips(!1);e.setEnabled(!1);e.container.style.visibility="hidden";e.container.style.position="absolute";e.container.style.overflow="hidden";e.container.style.height="1px";e.container.style.width="1px";return e};
Graph.createSvgImage=function(b,e,k,n,D){k=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+b+'px" height="'+e+'px" '+(null!=n&&null!=D?'viewBox="0 0 '+n+" "+D+'" ':"")+'version="1.1">'+k+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(k):Base64.encode(k,!0)),b,e)};
@@ -2358,10 +2359,10 @@ Graph.prototype.getLabel=function(b){var e=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(b){this.gridSize=b;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(b){this.defaultParent=b;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(b){do{var e=this.getLinkForCell(b);if(null!=e)return e;b=this.model.getParent(b)}while(null!=b);return null};
Graph.prototype.getGlobalVariable=function(b){var e=null;"date"==b?e=(new Date).toLocaleDateString():"time"==b?e=(new Date).toLocaleTimeString():"timestamp"==b?e=(new Date).toLocaleString():"date{"==b.substring(0,5)&&(b=b.substring(5,b.length-1),e=this.formatDate(new Date,b));return e};
Graph.prototype.formatDate=function(b,e,k){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 n=this.dateFormatCache,D=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,t=/[^-+\dA-Z]/g,E=function(aa,ca){aa=String(aa);for(ca=ca||2;aa.length<ca;)aa="0"+aa;return aa};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
+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 n=this.dateFormatCache,D=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,t=/[^-+\dA-Z]/g,E=function(Z,ca){Z=String(Z);for(ca=ca||2;Z.length<ca;)Z="0"+Z;return Z};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
/\d/.test(b)||(e=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");e=String(n.masks[e]||e||n.masks["default"]);"UTC:"==e.slice(0,4)&&(e=e.slice(4),k=!0);var d=k?"getUTC":"get",f=b[d+"Date"](),g=b[d+"Day"](),m=b[d+"Month"](),q=b[d+"FullYear"](),y=b[d+"Hours"](),F=b[d+"Minutes"](),C=b[d+"Seconds"]();d=b[d+"Milliseconds"]();var I=k?0:b.getTimezoneOffset(),G={d:f,dd:E(f),ddd:n.i18n.dayNames[g],dddd:n.i18n.dayNames[g+7],m:m+1,mm:E(m+1),mmm:n.i18n.monthNames[m],mmmm:n.i18n.monthNames[m+
-12],yy:String(q).slice(2),yyyy:q,h:y%12||12,hh:E(y%12||12),H:y,HH:E(y),M:F,MM:E(F),s:C,ss:E(C),l:E(d,3),L:E(99<d?Math.round(d/10):d),t:12>y?"a":"p",tt:12>y?"am":"pm",T:12>y?"A":"P",TT:12>y?"AM":"PM",Z:k?"UTC":(String(b).match(D)||[""]).pop().replace(t,""),o:(0<I?"-":"+")+E(100*Math.floor(Math.abs(I)/60)+Math.abs(I)%60,4),S:["th","st","nd","rd"][3<f%10?0:(10!=f%100-f%10)*f%10]};return e.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(aa){return aa in G?G[aa]:aa.slice(1,
-aa.length-1)})};Graph.prototype.getLayerForCells=function(b){var e=null;if(0<b.length){for(e=b[0];!this.model.isLayer(e);)e=this.model.getParent(e);for(var k=1;k<b.length;k++)if(!this.model.isAncestor(e,b[k])){e=null;break}}return e};
+12],yy:String(q).slice(2),yyyy:q,h:y%12||12,hh:E(y%12||12),H:y,HH:E(y),M:F,MM:E(F),s:C,ss:E(C),l:E(d,3),L:E(99<d?Math.round(d/10):d),t:12>y?"a":"p",tt:12>y?"am":"pm",T:12>y?"A":"P",TT:12>y?"AM":"PM",Z:k?"UTC":(String(b).match(D)||[""]).pop().replace(t,""),o:(0<I?"-":"+")+E(100*Math.floor(Math.abs(I)/60)+Math.abs(I)%60,4),S:["th","st","nd","rd"][3<f%10?0:(10!=f%100-f%10)*f%10]};return e.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(Z){return Z in G?G[Z]:Z.slice(1,
+Z.length-1)})};Graph.prototype.getLayerForCells=function(b){var e=null;if(0<b.length){for(e=b[0];!this.model.isLayer(e);)e=this.model.getParent(e);for(var k=1;k<b.length;k++)if(!this.model.isAncestor(e,b[k])){e=null;break}}return e};
Graph.prototype.createLayersDialog=function(b,e){var k=document.createElement("div");k.style.position="absolute";for(var n=this.getModel(),D=n.getChildCount(n.root),t=0;t<D;t++)mxUtils.bind(this,function(E){function d(){n.isVisible(E)?(m.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(m.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var f=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(n.isVisible(E)?"hideIt":"show",[f]));var m=document.createElement("img");m.setAttribute("draggable","false");m.setAttribute("align","absmiddle");m.setAttribute("border","0");m.style.position="relative";m.style.width="16px";m.style.padding="0px 6px 0 4px";e&&(m.style.filter="invert(100%)",m.style.top="-2px");g.appendChild(m);mxUtils.write(g,f);k.appendChild(g);
mxEvent.addListener(g,"click",function(){n.setVisible(E,!n.isVisible(E));d();null!=b&&b(E)});d()})(n.getChildAt(n.root,t));return k};
@@ -2375,11 +2376,11 @@ D)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnect
Graph.prototype.isCloneConnectSource=function(b){var e=null;null!=this.layoutManager&&(e=this.layoutManager.getLayout(this.model.getParent(b)));return this.isTableRow(b)||this.isTableCell(b)||null!=e&&e.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(b,e,k,n,D,t,E,d){t=t?t:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),g=f?b:this.getCompositeParent(b),m=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);e==mxConstants.DIRECTION_NORTH?(m.x+=g.geometry.width/2,m.y-=k):e==
mxConstants.DIRECTION_SOUTH?(m.x+=g.geometry.width/2,m.y+=g.geometry.height+k):(m.x=e==mxConstants.DIRECTION_WEST?m.x-k:m.x+(g.geometry.width+k),m.y+=g.geometry.height/2);var q=this.view.getState(this.model.getParent(b));k=this.view.scale;var y=this.view.translate;g=y.x*k;y=y.y*k;null!=q&&this.model.isVertex(q.cell)&&(g=q.x,y=q.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(m.x+=b.parent.geometry.x,m.y+=b.parent.geometry.y);t=t?null:(new mxRectangle(g+m.x*k,y+m.y*k)).grow(40*k);t=null!=t?
-this.getCells(0,0,0,0,null,null,t,null,!0):null;q=this.view.getState(b);var F=null,C=null;if(null!=t){t=t.reverse();for(var I=0;I<t.length;I++)if(!this.isCellLocked(t[I])&&!this.model.isEdge(t[I])&&t[I]!=b)if(!this.model.isAncestor(b,t[I])&&this.isContainer(t[I])&&(null==F||t[I]==this.model.getParent(b)))F=t[I];else if(null==C&&this.isCellConnectable(t[I])&&!this.model.isAncestor(t[I],b)&&!this.isSwimlane(t[I])){var G=this.view.getState(t[I]);null==q||null==G||mxUtils.intersects(q,G)||(C=t[I])}}var aa=
-!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;aa&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?m.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=b.geometry.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-b.geometry.width/2:m.x+b.geometry.width/2);var ca=[],ba=C;C=F;D=mxUtils.bind(this,function(Z){if(null==E||null!=Z||null==C&&f){this.model.beginUpdate();try{if(null==ba&&aa){var qa=this.getAbsoluteParent(null!=Z?Z:b);qa=f?b:this.getCompositeParent(qa);ba=null!=Z?Z:this.duplicateCells([qa],
-!1)[0];null!=Z&&this.addCells([ba],this.model.getParent(b),null,null,null,!0);var N=this.getCellGeometry(ba);null!=N&&(null!=Z&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?m.y-=N.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=N.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-N.width/2:m.x+N.width/2),N.x=m.x-N.width/2,N.y=m.y-N.height/2);null!=F?(this.addCells([ba],F,null,null,null,!0),C=null):aa&&!f&&this.addCells([ba],this.getDefaultParent(),null,null,null,!0)}var Y=mxEvent.isControlDown(n)&&
-mxEvent.isShiftDown(n)&&aa||null==C&&f?null:this.insertEdge(this.model.getParent(b),null,"",b,ba,this.createCurrentEdgeStyle());if(null!=Y&&this.connectionHandler.insertBeforeSource){var ea=null;for(Z=b;null!=Z.parent&&null!=Z.geometry&&Z.geometry.relative&&Z.parent!=Y.parent;)Z=this.model.getParent(Z);null!=Z&&null!=Z.parent&&Z.parent==Y.parent&&(ea=Z.parent.getIndex(Z),this.model.add(Z.parent,Y,ea))}null==C&&null!=ba&&null!=b.parent&&f&&e==mxConstants.DIRECTION_WEST&&(ea=b.parent.getIndex(b),this.model.add(b.parent,
-ba,ea));null!=Y&&ca.push(Y);null==C&&null!=ba&&ca.push(ba);null==ba&&null!=Y&&Y.geometry.setTerminalPoint(m,!1);null!=Y&&this.fireEvent(new mxEventObject("cellsInserted","cells",[Y]))}finally{this.model.endUpdate()}}if(null!=d)d(ca);else return ca});if(null==E||null!=ba||!aa||null==C&&f)return D(ba);E(g+m.x*k,y+m.y*k,D)};
+this.getCells(0,0,0,0,null,null,t,null,!0):null;q=this.view.getState(b);var F=null,C=null;if(null!=t){t=t.reverse();for(var I=0;I<t.length;I++)if(!this.isCellLocked(t[I])&&!this.model.isEdge(t[I])&&t[I]!=b)if(!this.model.isAncestor(b,t[I])&&this.isContainer(t[I])&&(null==F||t[I]==this.model.getParent(b)))F=t[I];else if(null==C&&this.isCellConnectable(t[I])&&!this.model.isAncestor(t[I],b)&&!this.isSwimlane(t[I])){var G=this.view.getState(t[I]);null==q||null==G||mxUtils.intersects(q,G)||(C=t[I])}}var Z=
+!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;Z&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?m.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=b.geometry.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-b.geometry.width/2:m.x+b.geometry.width/2);var ca=[],aa=C;C=F;D=mxUtils.bind(this,function(Y){if(null==E||null!=Y||null==C&&f){this.model.beginUpdate();try{if(null==aa&&Z){var qa=this.getAbsoluteParent(null!=Y?Y:b);qa=f?b:this.getCompositeParent(qa);aa=null!=Y?Y:this.duplicateCells([qa],
+!1)[0];null!=Y&&this.addCells([aa],this.model.getParent(b),null,null,null,!0);var Q=this.getCellGeometry(aa);null!=Q&&(null!=Y&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?m.y-=Q.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=Q.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-Q.width/2:m.x+Q.width/2),Q.x=m.x-Q.width/2,Q.y=m.y-Q.height/2);null!=F?(this.addCells([aa],F,null,null,null,!0),C=null):Z&&!f&&this.addCells([aa],this.getDefaultParent(),null,null,null,!0)}var X=mxEvent.isControlDown(n)&&
+mxEvent.isShiftDown(n)&&Z||null==C&&f?null:this.insertEdge(this.model.getParent(b),null,"",b,aa,this.createCurrentEdgeStyle());if(null!=X&&this.connectionHandler.insertBeforeSource){var fa=null;for(Y=b;null!=Y.parent&&null!=Y.geometry&&Y.geometry.relative&&Y.parent!=X.parent;)Y=this.model.getParent(Y);null!=Y&&null!=Y.parent&&Y.parent==X.parent&&(fa=Y.parent.getIndex(Y),this.model.add(Y.parent,X,fa))}null==C&&null!=aa&&null!=b.parent&&f&&e==mxConstants.DIRECTION_WEST&&(fa=b.parent.getIndex(b),this.model.add(b.parent,
+aa,fa));null!=X&&ca.push(X);null==C&&null!=aa&&ca.push(aa);null==aa&&null!=X&&X.geometry.setTerminalPoint(m,!1);null!=X&&this.fireEvent(new mxEventObject("cellsInserted","cells",[X]))}finally{this.model.endUpdate()}}if(null!=d)d(ca);else return ca});if(null==E||null!=aa||!Z||null==C&&f)return D(aa);E(g+m.x*k,y+m.y*k,D)};
Graph.prototype.getIndexableText=function(b){b=null!=b?b:this.model.getDescendants(this.model.root);for(var e=document.createElement("div"),k=[],n,D=0;D<b.length;D++)if(n=b[D],this.model.isVertex(n)||this.model.isEdge(n))this.isHtmlLabel(n)?(e.innerHTML=this.sanitizeHtml(this.getLabel(n)),n=mxUtils.extractTextWithWhitespace([e])):n=this.getLabel(n),n=mxUtils.trim(n.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<n.length&&k.push(n);return k.join(" ")};
Graph.prototype.convertValueToString=function(b){var e=this.model.getValue(b);if(null!=e&&"object"==typeof e){var k=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder")){e=b.getAttribute("placeholder");for(var n=b;null==k&&null!=n;)null!=n.value&&"object"==typeof n.value&&(k=n.hasAttribute(e)?null!=n.getAttribute(e)?n.getAttribute(e):"":null),n=this.model.getParent(n)}else k=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=e.getAttribute("label_"+Graph.diagramLanguage)),
null==k&&(k=e.getAttribute("label")||"");return k||""}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};
@@ -2457,22 +2458,22 @@ TableLayout.prototype.layoutRow=function(b,e,k,n){var D=this.graph.getModel(),t=
0,g.width,g.height),D.setGeometry(t[f],g))}return d};
TableLayout.prototype.execute=function(b){if(null!=b){var e=this.graph.getActualStartSize(b,!0),k=this.graph.getCellGeometry(b),n=this.graph.getCellStyle(b),D="1"==mxUtils.getValue(n,"resizeLastRow","0"),t="1"==mxUtils.getValue(n,"resizeLast","0");n="1"==mxUtils.getValue(n,"fixedRows","0");var E=this.graph.getModel(),d=0;E.beginUpdate();try{for(var f=k.height-e.y-e.height,g=k.width-e.x-e.width,m=E.getChildCells(b,!0),q=0;q<m.length;q++)E.setVisible(m[q],!0);var y=this.getSize(m,!1);if(0<f&&0<g&&0<
m.length&&0<y){if(D){var F=this.graph.getCellGeometry(m[m.length-1]);null!=F&&(F=F.clone(),F.height=f-y+F.height,E.setGeometry(m[m.length-1],F))}var C=t?null:this.getRowLayout(m[0],g),I=[],G=e.y;for(q=0;q<m.length;q++)F=this.graph.getCellGeometry(m[q]),null!=F&&(F=F.clone(),F.x=e.x,F.width=g,F.y=Math.round(G),G=D||n?G+F.height:G+F.height/y*f,F.height=Math.round(G)-F.y,E.setGeometry(m[q],F)),d=Math.max(d,this.layoutRow(m[q],C,F.height,g,I));n&&f<y&&(k=k.clone(),k.height=G+e.height,E.setGeometry(b,
-k));t&&g<d+Graph.minTableColumnWidth&&(k=k.clone(),k.width=d+e.width+e.x+Graph.minTableColumnWidth,E.setGeometry(b,k));this.graph.visitTableCells(b,mxUtils.bind(this,function(aa){E.setVisible(aa.cell,aa.actual.cell==aa.cell);if(aa.actual.cell!=aa.cell){if(aa.actual.row==aa.row){var ca=null!=aa.geo.alternateBounds?aa.geo.alternateBounds:aa.geo;aa.actual.geo.width+=ca.width}aa.actual.col==aa.col&&(ca=null!=aa.geo.alternateBounds?aa.geo.alternateBounds:aa.geo,aa.actual.geo.height+=ca.height)}}))}else for(q=
-0;q<m.length;q++)E.setVisible(m[q],!1)}finally{E.endUpdate()}}};
+k));t&&g<d+Graph.minTableColumnWidth&&(k=k.clone(),k.width=d+e.width+e.x+Graph.minTableColumnWidth,E.setGeometry(b,k));this.graph.visitTableCells(b,mxUtils.bind(this,function(Z){E.setVisible(Z.cell,Z.actual.cell==Z.cell);if(Z.actual.cell!=Z.cell){if(Z.actual.row==Z.row){var ca=null!=Z.geo.alternateBounds?Z.geo.alternateBounds:Z.geo;Z.actual.geo.width+=ca.width}Z.actual.col==Z.col&&(ca=null!=Z.geo.alternateBounds?Z.geo.alternateBounds:Z.geo,Z.actual.geo.height+=ca.height)}}))}else for(q=0;q<m.length;q++)E.setVisible(m[q],
+!1)}finally{E.endUpdate()}}};
(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var e=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(m,q){q=null!=q?q:!0;var y=this.getState(m);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&!y.invalid&&this.updateLineJumps(y)&&this.graph.cellRenderer.redraw(y,!1,this.isRendering());y=e.apply(this,
arguments);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(y);return y};var k=mxShape.prototype.paint;mxShape.prototype.paint=function(){k.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 m=this.node.getElementsByTagName("path");if(1<m.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&m[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var q=this.state.view.graph.getFlowAnimationStyle();null!=q&&m[1].setAttribute("class",q.getAttribute("id"))}}};var n=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(m,q){return n.apply(this,arguments)||null!=m.routedPoints&&null!=q.routedPoints&&!mxUtils.equalPoints(q.routedPoints,m.routedPoints)};var D=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
-function(m){D.apply(this,arguments);this.graph.model.isEdge(m.cell)&&1!=m.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(m)};mxGraphView.prototype.updateLineJumps=function(m){var q=m.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=m.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(m.style,"jumpStyle","none")){var C=function(ja,V,J){var W=new mxPoint(V,J);W.type=ja;F.push(W);W=null!=m.routedPoints?m.routedPoints[F.length-1]:null;return null==W||W.type!=
-ja||W.x!=V||W.y!=J},I=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var aa=q[G+1],ca=q[G],ba=[],Z=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(ca.x,ca.y,Z.x,Z.y,aa.x,aa.y)<1*this.scale*this.scale;)aa=Z,G++,Z=q[G+2];y=C(0,ca.x,ca.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var N=this.validEdges[qa],Y=N.absolutePoints;if(null!=Y&&mxUtils.intersects(m,N)&&"1"!=N.style.noJump)for(N=0;N<Y.length-1;N++){var ea=Y[N+1],ka=Y[N];for(Z=Y[N+2];N<Y.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Z.x,Z.y,
-ea.x,ea.y)<1*this.scale*this.scale;)ea=Z,N++,Z=Y[N+2];Z=mxUtils.intersection(ca.x,ca.y,aa.x,aa.y,ka.x,ka.y,ea.x,ea.y);if(null!=Z&&(Math.abs(Z.x-ca.x)>I||Math.abs(Z.y-ca.y)>I)&&(Math.abs(Z.x-aa.x)>I||Math.abs(Z.y-aa.y)>I)&&(Math.abs(Z.x-ka.x)>I||Math.abs(Z.y-ka.y)>I)&&(Math.abs(Z.x-ea.x)>I||Math.abs(Z.y-ea.y)>I)){ea=Z.x-ca.x;ka=Z.y-ca.y;Z={distSq:ea*ea+ka*ka,x:Z.x,y:Z.y};for(ea=0;ea<ba.length;ea++)if(ba[ea].distSq>Z.distSq){ba.splice(ea,0,Z);Z=null;break}null==Z||0!=ba.length&&ba[ba.length-1].x===
-Z.x&&ba[ba.length-1].y===Z.y||ba.push(Z)}}}for(N=0;N<ba.length;N++)y=C(1,ba[N].x,ba[N].y)||y}Z=q[q.length-1];y=C(0,Z.x,Z.y)||y}m.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(m,q,y){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)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
-mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,I=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,aa=null,ca=null,ba=[],Z=null;m.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var N=this.state.routedPoints[qa],Y=new mxPoint(N.x/this.scale,N.y/this.scale);0==qa?Y=q[0]:qa==this.state.routedPoints.length-1&&(Y=q[q.length-1]);var ea=!1;if(null!=aa&&1==N.type){var ka=this.state.routedPoints[qa+1];N=ka.x/this.scale-
-Y.x;ka=ka.y/this.scale-Y.y;N=N*N+ka*ka;null==Z&&(Z=new mxPoint(Y.x-aa.x,Y.y-aa.y),ca=Math.sqrt(Z.x*Z.x+Z.y*Z.y),0<ca?(Z.x=Z.x*C/ca,Z.y=Z.y*C/ca):Z=null);N>C*C&&0<ca&&(N=aa.x-Y.x,ka=aa.y-Y.y,N=N*N+ka*ka,N>C*C&&(ea=new mxPoint(Y.x-Z.x,Y.y-Z.y),N=new mxPoint(Y.x+Z.x,Y.y+Z.y),ba.push(ea),this.addPoints(m,ba,y,F,!1,null,G),ba=0>Math.round(Z.x)||0==Math.round(Z.x)&&0>=Math.round(Z.y)?1:-1,G=!1,"sharp"==I?(m.lineTo(ea.x-Z.y*ba,ea.y+Z.x*ba),m.lineTo(N.x-Z.y*ba,N.y+Z.x*ba),m.lineTo(N.x,N.y)):"line"==I?(m.moveTo(ea.x+
-Z.y*ba,ea.y-Z.x*ba),m.lineTo(ea.x-Z.y*ba,ea.y+Z.x*ba),m.moveTo(N.x-Z.y*ba,N.y+Z.x*ba),m.lineTo(N.x+Z.y*ba,N.y-Z.x*ba),m.moveTo(N.x,N.y)):"arc"==I?(ba*=1.3,m.curveTo(ea.x-Z.y*ba,ea.y+Z.x*ba,N.x-Z.y*ba,N.y+Z.x*ba,N.x,N.y)):(m.moveTo(N.x,N.y),G=!0),ba=[N],ea=!0))}else Z=null;ea||(ba.push(Y),aa=Y)}this.addPoints(m,ba,y,F,!1,null,G);m.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(m,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
-new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(m,q,y,F){if(null==q||null==m||"1"!=q.style.snapToPoint&&"1"!=m.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(m,q,F);var C=this.getNextPoint(m,y,F),I=this.graph.isOrthogonal(m),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),aa=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
-G){var ca=Math.cos(-G),ba=Math.sin(-G);C=mxUtils.getRotatedPoint(C,ca,ba,aa)}ca=parseFloat(m.style[mxConstants.STYLE_PERIMETER_SPACING]||0);ca+=parseFloat(m.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&I,ca);0!=G&&(ca=Math.cos(G),ba=Math.sin(G),C=mxUtils.getRotatedPoint(C,ca,ba,aa));m.setAbsoluteTerminalPoint(this.snapToAnchorPoint(m,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(m,q,y,F,C){if(null!=
-q&&null!=m){m=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=m)for(var I=0;I<m.length;I++){var G=this.graph.getConnectionPoint(q,m[I]);if(null!=G){var aa=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||aa<F)y=G,F=aa}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(m,q,y){var F=f.apply(this,arguments);"1"==m.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,
-F));return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(m){if(null!=m.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(m.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
+function(m){D.apply(this,arguments);this.graph.model.isEdge(m.cell)&&1!=m.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(m)};mxGraphView.prototype.updateLineJumps=function(m){var q=m.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=m.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(m.style,"jumpStyle","none")){var C=function(ia,V,L){var ea=new mxPoint(V,L);ea.type=ia;F.push(ea);ea=null!=m.routedPoints?m.routedPoints[F.length-1]:null;return null==ea||ea.type!=
+ia||ea.x!=V||ea.y!=L},I=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var Z=q[G+1],ca=q[G],aa=[],Y=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(ca.x,ca.y,Y.x,Y.y,Z.x,Z.y)<1*this.scale*this.scale;)Z=Y,G++,Y=q[G+2];y=C(0,ca.x,ca.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var Q=this.validEdges[qa],X=Q.absolutePoints;if(null!=X&&mxUtils.intersects(m,Q)&&"1"!=Q.style.noJump)for(Q=0;Q<X.length-1;Q++){var fa=X[Q+1],ka=X[Q];for(Y=X[Q+2];Q<X.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Y.x,Y.y,
+fa.x,fa.y)<1*this.scale*this.scale;)fa=Y,Q++,Y=X[Q+2];Y=mxUtils.intersection(ca.x,ca.y,Z.x,Z.y,ka.x,ka.y,fa.x,fa.y);if(null!=Y&&(Math.abs(Y.x-ca.x)>I||Math.abs(Y.y-ca.y)>I)&&(Math.abs(Y.x-Z.x)>I||Math.abs(Y.y-Z.y)>I)&&(Math.abs(Y.x-ka.x)>I||Math.abs(Y.y-ka.y)>I)&&(Math.abs(Y.x-fa.x)>I||Math.abs(Y.y-fa.y)>I)){fa=Y.x-ca.x;ka=Y.y-ca.y;Y={distSq:fa*fa+ka*ka,x:Y.x,y:Y.y};for(fa=0;fa<aa.length;fa++)if(aa[fa].distSq>Y.distSq){aa.splice(fa,0,Y);Y=null;break}null==Y||0!=aa.length&&aa[aa.length-1].x===Y.x&&
+aa[aa.length-1].y===Y.y||aa.push(Y)}}}for(Q=0;Q<aa.length;Q++)y=C(1,aa[Q].x,aa[Q].y)||y}Y=q[q.length-1];y=C(0,Y.x,Y.y)||y}m.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(m,q,y){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)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
+mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,I=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,Z=null,ca=null,aa=[],Y=null;m.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var Q=this.state.routedPoints[qa],X=new mxPoint(Q.x/this.scale,Q.y/this.scale);0==qa?X=q[0]:qa==this.state.routedPoints.length-1&&(X=q[q.length-1]);var fa=!1;if(null!=Z&&1==Q.type){var ka=this.state.routedPoints[qa+1];Q=ka.x/this.scale-
+X.x;ka=ka.y/this.scale-X.y;Q=Q*Q+ka*ka;null==Y&&(Y=new mxPoint(X.x-Z.x,X.y-Z.y),ca=Math.sqrt(Y.x*Y.x+Y.y*Y.y),0<ca?(Y.x=Y.x*C/ca,Y.y=Y.y*C/ca):Y=null);Q>C*C&&0<ca&&(Q=Z.x-X.x,ka=Z.y-X.y,Q=Q*Q+ka*ka,Q>C*C&&(fa=new mxPoint(X.x-Y.x,X.y-Y.y),Q=new mxPoint(X.x+Y.x,X.y+Y.y),aa.push(fa),this.addPoints(m,aa,y,F,!1,null,G),aa=0>Math.round(Y.x)||0==Math.round(Y.x)&&0>=Math.round(Y.y)?1:-1,G=!1,"sharp"==I?(m.lineTo(fa.x-Y.y*aa,fa.y+Y.x*aa),m.lineTo(Q.x-Y.y*aa,Q.y+Y.x*aa),m.lineTo(Q.x,Q.y)):"line"==I?(m.moveTo(fa.x+
+Y.y*aa,fa.y-Y.x*aa),m.lineTo(fa.x-Y.y*aa,fa.y+Y.x*aa),m.moveTo(Q.x-Y.y*aa,Q.y+Y.x*aa),m.lineTo(Q.x+Y.y*aa,Q.y-Y.x*aa),m.moveTo(Q.x,Q.y)):"arc"==I?(aa*=1.3,m.curveTo(fa.x-Y.y*aa,fa.y+Y.x*aa,Q.x-Y.y*aa,Q.y+Y.x*aa,Q.x,Q.y)):(m.moveTo(Q.x,Q.y),G=!0),aa=[Q],fa=!0))}else Y=null;fa||(aa.push(X),Z=X)}this.addPoints(m,aa,y,F,!1,null,G);m.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(m,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
+new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(m,q,y,F){if(null==q||null==m||"1"!=q.style.snapToPoint&&"1"!=m.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(m,q,F);var C=this.getNextPoint(m,y,F),I=this.graph.isOrthogonal(m),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),Z=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
+G){var ca=Math.cos(-G),aa=Math.sin(-G);C=mxUtils.getRotatedPoint(C,ca,aa,Z)}ca=parseFloat(m.style[mxConstants.STYLE_PERIMETER_SPACING]||0);ca+=parseFloat(m.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&I,ca);0!=G&&(ca=Math.cos(G),aa=Math.sin(G),C=mxUtils.getRotatedPoint(C,ca,aa,Z));m.setAbsoluteTerminalPoint(this.snapToAnchorPoint(m,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(m,q,y,F,C){if(null!=
+q&&null!=m){m=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=m)for(var I=0;I<m.length;I++){var G=this.graph.getConnectionPoint(q,m[I]);if(null!=G){var Z=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||Z<F)y=G,F=Z}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(m,q,y){var F=f.apply(this,arguments);"1"==m.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,F));
+return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(m){if(null!=m.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(m.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];mxStencilRegistry.filesLoaded={};
mxStencilRegistry.getStencil=function(b){var e=mxStencilRegistry.stencils[b];if(null==e&&null==mxCellRenderer.defaultShapes[b]&&mxStencilRegistry.dynamicLoading){var k=mxStencilRegistry.getBasenameForStencil(b);if(null!=k){e=mxStencilRegistry.libraries[k];if(null!=e){if(null==mxStencilRegistry.packages[k]){for(var n=0;n<e.length;n++){var D=e[n];if(!mxStencilRegistry.filesLoaded[D])if(mxStencilRegistry.filesLoaded[D]=!0,".xml"==D.toLowerCase().substring(D.length-4,D.length))mxStencilRegistry.loadStencilSet(D,
null);else if(".js"==D.toLowerCase().substring(D.length-3,D.length))try{if(mxStencilRegistry.allowEval){var t=mxUtils.load(D);null!=t&&200<=t.getStatus()&&299>=t.getStatus()&&eval.call(window,t.getText())}}catch(E){null!=window.console&&console.log("error in getStencil:",b,k,e,D,E)}}mxStencilRegistry.packages[k]=1}}else k=k.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+k+".xml",null);e=mxStencilRegistry.stencils[b]}}return e};
@@ -2481,146 +2482,146 @@ mxStencilRegistry.loadStencilSet=function(b,e,k,n){var D=mxStencilRegistry.packa
D.documentElement&&mxStencilRegistry.parseStencilSet(D.documentElement,e,t)}};mxStencilRegistry.loadStencil=function(b,e){if(null!=e)mxUtils.get(b,mxUtils.bind(this,function(k){e(200<=k.getStatus()&&299>=k.getStatus()?k.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var e=0;e<b.length;e++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[e]).documentElement)};
mxStencilRegistry.parseStencilSet=function(b,e,k){if("stencils"==b.nodeName)for(var n=b.firstChild;null!=n;)"shapes"==n.nodeName&&mxStencilRegistry.parseStencilSet(n,e,k),n=n.nextSibling;else{k=null!=k?k:!0;n=b.firstChild;var D="";b=b.getAttribute("name");for(null!=b&&(D=b+".");null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=n.getAttribute("name"),null!=b)){D=D.toLowerCase();var t=b.replace(/ /g,"_");k&&mxStencilRegistry.addStencil(D+t.toLowerCase(),new mxStencil(n));if(null!=e){var E=n.getAttribute("w"),
d=n.getAttribute("h");E=null==E?80:parseInt(E,10);d=null==d?80:parseInt(d,10);e(D,t,b,E,d)}}n=n.nextSibling}}};
-"undefined"!==typeof mxVertexHandler&&function(){function b(){var z=document.createElement("div");z.className="geHint";z.style.whiteSpace="nowrap";z.style.position="absolute";return z}function e(z,L){switch(L){case mxConstants.POINTS:return z;case mxConstants.MILLIMETERS:return(z/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(z/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(z/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
+"undefined"!==typeof mxVertexHandler&&function(){function b(){var z=document.createElement("div");z.className="geHint";z.style.whiteSpace="nowrap";z.style.position="absolute";return z}function e(z,K){switch(K){case mxConstants.POINTS:return z;case mxConstants.MILLIMETERS:return(z/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(z/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(z/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(z){return!mxEvent.isAltDown(z)};var k=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(z){return k.apply(this,arguments)||this.graph.isTableRow(z)||this.graph.isTableCell(z)};var n=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(z){return n.apply(this,arguments)||
this.graph.isEdgeIgnored(z)};var D=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(z){return this.graph.isCloneEvent(z)!=D.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var z=new mxEllipse(null,this.highlightColor,this.highlightColor,0);z.opacity=mxConstants.HIGHLIGHT_OPACITY;return z};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
-function(z){z=this.graph.createCurrentEdgeStyle();z=this.graph.createEdge(null,null,null,null,null,z);z=new mxCellState(this.graph.view,z,this.graph.getCellStyle(z));for(var L in this.graph.currentEdgeStyle)z.style[L]=this.graph.currentEdgeStyle[L];z.style=this.graph.postProcessCellStyle(z.cell,z.style);return z};var t=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var z=t.apply(this,arguments);z.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return z};mxConnectionHandler.prototype.updatePreview=function(z){};var E=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var z=E.apply(this,arguments),L=z.getCell;z.getCell=mxUtils.bind(this,function(M){var U=L.apply(this,arguments);this.error=null;return U});return z};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
-function(){for(var z="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",L="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),M=0;M<L.length;M++)null!=this.currentEdgeStyle[L[M]]&&(z+=L[M]+"="+this.currentEdgeStyle[L[M]]+";");null!=this.currentEdgeStyle.orthogonalLoop?z+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
+function(z){z=this.graph.createCurrentEdgeStyle();z=this.graph.createEdge(null,null,null,null,null,z);z=new mxCellState(this.graph.view,z,this.graph.getCellStyle(z));for(var K in this.graph.currentEdgeStyle)z.style[K]=this.graph.currentEdgeStyle[K];z.style=this.graph.postProcessCellStyle(z.cell,z.style);return z};var t=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var z=t.apply(this,arguments);z.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
+return z};mxConnectionHandler.prototype.updatePreview=function(z){};var E=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var z=E.apply(this,arguments),K=z.getCell;z.getCell=mxUtils.bind(this,function(M){var U=K.apply(this,arguments);this.error=null;return U});return z};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+function(){for(var z="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",K="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),M=0;M<K.length;M++)null!=this.currentEdgeStyle[K[M]]&&(z+=K[M]+"="+this.currentEdgeStyle[K[M]]+";");null!=this.currentEdgeStyle.orthogonalLoop?z+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(z+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?z+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(z+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(z+="elbow="+this.currentEdgeStyle.elbow+";");return z=null!=this.currentEdgeStyle.html?z+("html="+this.currentEdgeStyle.html+";"):z+"html=1;"};
-Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var z=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=z&&(new mxCodec(z.ownerDocument)).decode(z,this.getStylesheet())};Graph.prototype.createCellLookup=function(z,L){L=null!=L?L:{};for(var M=0;M<z.length;M++){var U=z[M];L[mxObjectIdentity.get(U)]=U.getId();for(var X=this.model.getChildCount(U),
-fa=0;fa<X;fa++)this.createCellLookup([this.model.getChildAt(U,fa)],L)}return L};Graph.prototype.createCellMapping=function(z,L,M){M=null!=M?M:{};for(var U in z){var X=L[U];null==M[X]&&(M[X]=z[U].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,L,M,U){L=null!=L?L:0;M=null!=M?M:0;var X=new mxCodec(z.ownerDocument),fa=new mxGraphModel;X.decode(z,fa);z=[];X={};var na={},ua=fa.getChildren(this.cloneCell(fa.root,this.isCloneInvalidEdges(),X));if(null!=ua){var pa=this.createCellLookup([fa.root]);
-ua=ua.slice();this.model.beginUpdate();try{if(1!=ua.length||this.isCellLocked(this.getDefaultParent()))for(fa=0;fa<ua.length;fa++)za=this.model.getChildren(this.moveCells([ua[fa]],L,M,!1,this.model.getRoot())[0]),null!=za&&(z=z.concat(za));else{var za=fa.getChildren(ua[0]);null!=za&&(z=this.moveCells(za,L,M,!1,this.getDefaultParent()),na[fa.getChildAt(fa.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(X,pa,na),this.updateCustomLinks(na,z),U)){this.isGridEnabled()&&
-(L=this.snap(L),M=this.snap(M));var Da=this.getBoundingBoxFromGeometry(z,!0);null!=Da&&this.moveCells(z,L-Da.x,M-Da.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var L={},M=this.cloneCells(z,null,L),U=new mxDictionary,X=0;X<z.length;X++)U.put(z[X],!0);var fa=new mxCodec,na=new mxGraphModel,ua=na.getChildAt(na.getRoot(),0);for(X=0;X<M.length;X++){na.add(ua,M[X]);var pa=this.view.getState(z[X]);if(null!=pa){var za=this.getCellGeometry(M[X]);null!=za&&za.relative&&
-!this.model.isEdge(z[X])&&null==U.get(this.model.getParent(z[X]))&&(za.offset=null,za.relative=!1,za.x=pa.x/pa.view.scale-pa.view.translate.x,za.y=pa.y/pa.view.scale-pa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(L,this.createCellLookup(z)),M);return fa.encode(na)};Graph.prototype.isSwimlane=function(z,L){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,L)[mxConstants.STYLE_SHAPE]);return M==mxConstants.SHAPE_SWIMLANE||
-"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var L=this.model.getParent(z);if(null!=L){var M=this.getCurrentCellStyle(L);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==L||!this.isTable(L))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,L,M,U,X,fa,na,ua){null==ua&&(ua=this.model.getParent(z),this.isTable(ua)||this.isTableRow(ua))&&(ua=this.getCellAt(fa,na,null,!0,!1));M=null;this.model.beginUpdate();
-try{M=f.apply(this,[z,L,M,U,X,fa,na,ua]);this.model.setValue(M,"");var pa=this.getChildCells(M,!0);for(L=0;L<pa.length;L++){var za=this.getCellGeometry(pa[L]);null!=za&&za.relative&&0<za.x&&this.model.remove(pa[L])}var Da=this.getChildCells(z,!0);for(L=0;L<Da.length;L++)za=this.getCellGeometry(Da[L]),null!=za&&za.relative&&0>=za.x&&this.model.remove(Da[L]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[M]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var z=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=z&&(new mxCodec(z.ownerDocument)).decode(z,this.getStylesheet())};Graph.prototype.createCellLookup=function(z,K){K=null!=K?K:{};for(var M=0;M<z.length;M++){var U=z[M];K[mxObjectIdentity.get(U)]=U.getId();for(var W=this.model.getChildCount(U),
+ha=0;ha<W;ha++)this.createCellLookup([this.model.getChildAt(U,ha)],K)}return K};Graph.prototype.createCellMapping=function(z,K,M){M=null!=M?M:{};for(var U in z){var W=K[U];null==M[W]&&(M[W]=z[U].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,K,M,U){K=null!=K?K:0;M=null!=M?M:0;var W=new mxCodec(z.ownerDocument),ha=new mxGraphModel;W.decode(z,ha);z=[];W={};var na={},ua=ha.getChildren(this.cloneCell(ha.root,this.isCloneInvalidEdges(),W));if(null!=ua){var pa=this.createCellLookup([ha.root]);
+ua=ua.slice();this.model.beginUpdate();try{if(1!=ua.length||this.isCellLocked(this.getDefaultParent()))for(ha=0;ha<ua.length;ha++)za=this.model.getChildren(this.moveCells([ua[ha]],K,M,!1,this.model.getRoot())[0]),null!=za&&(z=z.concat(za));else{var za=ha.getChildren(ua[0]);null!=za&&(z=this.moveCells(za,K,M,!1,this.getDefaultParent()),na[ha.getChildAt(ha.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(W,pa,na),this.updateCustomLinks(na,z),U)){this.isGridEnabled()&&
+(K=this.snap(K),M=this.snap(M));var Da=this.getBoundingBoxFromGeometry(z,!0);null!=Da&&this.moveCells(z,K-Da.x,M-Da.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var K={},M=this.cloneCells(z,null,K),U=new mxDictionary,W=0;W<z.length;W++)U.put(z[W],!0);var ha=new mxCodec,na=new mxGraphModel,ua=na.getChildAt(na.getRoot(),0);for(W=0;W<M.length;W++){na.add(ua,M[W]);var pa=this.view.getState(z[W]);if(null!=pa){var za=this.getCellGeometry(M[W]);null!=za&&za.relative&&
+!this.model.isEdge(z[W])&&null==U.get(this.model.getParent(z[W]))&&(za.offset=null,za.relative=!1,za.x=pa.x/pa.view.scale-pa.view.translate.x,za.y=pa.y/pa.view.scale-pa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(K,this.createCellLookup(z)),M);return ha.encode(na)};Graph.prototype.isSwimlane=function(z,K){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,K)[mxConstants.STYLE_SHAPE]);return M==mxConstants.SHAPE_SWIMLANE||
+"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var K=this.model.getParent(z);if(null!=K){var M=this.getCurrentCellStyle(K);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==K||!this.isTable(K))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,K,M,U,W,ha,na,ua){null==ua&&(ua=this.model.getParent(z),this.isTable(ua)||this.isTableRow(ua))&&(ua=this.getCellAt(ha,na,null,!0,!1));M=null;this.model.beginUpdate();
+try{M=f.apply(this,[z,K,M,U,W,ha,na,ua]);this.model.setValue(M,"");var pa=this.getChildCells(M,!0);for(K=0;K<pa.length;K++){var za=this.getCellGeometry(pa[K]);null!=za&&za.relative&&0<za.x&&this.model.remove(pa[K])}var Da=this.getChildCells(z,!0);for(K=0;K<Da.length;K++)za=this.getCellGeometry(Da[K]),null!=za&&za.relative&&0>=za.x&&this.model.remove(Da[K]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[M]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
null,[z]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[z]);var Ma=this.model.getTerminal(M,!1);if(null!=Ma){var La=this.getCurrentCellStyle(Ma);null!=La&&"1"==La.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[z]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[z]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[M]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[M]))}}finally{this.model.endUpdate()}return M};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=
-function(z,L,M){if(L||M)g.apply(this,arguments);else{var U=this.getSelectionCell(),X=null,fa=[],na=mxUtils.bind(this,function(ua){if(null!=this.view.getState(ua)&&(this.model.isVertex(ua)||this.model.isEdge(ua)))if(fa.push(ua),ua==U)X=fa.length-1;else if(z&&null==U&&0<fa.length||null!=X&&z&&fa.length>X||!z&&0<X)return;for(var pa=0;pa<this.model.getChildCount(ua);pa++)na(this.model.getChildAt(ua,pa))});na(this.model.root);0<fa.length&&(X=null!=X?mxUtils.mod(X+(z?1:-1),fa.length):0,this.setSelectionCell(fa[X]))}};
-Graph.prototype.swapShapes=function(z,L,M,U,X,fa,na){L=!1;if(!U&&null!=X&&1==z.length&&(U=this.view.getState(X),M=this.view.getState(z[0]),null!=U&&null!=M&&(null!=fa&&mxEvent.isShiftDown(fa)||"umlLifeline"==U.style.shape&&"umlLifeline"==M.style.shape)&&(U=this.getCellGeometry(X),fa=this.getCellGeometry(z[0]),null!=U&&null!=fa))){L=U.clone();U=fa.clone();U.x=L.x;U.y=L.y;L.x=fa.x;L.y=fa.y;this.model.beginUpdate();try{this.model.setGeometry(X,L),this.model.setGeometry(z[0],U)}finally{this.model.endUpdate()}L=
-!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,U,X,fa,na){if(this.swapShapes(z,L,M,U,X,fa,na))return z;na=null!=na?na:{};if(this.isTable(X)){for(var ua=[],pa=0;pa<z.length;pa++)this.isTable(z[pa])?ua=ua.concat(this.model.getChildCells(z[pa],!0).reverse()):ua.push(z[pa]);z=ua}this.model.beginUpdate();try{ua=[];for(pa=0;pa<z.length;pa++)if(null!=X&&this.isTableRow(z[pa])){var za=this.model.getParent(z[pa]),Da=this.getCellGeometry(z[pa]);this.isTable(za)&&ua.push(za);
-if(null!=za&&null!=Da&&this.isTable(za)&&this.isTable(X)&&(U||za!=X)){if(!U){var Ma=this.getCellGeometry(za);null!=Ma&&(Ma=Ma.clone(),Ma.height-=Da.height,this.model.setGeometry(za,Ma))}Ma=this.getCellGeometry(X);null!=Ma&&(Ma=Ma.clone(),Ma.height+=Da.height,this.model.setGeometry(X,Ma));var La=this.model.getChildCells(X,!0);if(0<La.length){z[pa]=U?this.cloneCell(z[pa]):z[pa];var Ua=this.model.getChildCells(z[pa],!0),Ra=this.model.getChildCells(La[0],!0),Fa=Ra.length-Ua.length;if(0<Fa)for(var va=
-0;va<Fa;va++){var ya=this.cloneCell(Ua[Ua.length-1]);null!=ya&&(ya.value="",this.model.add(z[pa],ya))}else if(0>Fa)for(va=0;va>Fa;va--)this.model.remove(Ua[Ua.length+va-1]);Ua=this.model.getChildCells(z[pa],!0);for(va=0;va<Ra.length;va++){var Na=this.getCellGeometry(Ra[va]),Ja=this.getCellGeometry(Ua[va]);null!=Na&&null!=Ja&&(Ja=Ja.clone(),Ja.width=Na.width,this.model.setGeometry(Ua[va],Ja))}}}}var Pa=m.apply(this,arguments);for(pa=0;pa<ua.length;pa++)!U&&this.model.contains(ua[pa])&&0==this.model.getChildCount(ua[pa])&&
-this.model.remove(ua[pa]);U&&this.updateCustomLinks(this.createCellMapping(na,this.createCellLookup(z)),Pa)}finally{this.model.endUpdate()}return Pa};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,L){var M=[];this.model.beginUpdate();try{for(var U=0;U<z.length;U++)if(this.isTableCell(z[U])){var X=this.model.getParent(z[U]),fa=this.model.getParent(X);1==this.model.getChildCount(X)&&1==this.model.getChildCount(fa)?0>mxUtils.indexOf(z,fa)&&0>mxUtils.indexOf(M,fa)&&M.push(fa):
-this.labelChanged(z[U],"")}else{if(this.isTableRow(z[U])&&(fa=this.model.getParent(z[U]),0>mxUtils.indexOf(z,fa)&&0>mxUtils.indexOf(M,fa))){for(var na=this.model.getChildCells(fa,!0),ua=0,pa=0;pa<na.length;pa++)0<=mxUtils.indexOf(z,na[pa])&&ua++;ua==na.length&&M.push(fa)}M.push(z[U])}M=q.apply(this,[M,L])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,L,M){M=null!=M?M:new Graph;for(var U=0;U<L.length;U++)null!=L[U]&&M.updateCustomLinksForCell(z,L[U],M)};Graph.prototype.updateCustomLinksForCell=
-function(z,L){this.doUpdateCustomLinksForCell(z,L);for(var M=this.model.getChildCount(L),U=0;U<M;U++)this.updateCustomLinksForCell(z,this.model.getChildAt(L,U))};Graph.prototype.doUpdateCustomLinksForCell=function(z,L){};Graph.prototype.getAllConnectionConstraints=function(z,L){if(null!=z){L=mxUtils.getValue(z.style,"points",null);if(null!=L){z=[];try{var M=JSON.parse(L);for(L=0;L<M.length;L++){var U=M[L];z.push(new mxConnectionConstraint(new mxPoint(U[0],U[1]),2<U.length?"0"!=U[2]:!0,null,3<U.length?
-U[3]:0,4<U.length?U[4]:0))}}catch(fa){}return z}if(null!=z.shape&&null!=z.shape.bounds){U=z.shape.direction;L=z.shape.bounds;var X=z.shape.scale;M=L.width/X;L=L.height/X;if(U==mxConstants.DIRECTION_NORTH||U==mxConstants.DIRECTION_SOUTH)U=M,M=L,L=U;L=z.shape.getConstraints(z.style,M,L);if(null!=L)return L;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;if(null!=z.shape.constraints)return z.shape.constraints}}return null};Graph.prototype.flipEdge=function(z){if(null!=
-z){var L=this.getCurrentCellStyle(z);L=mxUtils.getValue(L,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,L,[z])}};Graph.prototype.isValidRoot=function(z){for(var L=this.model.getChildCount(z),M=0,U=0;U<L;U++){var X=this.model.getChildAt(z,U);this.model.isVertex(X)&&(X=this.getCellGeometry(X),null==X||X.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=
-function(z,L,M){for(var U=this.getCurrentCellStyle(z),X=!0,fa=!0,na=0;na<L.length&&fa;na++)X=X&&this.isTable(L[na]),fa=fa&&this.isTableRow(L[na]);return(1==L.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(U,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(U,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||fa||X))&&!this.isCellLocked(z)};
-Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var L=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(L&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&(L=!1))}return L};Graph.prototype.getPreferredSizeForCell=function(z){var L=mxGraph.prototype.getPreferredSizeForCell.apply(this,
-arguments);null!=L&&(L.width+=10,L.height+=4,this.gridEnabled&&(L.width=this.snap(L.width),L.height=this.snap(L.height)));return L};Graph.prototype.turnShapes=function(z,L){var M=this.getModel(),U=[];M.beginUpdate();try{for(var X=0;X<z.length;X++){var fa=z[X];if(M.isEdge(fa)){var na=M.getTerminal(fa,!0),ua=M.getTerminal(fa,!1);M.setTerminal(fa,ua,!0);M.setTerminal(fa,na,!1);var pa=M.getGeometry(fa);if(null!=pa){pa=pa.clone();null!=pa.points&&pa.points.reverse();var za=pa.getTerminalPoint(!0),Da=pa.getTerminalPoint(!1);
-pa.setTerminalPoint(za,!1);pa.setTerminalPoint(Da,!0);M.setGeometry(fa,pa);var Ma=this.view.getState(fa),La=this.view.getState(na),Ua=this.view.getState(ua);if(null!=Ma){var Ra=null!=La?this.getConnectionConstraint(Ma,La,!0):null,Fa=null!=Ua?this.getConnectionConstraint(Ma,Ua,!1):null;this.setConnectionConstraint(fa,na,!0,Fa);this.setConnectionConstraint(fa,ua,!1,Ra);var va=mxUtils.getValue(Ma.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
-mxUtils.getValue(Ma.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[fa]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,va,[fa])}U.push(fa)}}else if(M.isVertex(fa)&&(pa=this.getCellGeometry(fa),null!=pa)){if(!(this.isTable(fa)||this.isTableRow(fa)||this.isTableCell(fa)||this.isSwimlane(fa))){pa=pa.clone();pa.x+=pa.width/2-pa.height/2;pa.y+=pa.height/2-pa.width/2;var ya=pa.width;pa.width=pa.height;pa.height=ya;M.setGeometry(fa,pa)}var Na=this.view.getState(fa);if(null!=Na){var Ja=
-[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Pa=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Ja[mxUtils.mod(mxUtils.indexOf(Ja,Pa)+(L?-1:1),Ja.length)],[fa])}U.push(fa)}}}finally{M.endUpdate()}return U};Graph.prototype.stencilHasPlaceholders=function(z){if(null!=z&&null!=z.fgNode)for(z=z.fgNode.firstChild;null!=z;){if("text"==z.nodeName&&"1"==z.getAttribute("placeholders"))return!0;
-z=z.nextSibling}return!1};var y=Graph.prototype.processChange;Graph.prototype.processChange=function(z){if(z instanceof mxGeometryChange&&(this.isTableCell(z.cell)||this.isTableRow(z.cell))&&(null==z.previous&&null!=z.geometry||null!=z.previous&&!z.previous.equals(z.geometry))){var L=z.cell;this.isTableCell(L)&&(L=this.model.getParent(L));this.isTableRow(L)&&(L=this.model.getParent(L));var M=this.view.getState(L);null!=M&&null!=M.shape&&(this.view.invalidate(L),M.shape.bounds=null)}y.apply(this,arguments);
-z instanceof mxValueChange&&null!=z.cell&&null!=z.cell.value&&"object"==typeof z.cell.value&&this.invalidateDescendantsWithPlaceholders(z.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(z){z=this.model.getDescendants(z);if(0<z.length)for(var L=0;L<z.length;L++){var M=this.view.getState(z[L]);null!=M&&null!=M.shape&&null!=M.shape.stencil&&this.stencilHasPlaceholders(M.shape.stencil)?this.removeStateForCell(z[L]):this.isReplacePlaceholders(z[L])&&this.view.invalidate(z[L],!1,!1)}};
-Graph.prototype.replaceElement=function(z,L){L=z.ownerDocument.createElement(null!=L?L:"span");for(var M=Array.prototype.slice.call(z.attributes);attr=M.pop();)L.setAttribute(attr.nodeName,attr.nodeValue);L.innerHTML=z.innerHTML;z.parentNode.replaceChild(L,z)};Graph.prototype.processElements=function(z,L){if(null!=z){z=z.getElementsByTagName("*");for(var M=0;M<z.length;M++)L(z[M])}};Graph.prototype.updateLabelElements=function(z,L,M){z=null!=z?z:this.getSelectionCells();for(var U=document.createElement("div"),
-X=0;X<z.length;X++)if(this.isHtmlLabel(z[X])){var fa=this.convertValueToString(z[X]);if(null!=fa&&0<fa.length){U.innerHTML=fa;for(var na=U.getElementsByTagName(null!=M?M:"*"),ua=0;ua<na.length;ua++)L(na[ua]);U.innerHTML!=fa&&this.cellLabelChanged(z[X],U.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,L,M){L=Graph.zapGremlins(L);this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var U=z.getAttribute("placeholder"),
-X=z;null!=X;){if(X==this.model.getRoot()||null!=X.value&&"object"==typeof X.value&&X.hasAttribute(U)){this.setAttributeForCell(X,U,L);break}X=this.model.getParent(X)}var fa=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&fa.hasAttribute("label_"+Graph.diagramLanguage)?fa.setAttribute("label_"+Graph.diagramLanguage,L):fa.setAttribute("label",L);L=fa}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=
-z){for(var L=new mxDictionary,M=0;M<z.length;M++)L.put(z[M],!0);var U=[];for(M=0;M<z.length;M++){var X=this.model.getParent(z[M]);null==X||L.get(X)||(L.put(X,!0),U.push(X))}for(M=0;M<U.length;M++)if(X=this.view.getState(U[M]),null!=X&&(this.model.isEdge(X.cell)||this.model.isVertex(X.cell))&&this.isCellDeletable(X.cell)&&this.isTransparentState(X)){for(var fa=!0,na=0;na<this.model.getChildCount(X.cell)&&fa;na++)L.get(this.model.getChildAt(X.cell,na))||(fa=!1);fa&&z.push(X.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
-arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var L=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&L.push(z[M]);z=L;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,L){this.setAttributeForCell(z,"link",L)};Graph.prototype.setTooltipForCell=function(z,L){var M="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(z.value)&&z.value.hasAttribute("tooltip_"+
-Graph.diagramLanguage)&&(M="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(z,M,L)};Graph.prototype.getAttributeForCell=function(z,L,M){z=null!=z.value&&"object"===typeof z.value?z.value.getAttribute(L):null;return null!=z?z:M};Graph.prototype.setAttributeForCell=function(z,L,M){if(null!=z.value&&"object"==typeof z.value)var U=z.value.cloneNode(!0);else U=mxUtils.createXmlDocument().createElement("UserObject"),U.setAttribute("label",z.value||"");null!=M?U.setAttribute(L,M):U.removeAttribute(L);
-this.model.setValue(z,U)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,L,M,U){this.getModel();if(mxEvent.isAltDown(L))return null;for(var X=0;X<z.length;X++){var fa=this.model.getParent(z[X]);if(this.model.isEdge(fa)&&0>mxUtils.indexOf(z,fa))return null}fa=F.apply(this,arguments);var na=!0;for(X=0;X<z.length&&na;X++)na=na&&this.isTableRow(z[X]);na&&(this.isTableCell(fa)&&(fa=this.model.getParent(fa)),this.isTableRow(fa)&&(fa=this.model.getParent(fa)),this.isTable(fa)||
-(fa=null));return fa};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,L){this.isEnabled()&&(L=this.insertTextForEvent(z,L),mxGraph.prototype.dblClick.call(this,z,L))};Graph.prototype.insertTextForEvent=function(z,L){var M=mxUtils.convertPoint(this.container,mxEvent.getClientX(z),mxEvent.getClientY(z));if(null!=z&&!this.model.isVertex(L)){var U=this.model.isEdge(L)?this.view.getState(L):
-null,X=mxEvent.getSource(z);this.firstClickState!=U||this.firstClickSource!=X||null!=U&&null!=U.text&&null!=U.text.node&&null!=U.text.boundingBox&&(mxUtils.contains(U.text.boundingBox,M.x,M.y)||mxUtils.isAncestorNode(U.text.node,mxEvent.getSource(z)))||(null!=U||this.isCellLocked(this.getDefaultParent()))&&(null==U||this.isCellLocked(U.cell))||!(null!=U||mxClient.IS_SVG&&X==this.view.getCanvas().ownerSVGElement)||(null==U&&(U=this.view.getState(this.getCellAt(M.x,M.y))),L=this.addText(M.x,M.y,U))}return L};
-Graph.prototype.getInsertPoint=function(){var z=this.getGridSize(),L=this.container.scrollLeft/this.view.scale-this.view.translate.x,M=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var U=this.getPageLayout(),X=this.getPageSize();L=Math.max(L,U.x*X.width);M=Math.max(M,U.y*X.height)}return new mxPoint(this.snap(L+z),this.snap(M+z))};Graph.prototype.getFreeInsertPoint=function(){var z=this.view,L=this.getGraphBounds(),M=this.getInsertPoint(),U=this.snap(Math.round(Math.max(M.x,
-L.x/z.scale-z.translate.x+(0==L.width?2*this.gridSize:0))));z=this.snap(Math.round(Math.max(M.y,(L.y+L.height)/z.scale-z.translate.y+2*this.gridSize)));return new mxPoint(U,z)};Graph.prototype.getCenterInsertPoint=function(z){z=null!=z?z:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
-2)/this.view.scale-this.view.translate.y-z.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-z.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(z,L,M){var U=new mxCell;U.value="Text";U.geometry=new mxGeometry(0,0,0,0);U.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){U.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
-U.geometry.relative=!0;U.connectable=!1;var X=this.view.getRelativePoint(M,z,L);U.geometry.x=Math.round(1E4*X.x)/1E4;U.geometry.y=Math.round(X.y);U.geometry.offset=new mxPoint(0,0);X=this.view.getPoint(M,U.geometry);var fa=this.view.scale;U.geometry.offset=new mxPoint(Math.round((z-X.x)/fa),Math.round((L-X.y)/fa))}else X=this.view.translate,U.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",U.geometry.width=40,U.geometry.height=20,U.geometry.x=Math.round(z/this.view.scale)-
-X.x-(null!=M?M.origin.x:0),U.geometry.y=Math.round(L/this.view.scale)-X.y-(null!=M?M.origin.y:0),U.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([U],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[U])),this.autoSizeCell(U)}finally{this.getModel().endUpdate()}return U};Graph.prototype.addClickHandler=function(z,L,M){var U=mxUtils.bind(this,function(){var pa=this.container.getElementsByTagName("a");if(null!=pa)for(var za=0;za<pa.length;za++){var Da=
-this.getAbsoluteUrl(pa[za].getAttribute("href"));null!=Da&&(pa[za].setAttribute("rel",this.linkRelation),pa[za].setAttribute("href",Da),null!=L&&mxEvent.addGestureListeners(pa[za],null,null,L))}});this.model.addListener(mxEvent.CHANGE,U);U();var X=this.container.style.cursor,fa=this.getTolerance(),na=this,ua={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(na,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(pa){var za=
+function(z,K,M){if(K||M)g.apply(this,arguments);else{var U=this.getSelectionCell(),W=null,ha=[],na=mxUtils.bind(this,function(ua){if(null!=this.view.getState(ua)&&(this.model.isVertex(ua)||this.model.isEdge(ua)))if(ha.push(ua),ua==U)W=ha.length-1;else if(z&&null==U&&0<ha.length||null!=W&&z&&ha.length>W||!z&&0<W)return;for(var pa=0;pa<this.model.getChildCount(ua);pa++)na(this.model.getChildAt(ua,pa))});na(this.model.root);0<ha.length&&(W=null!=W?mxUtils.mod(W+(z?1:-1),ha.length):0,this.setSelectionCell(ha[W]))}};
+Graph.prototype.swapShapes=function(z,K,M,U,W,ha,na){K=!1;if(!U&&null!=W&&1==z.length&&(U=this.view.getState(W),M=this.view.getState(z[0]),null!=U&&null!=M&&(null!=ha&&mxEvent.isShiftDown(ha)||"umlLifeline"==U.style.shape&&"umlLifeline"==M.style.shape)&&(U=this.getCellGeometry(W),ha=this.getCellGeometry(z[0]),null!=U&&null!=ha))){K=U.clone();U=ha.clone();U.x=K.x;U.y=K.y;K.x=ha.x;K.y=ha.y;this.model.beginUpdate();try{this.model.setGeometry(W,K),this.model.setGeometry(z[0],U)}finally{this.model.endUpdate()}K=
+!0}return K};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,K,M,U,W,ha,na){if(this.swapShapes(z,K,M,U,W,ha,na))return z;na=null!=na?na:{};if(this.isTable(W)){for(var ua=[],pa=0;pa<z.length;pa++)this.isTable(z[pa])?ua=ua.concat(this.model.getChildCells(z[pa],!0).reverse()):ua.push(z[pa]);z=ua}this.model.beginUpdate();try{ua=[];for(pa=0;pa<z.length;pa++)if(null!=W&&this.isTableRow(z[pa])){var za=this.model.getParent(z[pa]),Da=this.getCellGeometry(z[pa]);this.isTable(za)&&ua.push(za);
+if(null!=za&&null!=Da&&this.isTable(za)&&this.isTable(W)&&(U||za!=W)){if(!U){var Ma=this.getCellGeometry(za);null!=Ma&&(Ma=Ma.clone(),Ma.height-=Da.height,this.model.setGeometry(za,Ma))}Ma=this.getCellGeometry(W);null!=Ma&&(Ma=Ma.clone(),Ma.height+=Da.height,this.model.setGeometry(W,Ma));var La=this.model.getChildCells(W,!0);if(0<La.length){z[pa]=U?this.cloneCell(z[pa]):z[pa];var Ua=this.model.getChildCells(z[pa],!0),Sa=this.model.getChildCells(La[0],!0),Fa=Sa.length-Ua.length;if(0<Fa)for(var va=
+0;va<Fa;va++){var ya=this.cloneCell(Ua[Ua.length-1]);null!=ya&&(ya.value="",this.model.add(z[pa],ya))}else if(0>Fa)for(va=0;va>Fa;va--)this.model.remove(Ua[Ua.length+va-1]);Ua=this.model.getChildCells(z[pa],!0);for(va=0;va<Sa.length;va++){var Na=this.getCellGeometry(Sa[va]),Ja=this.getCellGeometry(Ua[va]);null!=Na&&null!=Ja&&(Ja=Ja.clone(),Ja.width=Na.width,this.model.setGeometry(Ua[va],Ja))}}}}var Qa=m.apply(this,arguments);for(pa=0;pa<ua.length;pa++)!U&&this.model.contains(ua[pa])&&0==this.model.getChildCount(ua[pa])&&
+this.model.remove(ua[pa]);U&&this.updateCustomLinks(this.createCellMapping(na,this.createCellLookup(z)),Qa)}finally{this.model.endUpdate()}return Qa};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,K){var M=[];this.model.beginUpdate();try{for(var U=0;U<z.length;U++)if(this.isTableCell(z[U])){var W=this.model.getParent(z[U]),ha=this.model.getParent(W);1==this.model.getChildCount(W)&&1==this.model.getChildCount(ha)?0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha)&&M.push(ha):
+this.labelChanged(z[U],"")}else{if(this.isTableRow(z[U])&&(ha=this.model.getParent(z[U]),0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha))){for(var na=this.model.getChildCells(ha,!0),ua=0,pa=0;pa<na.length;pa++)0<=mxUtils.indexOf(z,na[pa])&&ua++;ua==na.length&&M.push(ha)}M.push(z[U])}M=q.apply(this,[M,K])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,K,M){M=null!=M?M:new Graph;for(var U=0;U<K.length;U++)null!=K[U]&&M.updateCustomLinksForCell(z,K[U],M)};Graph.prototype.updateCustomLinksForCell=
+function(z,K){this.doUpdateCustomLinksForCell(z,K);for(var M=this.model.getChildCount(K),U=0;U<M;U++)this.updateCustomLinksForCell(z,this.model.getChildAt(K,U))};Graph.prototype.doUpdateCustomLinksForCell=function(z,K){};Graph.prototype.getAllConnectionConstraints=function(z,K){if(null!=z){K=mxUtils.getValue(z.style,"points",null);if(null!=K){z=[];try{var M=JSON.parse(K);for(K=0;K<M.length;K++){var U=M[K];z.push(new mxConnectionConstraint(new mxPoint(U[0],U[1]),2<U.length?"0"!=U[2]:!0,null,3<U.length?
+U[3]:0,4<U.length?U[4]:0))}}catch(ha){}return z}if(null!=z.shape&&null!=z.shape.bounds){U=z.shape.direction;K=z.shape.bounds;var W=z.shape.scale;M=K.width/W;K=K.height/W;if(U==mxConstants.DIRECTION_NORTH||U==mxConstants.DIRECTION_SOUTH)U=M,M=K,K=U;K=z.shape.getConstraints(z.style,M,K);if(null!=K)return K;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;if(null!=z.shape.constraints)return z.shape.constraints}}return null};Graph.prototype.flipEdge=function(z){if(null!=
+z){var K=this.getCurrentCellStyle(z);K=mxUtils.getValue(K,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,K,[z])}};Graph.prototype.isValidRoot=function(z){for(var K=this.model.getChildCount(z),M=0,U=0;U<K;U++){var W=this.model.getChildAt(z,U);this.model.isVertex(W)&&(W=this.getCellGeometry(W),null==W||W.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=
+function(z,K,M){for(var U=this.getCurrentCellStyle(z),W=!0,ha=!0,na=0;na<K.length&&ha;na++)W=W&&this.isTable(K[na]),ha=ha&&this.isTableRow(K[na]);return(1==K.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(U,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(U,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||ha||W))&&!this.isCellLocked(z)};
+Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var K=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(K&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&(K=!1))}return K};Graph.prototype.getPreferredSizeForCell=function(z){var K=mxGraph.prototype.getPreferredSizeForCell.apply(this,
+arguments);null!=K&&(K.width+=10,K.height+=4,this.gridEnabled&&(K.width=this.snap(K.width),K.height=this.snap(K.height)));return K};Graph.prototype.turnShapes=function(z,K){var M=this.getModel(),U=[];M.beginUpdate();try{for(var W=0;W<z.length;W++){var ha=z[W];if(M.isEdge(ha)){var na=M.getTerminal(ha,!0),ua=M.getTerminal(ha,!1);M.setTerminal(ha,ua,!0);M.setTerminal(ha,na,!1);var pa=M.getGeometry(ha);if(null!=pa){pa=pa.clone();null!=pa.points&&pa.points.reverse();var za=pa.getTerminalPoint(!0),Da=pa.getTerminalPoint(!1);
+pa.setTerminalPoint(za,!1);pa.setTerminalPoint(Da,!0);M.setGeometry(ha,pa);var Ma=this.view.getState(ha),La=this.view.getState(na),Ua=this.view.getState(ua);if(null!=Ma){var Sa=null!=La?this.getConnectionConstraint(Ma,La,!0):null,Fa=null!=Ua?this.getConnectionConstraint(Ma,Ua,!1):null;this.setConnectionConstraint(ha,na,!0,Fa);this.setConnectionConstraint(ha,ua,!1,Sa);var va=mxUtils.getValue(Ma.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+mxUtils.getValue(Ma.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[ha]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,va,[ha])}U.push(ha)}}else if(M.isVertex(ha)&&(pa=this.getCellGeometry(ha),null!=pa)){if(!(this.isTable(ha)||this.isTableRow(ha)||this.isTableCell(ha)||this.isSwimlane(ha))){pa=pa.clone();pa.x+=pa.width/2-pa.height/2;pa.y+=pa.height/2-pa.width/2;var ya=pa.width;pa.width=pa.height;pa.height=ya;M.setGeometry(ha,pa)}var Na=this.view.getState(ha);if(null!=Na){var Ja=
+[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Qa=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Ja[mxUtils.mod(mxUtils.indexOf(Ja,Qa)+(K?-1:1),Ja.length)],[ha])}U.push(ha)}}}finally{M.endUpdate()}return U};Graph.prototype.stencilHasPlaceholders=function(z){if(null!=z&&null!=z.fgNode)for(z=z.fgNode.firstChild;null!=z;){if("text"==z.nodeName&&"1"==z.getAttribute("placeholders"))return!0;
+z=z.nextSibling}return!1};var y=Graph.prototype.processChange;Graph.prototype.processChange=function(z){if(z instanceof mxGeometryChange&&(this.isTableCell(z.cell)||this.isTableRow(z.cell))&&(null==z.previous&&null!=z.geometry||null!=z.previous&&!z.previous.equals(z.geometry))){var K=z.cell;this.isTableCell(K)&&(K=this.model.getParent(K));this.isTableRow(K)&&(K=this.model.getParent(K));var M=this.view.getState(K);null!=M&&null!=M.shape&&(this.view.invalidate(K),M.shape.bounds=null)}y.apply(this,arguments);
+z instanceof mxValueChange&&null!=z.cell&&null!=z.cell.value&&"object"==typeof z.cell.value&&this.invalidateDescendantsWithPlaceholders(z.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(z){z=this.model.getDescendants(z);if(0<z.length)for(var K=0;K<z.length;K++){var M=this.view.getState(z[K]);null!=M&&null!=M.shape&&null!=M.shape.stencil&&this.stencilHasPlaceholders(M.shape.stencil)?this.removeStateForCell(z[K]):this.isReplacePlaceholders(z[K])&&this.view.invalidate(z[K],!1,!1)}};
+Graph.prototype.replaceElement=function(z,K){K=z.ownerDocument.createElement(null!=K?K:"span");for(var M=Array.prototype.slice.call(z.attributes);attr=M.pop();)K.setAttribute(attr.nodeName,attr.nodeValue);K.innerHTML=z.innerHTML;z.parentNode.replaceChild(K,z)};Graph.prototype.processElements=function(z,K){if(null!=z){z=z.getElementsByTagName("*");for(var M=0;M<z.length;M++)K(z[M])}};Graph.prototype.updateLabelElements=function(z,K,M){z=null!=z?z:this.getSelectionCells();for(var U=document.createElement("div"),
+W=0;W<z.length;W++)if(this.isHtmlLabel(z[W])){var ha=this.convertValueToString(z[W]);if(null!=ha&&0<ha.length){U.innerHTML=ha;for(var na=U.getElementsByTagName(null!=M?M:"*"),ua=0;ua<na.length;ua++)K(na[ua]);U.innerHTML!=ha&&this.cellLabelChanged(z[W],U.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,K,M){K=Graph.zapGremlins(K);this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var U=z.getAttribute("placeholder"),
+W=z;null!=W;){if(W==this.model.getRoot()||null!=W.value&&"object"==typeof W.value&&W.hasAttribute(U)){this.setAttributeForCell(W,U,K);break}W=this.model.getParent(W)}var ha=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&ha.hasAttribute("label_"+Graph.diagramLanguage)?ha.setAttribute("label_"+Graph.diagramLanguage,K):ha.setAttribute("label",K);K=ha}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=
+z){for(var K=new mxDictionary,M=0;M<z.length;M++)K.put(z[M],!0);var U=[];for(M=0;M<z.length;M++){var W=this.model.getParent(z[M]);null==W||K.get(W)||(K.put(W,!0),U.push(W))}for(M=0;M<U.length;M++)if(W=this.view.getState(U[M]),null!=W&&(this.model.isEdge(W.cell)||this.model.isVertex(W.cell))&&this.isCellDeletable(W.cell)&&this.isTransparentState(W)){for(var ha=!0,na=0;na<this.model.getChildCount(W.cell)&&ha;na++)K.get(this.model.getChildAt(W.cell,na))||(ha=!1);ha&&z.push(W.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
+arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var K=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&K.push(z[M]);z=K;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,K){this.setAttributeForCell(z,"link",K)};Graph.prototype.setTooltipForCell=function(z,K){var M="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(z.value)&&z.value.hasAttribute("tooltip_"+
+Graph.diagramLanguage)&&(M="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(z,M,K)};Graph.prototype.getAttributeForCell=function(z,K,M){z=null!=z.value&&"object"===typeof z.value?z.value.getAttribute(K):null;return null!=z?z:M};Graph.prototype.setAttributeForCell=function(z,K,M){if(null!=z.value&&"object"==typeof z.value)var U=z.value.cloneNode(!0);else U=mxUtils.createXmlDocument().createElement("UserObject"),U.setAttribute("label",z.value||"");null!=M?U.setAttribute(K,M):U.removeAttribute(K);
+this.model.setValue(z,U)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,K,M,U){this.getModel();if(mxEvent.isAltDown(K))return null;for(var W=0;W<z.length;W++){var ha=this.model.getParent(z[W]);if(this.model.isEdge(ha)&&0>mxUtils.indexOf(z,ha))return null}ha=F.apply(this,arguments);var na=!0;for(W=0;W<z.length&&na;W++)na=na&&this.isTableRow(z[W]);na&&(this.isTableCell(ha)&&(ha=this.model.getParent(ha)),this.isTableRow(ha)&&(ha=this.model.getParent(ha)),this.isTable(ha)||
+(ha=null));return ha};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,K){this.isEnabled()&&(K=this.insertTextForEvent(z,K),mxGraph.prototype.dblClick.call(this,z,K))};Graph.prototype.insertTextForEvent=function(z,K){var M=mxUtils.convertPoint(this.container,mxEvent.getClientX(z),mxEvent.getClientY(z));if(null!=z&&!this.model.isVertex(K)){var U=this.model.isEdge(K)?this.view.getState(K):
+null,W=mxEvent.getSource(z);this.firstClickState!=U||this.firstClickSource!=W||null!=U&&null!=U.text&&null!=U.text.node&&null!=U.text.boundingBox&&(mxUtils.contains(U.text.boundingBox,M.x,M.y)||mxUtils.isAncestorNode(U.text.node,mxEvent.getSource(z)))||(null!=U||this.isCellLocked(this.getDefaultParent()))&&(null==U||this.isCellLocked(U.cell))||!(null!=U||mxClient.IS_SVG&&W==this.view.getCanvas().ownerSVGElement)||(null==U&&(U=this.view.getState(this.getCellAt(M.x,M.y))),K=this.addText(M.x,M.y,U))}return K};
+Graph.prototype.getInsertPoint=function(){var z=this.getGridSize(),K=this.container.scrollLeft/this.view.scale-this.view.translate.x,M=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var U=this.getPageLayout(),W=this.getPageSize();K=Math.max(K,U.x*W.width);M=Math.max(M,U.y*W.height)}return new mxPoint(this.snap(K+z),this.snap(M+z))};Graph.prototype.getFreeInsertPoint=function(){var z=this.view,K=this.getGraphBounds(),M=this.getInsertPoint(),U=this.snap(Math.round(Math.max(M.x,
+K.x/z.scale-z.translate.x+(0==K.width?2*this.gridSize:0))));z=this.snap(Math.round(Math.max(M.y,(K.y+K.height)/z.scale-z.translate.y+2*this.gridSize)));return new mxPoint(U,z)};Graph.prototype.getCenterInsertPoint=function(z){z=null!=z?z:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
+2)/this.view.scale-this.view.translate.y-z.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-z.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(z,K,M){var U=new mxCell;U.value="Text";U.geometry=new mxGeometry(0,0,0,0);U.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){U.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
+U.geometry.relative=!0;U.connectable=!1;var W=this.view.getRelativePoint(M,z,K);U.geometry.x=Math.round(1E4*W.x)/1E4;U.geometry.y=Math.round(W.y);U.geometry.offset=new mxPoint(0,0);W=this.view.getPoint(M,U.geometry);var ha=this.view.scale;U.geometry.offset=new mxPoint(Math.round((z-W.x)/ha),Math.round((K-W.y)/ha))}else W=this.view.translate,U.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",U.geometry.width=40,U.geometry.height=20,U.geometry.x=Math.round(z/this.view.scale)-
+W.x-(null!=M?M.origin.x:0),U.geometry.y=Math.round(K/this.view.scale)-W.y-(null!=M?M.origin.y:0),U.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([U],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[U])),this.autoSizeCell(U)}finally{this.getModel().endUpdate()}return U};Graph.prototype.addClickHandler=function(z,K,M){var U=mxUtils.bind(this,function(){var pa=this.container.getElementsByTagName("a");if(null!=pa)for(var za=0;za<pa.length;za++){var Da=
+this.getAbsoluteUrl(pa[za].getAttribute("href"));null!=Da&&(pa[za].setAttribute("rel",this.linkRelation),pa[za].setAttribute("href",Da),null!=K&&mxEvent.addGestureListeners(pa[za],null,null,K))}});this.model.addListener(mxEvent.CHANGE,U);U();var W=this.container.style.cursor,ha=this.getTolerance(),na=this,ua={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(na,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(pa){var za=
pa.sourceState;if(null==za||null==na.getLinkForCell(za.cell))pa=na.getCellAt(pa.getGraphX(),pa.getGraphY(),null,null,null,function(Da,Ma,La){return null==na.getLinkForCell(Da.cell)}),za=null==za||na.model.isAncestor(pa,za.cell)?na.view.getState(pa):null;za!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=za,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(pa,za){this.startX=za.getGraphX();this.startY=za.getGraphY();this.scrollLeft=na.container.scrollLeft;
-this.scrollTop=na.container.scrollTop;null==this.currentLink&&"auto"==na.container.style.overflow&&(na.container.style.cursor="move");this.updateCurrentState(za)},mouseMove:function(pa,za){if(na.isMouseDown)null!=this.currentLink&&(pa=Math.abs(this.startX-za.getGraphX()),za=Math.abs(this.startY-za.getGraphY()),(pa>fa||za>fa)&&this.clear());else{for(pa=za.getSource();null!=pa&&"a"!=pa.nodeName.toLowerCase();)pa=pa.parentNode;null!=pa?this.clear():(null!=na.tooltipHandler&&null!=this.currentLink&&null!=
-this.currentState&&na.tooltipHandler.reset(za,!0,this.currentState),(null==this.currentState||za.getState()!=this.currentState&&null!=za.sourceState||!na.intersects(this.currentState,za.getGraphX(),za.getGraphY()))&&this.updateCurrentState(za))}},mouseUp:function(pa,za){var Da=za.getSource();for(pa=za.getEvent();null!=Da&&"a"!=Da.nodeName.toLowerCase();)Da=Da.parentNode;null==Da&&Math.abs(this.scrollLeft-na.container.scrollLeft)<fa&&Math.abs(this.scrollTop-na.container.scrollTop)<fa&&(null==za.sourceState||
-!za.isSource(za.sourceState.control))&&((mxEvent.isLeftMouseButton(pa)||mxEvent.isMiddleMouseButton(pa))&&!mxEvent.isPopupTrigger(pa)||mxEvent.isTouchEvent(pa))&&(null!=this.currentLink?(Da=na.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&Da||null==L||L(pa,this.currentLink),mxEvent.isConsumed(pa)||(pa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(pa)?"_blank":Da?na.linkTarget:"_top",na.openLink(this.currentLink,pa),za.consume())):null!=M&&!za.isConsumed()&&
-Math.abs(this.scrollLeft-na.container.scrollLeft)<fa&&Math.abs(this.scrollTop-na.container.scrollTop)<fa&&Math.abs(this.startX-za.getGraphX())<fa&&Math.abs(this.startY-za.getGraphY())<fa&&M(za.getEvent()));this.clear()},activate:function(pa){this.currentLink=na.getAbsoluteUrl(na.getLinkForCell(pa.cell));null!=this.currentLink&&(this.currentTarget=na.getLinkTargetForCell(pa.cell),na.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(pa))},clear:function(){null!=na.container&&
-(na.container.style.cursor=X);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=na.tooltipHandler&&na.tooltipHandler.hide()}};na.click=function(pa){};na.addMouseListener(ua);mxEvent.addListener(document,"mouseleave",function(pa){ua.clear()})};Graph.prototype.duplicateCells=function(z,L){z=null!=z?z:this.getSelectionCells();L=null!=L?L:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);
-var U=this.getModel(),X=this.gridSize,fa=[];U.beginUpdate();try{var na={},ua=this.createCellLookup(z),pa=this.cloneCells(z,!1,na,!0);for(M=0;M<z.length;M++){var za=U.getParent(z[M]);if(null!=za){var Da=this.moveCells([pa[M]],X,X,!1)[0];fa.push(Da);if(L)U.add(za,pa[M]);else{var Ma=za.getIndex(z[M]);U.add(za,pa[M],Ma+1)}if(this.isTable(za)){var La=this.getCellGeometry(pa[M]),Ua=this.getCellGeometry(za);null!=La&&null!=Ua&&(Ua=Ua.clone(),Ua.height+=La.height,U.setGeometry(za,Ua))}}else fa.push(pa[M])}this.updateCustomLinks(this.createCellMapping(na,
-ua),pa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",pa))}finally{U.endUpdate()}return fa};Graph.prototype.insertImage=function(z,L,M){if(null!=z&&null!=this.cellEditor.textarea){for(var U=this.cellEditor.textarea.getElementsByTagName("img"),X=[],fa=0;fa<U.length;fa++)X.push(U[fa]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==X.length+1)for(fa=z.length-1;0<=fa;fa--)if(0==fa||z[fa]!=X[fa-1]){z[fa].setAttribute("width",
-L);z[fa].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var L=this.cellEditor.textarea.getElementsByTagName("a"),M=[],U=0;U<L.length;U++)M.push(L[U]);document.execCommand("createlink",!1,mxUtils.trim(z));L=this.cellEditor.textarea.getElementsByTagName("a");if(L.length==M.length+1)for(U=L.length-1;0<=U;U--)if(L[U]!=M[U-1]){for(L=L[U].getElementsByTagName("a");0<L.length;){for(M=
-L[0].parentNode;null!=L[0].firstChild;)M.insertBefore(L[0].firstChild,L[0]);M.removeChild(L[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(z))};Graph.prototype.isCellResizable=function(z){var L=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(L||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,L){null==
-L&&(L=this.getSelectionCells());if(null!=L&&1<L.length){for(var M=[],U=null,X=null,fa=0;fa<L.length;fa++)if(this.getModel().isVertex(L[fa])){var na=this.view.getState(L[fa]);if(null!=na){var ua=z?na.getCenterX():na.getCenterY();U=null!=U?Math.max(U,ua):ua;X=null!=X?Math.min(X,ua):ua;M.push(na)}}if(2<M.length){M.sort(function(Ma,La){return z?Ma.x-La.x:Ma.y-La.y});na=this.view.translate;ua=this.view.scale;X=X/ua-(z?na.x:na.y);U=U/ua-(z?na.x:na.y);this.getModel().beginUpdate();try{var pa=(U-X)/(M.length-
-1);U=X;for(fa=1;fa<M.length-1;fa++){var za=this.view.getState(this.model.getParent(M[fa].cell)),Da=this.getCellGeometry(M[fa].cell);U+=pa;null!=Da&&null!=za&&(Da=Da.clone(),z?Da.x=Math.round(U-Da.width/2)-za.origin.x:Da.y=Math.round(U-Da.height/2)-za.origin.y,this.getModel().setGeometry(M[fa].cell,Da))}}finally{this.getModel().endUpdate()}}}return L};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=
-function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(L,M){return this.getLinkForCell(L.cell)});return z};Graph.prototype.parseBackgroundImage=function(z){var L=null;null!=z&&0<z.length&&(z=JSON.parse(z),L=new mxImage(z.src,z.width,z.height));return L};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,L,M,U,X,fa,na,ua,pa,za,Da,Ma,La,Ua){var Ra=null;if(null!=Ua)for(Ra=new mxDictionary,Da=0;Da<Ua.length;Da++)Ra.put(Ua[Da],
-!0);if(Ua=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{L=null!=L?L:1;M=null!=M?M:0;X=null!=X?X:!0;fa=null!=fa?fa:!0;na=null!=na?na:!0;za=null!=za?za:!1;var Fa="page"==La?this.view.getBackgroundPageBounds():fa&&null==Ra||U||"diagram"==La?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),va=this.view.scale;"diagram"==La&&null!=this.backgroundImage&&(Fa=mxRectangle.fromRectangle(Fa),Fa.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*
-va,(this.view.translate.y+this.backgroundImage.y)*va,this.backgroundImage.width*va,this.backgroundImage.height*va)));if(null==Fa)throw Error(mxResources.get("drawingEmpty"));U=L/va;La=X?-.5:0;var ya=Graph.createSvgNode(La,La,Math.max(1,Math.ceil(Fa.width*U)+2*M)+(za&&0==M?5:0),Math.max(1,Math.ceil(Fa.height*U)+2*M)+(za&&0==M?5:0),z),Na=ya.ownerDocument,Ja=null!=Na.createElementNS?Na.createElementNS(mxConstants.NS_SVG,"g"):Na.createElement("g");ya.appendChild(Ja);var Pa=this.createSvgCanvas(Ja);Pa.foOffset=
-X?-.5:0;Pa.textOffset=X?-.5:0;Pa.imageOffset=X?-.5:0;Pa.translate(Math.floor(M/L-Fa.x/va),Math.floor(M/L-Fa.y/va));var Ya=document.createElement("div"),cb=Pa.getAlternateText;Pa.getAlternateText=function(db,kb,ib,nb,vb,mb,Bb,yb,lb,ob,gb,rb,tb){if(null!=mb&&0<this.state.fontSize)try{mxUtils.isNode(mb)?mb=mb.innerText:(Ya.innerHTML=mb,mb=mxUtils.extractTextWithWhitespace(Ya.childNodes));for(var zb=Math.ceil(2*nb/this.state.fontSize),wb=[],Ab=0,pb=0;(0==zb||Ab<zb)&&pb<mb.length;){var xb=mb.charCodeAt(pb);
-if(10==xb||13==xb){if(0<Ab)break}else wb.push(mb.charAt(pb)),255>xb&&Ab++;pb++}wb.length<mb.length&&1<mb.length-wb.length&&(mb=mxUtils.trim(wb.join(""))+"...");return mb}catch(c){return cb.apply(this,arguments)}else return cb.apply(this,arguments)};var fb=this.backgroundImage;if(null!=fb){z=va/L;var qb=this.view.translate;La=new mxRectangle((fb.x+qb.x)*z,(fb.y+qb.y)*z,fb.width*z,fb.height*z);mxUtils.intersects(Fa,La)&&Pa.image(fb.x+qb.x,fb.y+qb.y,fb.width,fb.height,fb.src,!0)}Pa.scale(U);Pa.textEnabled=
-na;ua=null!=ua?ua:this.createSvgImageExport();var ub=ua.drawCellState,ab=ua.getLinkForCellState;ua.getLinkForCellState=function(db,kb){var ib=ab.apply(this,arguments);return null==ib||db.view.graph.isCustomLink(ib)?null:ib};ua.getLinkTargetForCellState=function(db,kb){return db.view.graph.getLinkTargetForCell(db.cell)};ua.drawCellState=function(db,kb){for(var ib=db.view.graph,nb=null!=Ra?Ra.get(db.cell):ib.isCellSelected(db.cell),vb=ib.model.getParent(db.cell);!(fa&&null==Ra||nb)&&null!=vb;)nb=null!=
-Ra?Ra.get(vb):ib.isCellSelected(vb),vb=ib.model.getParent(vb);(fa&&null==Ra||nb)&&ub.apply(this,arguments)};ua.drawState(this.getView().getState(this.model.root),Pa);this.updateSvgLinks(ya,pa,!0);this.addForeignObjectWarning(Pa,ya);return ya}finally{Ua&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(z,L){if("0"!=urlParams["svg-warning"]&&0<L.getElementsByTagName("foreignObject").length){var M=z.createElement("switch"),U=z.createElement("g");
-U.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var X=z.createElement("a");X.setAttribute("transform","translate(0,-5)");null==X.setAttributeNS||L.ownerDocument!=document&&null==document.documentMode?(X.setAttribute("xlink:href",Graph.foreignObjectWarningLink),X.setAttribute("target","_blank")):(X.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),X.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));z=z.createElement("text");
-z.setAttribute("text-anchor","middle");z.setAttribute("font-size","10px");z.setAttribute("x","50%");z.setAttribute("y","100%");mxUtils.write(z,Graph.foreignObjectWarningText);M.appendChild(U);X.appendChild(z);M.appendChild(X);L.appendChild(M)}};Graph.prototype.updateSvgLinks=function(z,L,M){z=z.getElementsByTagName("a");for(var U=0;U<z.length;U++)if(null==z[U].getAttribute("target")){var X=z[U].getAttribute("href");null==X&&(X=z[U].getAttribute("xlink:href"));null!=X&&(null!=L&&/^https?:\/\//.test(X)?
-z[U].setAttribute("target",L):M&&this.isCustomLink(X)&&z[U].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(z){z=new mxSvgCanvas2D(z);z.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;z.pointerEvents=!0;return z};Graph.prototype.getSelectedElement=function(){var z=null;if(window.getSelection){var L=window.getSelection();L.getRangeAt&&L.rangeCount&&(z=L.getRangeAt(0).commonAncestorContainer)}else document.selection&&(z=document.selection.createRange().parentElement());
-return z};Graph.prototype.getSelectedEditingElement=function(){for(var z=this.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=z.parentNode;null!=z&&z==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(z=this.cellEditor.textarea.firstChild);return z};Graph.prototype.getParentByName=function(z,L,M){for(;null!=z&&z.nodeName!=L;){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.getParentByNames=
-function(z,L,M){for(;null!=z&&!(0<=mxUtils.indexOf(L,z.nodeName));){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.selectNode=function(z){var L=null;if(window.getSelection){if(L=window.getSelection(),L.getRangeAt&&L.rangeCount){var M=document.createRange();M.selectNode(z);L.removeAllRanges();L.addRange(M)}}else(L=document.selection)&&"Control"!=L.type&&(z=L.createRange(),z.collapse(!0),M=L.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,
-L,M){var U=this.getCellGeometry(z);if(null!=U){U=U.clone();if(null!=U.points)for(var X=0;X<U.points.length;X++)L?U.points[X].x=M+(M-U.points[X].x):U.points[X].y=M+(M-U.points[X].y);X=function(fa){null!=fa&&(L?fa.x=M+(M-fa.x):fa.y=M+(M-fa.y))};X(U.getTerminalPoint(!0));X(U.getTerminalPoint(!1));this.model.setGeometry(z,U)}};Graph.prototype.flipChildren=function(z,L,M){this.model.beginUpdate();try{for(var U=this.model.getChildCount(z),X=0;X<U;X++){var fa=this.model.getChildAt(z,X);if(this.model.isEdge(fa))this.flipEdgePoints(fa,
-L,M);else{var na=this.getCellGeometry(fa);null!=na&&(na=na.clone(),L?na.x=M+(M-na.x-na.width):na.y=M+(M-na.y-na.height),this.model.setGeometry(fa,na))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(z,L){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],U=0;U<z.length;U++)if(this.model.isEdge(z[U])){var X=this.view.getState(z[U]);null!=X&&this.flipEdgePoints(z[U],L,(L?X.getCenterX():X.getCenterY())/this.view.scale-(L?X.origin.x:X.origin.y)-(L?this.view.translate.x:
-this.view.translate.y))}else{var fa=this.getCellGeometry(z[U]);null!=fa&&this.flipChildren(z[U],L,L?fa.getCenterX()-fa.x:fa.getCenterY()-fa.y);M.push(z[U])}this.toggleCellStyles(L?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,L){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var U=0;U<z.length;U++){var X=this.model.getParent(z[U]);if(this.isTable(X)){var fa=this.getCellGeometry(z[U]),na=this.getCellGeometry(X);
-null!=fa&&null!=na&&(na=na.clone(),na.height-=fa.height,this.model.setGeometry(X,na))}}var ua=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,L)}finally{this.model.endUpdate()}if(null!=ua)for(M=[],U=0;U<ua.length;U++)this.model.contains(ua[U])&&(this.model.isVertex(ua[U])||this.model.isEdge(ua[U]))&&M.push(ua[U])}return M};Graph.prototype.insertTableColumn=function(z,L){var M=this.getModel();M.beginUpdate();try{var U=z,X=0;if(this.isTableCell(z)){var fa=M.getParent(z);
-U=M.getParent(fa);X=mxUtils.indexOf(M.getChildCells(fa,!0),z)}else this.isTableRow(z)?U=M.getParent(z):z=M.getChildCells(U,!0)[0],L||(X=M.getChildCells(z,!0).length-1);var na=M.getChildCells(U,!0),ua=Graph.minTableColumnWidth;for(z=0;z<na.length;z++){var pa=M.getChildCells(na[z],!0)[X],za=M.cloneCell(pa,!1),Da=this.getCellGeometry(za);za.value=null;za.style=mxUtils.setStyle(mxUtils.setStyle(za.style,"rowspan",null),"colspan",null);if(null!=Da){null!=Da.alternateBounds&&(Da.width=Da.alternateBounds.width,
-Da.height=Da.alternateBounds.height,Da.alternateBounds=null);ua=Da.width;var Ma=this.getCellGeometry(na[z]);null!=Ma&&(Da.height=Ma.height)}M.add(na[z],za,X+(L?0:1))}var La=this.getCellGeometry(U);null!=La&&(La=La.clone(),La.width+=ua,M.setGeometry(U,La))}finally{M.endUpdate()}};Graph.prototype.deleteLane=function(z){var L=this.getModel();L.beginUpdate();try{var M=null;M="stackLayout"==this.getCurrentCellStyle(z).childLayout?z:L.getParent(z);var U=L.getChildCells(M,!0);0==U.length?L.remove(M):(M==
-z&&(z=U[U.length-1]),L.remove(z))}finally{L.endUpdate()}};Graph.prototype.insertLane=function(z,L){var M=this.getModel();M.beginUpdate();try{var U=null;if("stackLayout"==this.getCurrentCellStyle(z).childLayout){U=z;var X=M.getChildCells(U,!0);z=X[L?0:X.length-1]}else U=M.getParent(z);var fa=U.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(U,z,fa+(L?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,L){var M=this.getModel();M.beginUpdate();try{var U=z,X=z;if(this.isTableCell(z))X=
-M.getParent(z),U=M.getParent(X);else if(this.isTableRow(z))U=M.getParent(z);else{var fa=M.getChildCells(U,!0);X=fa[L?0:fa.length-1]}var na=M.getChildCells(X,!0),ua=U.getIndex(X);X=M.cloneCell(X,!1);X.value=null;var pa=this.getCellGeometry(X);if(null!=pa){for(fa=0;fa<na.length;fa++){z=M.cloneCell(na[fa],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var za=this.getCellGeometry(z);null!=za&&(null!=za.alternateBounds&&(za.width=za.alternateBounds.width,
-za.height=za.alternateBounds.height,za.alternateBounds=null),za.height=pa.height);X.insert(z)}M.add(U,X,ua+(L?0:1));var Da=this.getCellGeometry(U);null!=Da&&(Da=Da.clone(),Da.height+=pa.height,M.setGeometry(U,Da))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&(U=L.getParent(z));this.isTableRow(U)&&(M=L.getParent(U));var X=L.getChildCells(M,!0);if(0==X.length)L.remove(M);else{this.isTableRow(U)||(U=
-X[0]);var fa=L.getChildCells(U,!0);if(1>=fa.length)L.remove(M);else{var na=fa.length-1;this.isTableCell(z)&&(na=mxUtils.indexOf(fa,z));for(U=z=0;U<X.length;U++){var ua=L.getChildCells(X[U],!0)[na];L.remove(ua);var pa=this.getCellGeometry(ua);null!=pa&&(z=Math.max(z,pa.width))}var za=this.getCellGeometry(M);null!=za&&(za=za.clone(),za.width-=z,L.setGeometry(M,za))}}}finally{L.endUpdate()}};Graph.prototype.deleteTableRow=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&
-(z=U=L.getParent(z));this.isTableRow(z)&&(M=L.getParent(U));var X=L.getChildCells(M,!0);if(1>=X.length)L.remove(M);else{this.isTableRow(U)||(U=X[X.length-1]);L.remove(U);z=0;var fa=this.getCellGeometry(U);null!=fa&&(z=fa.height);var na=this.getCellGeometry(M);null!=na&&(na=na.clone(),na.height-=z,L.setGeometry(M,na))}}finally{L.endUpdate()}};Graph.prototype.insertRow=function(z,L){for(var M=z.tBodies[0],U=M.rows[0].cells,X=z=0;X<U.length;X++){var fa=U[X].getAttribute("colspan");z+=null!=fa?parseInt(fa):
-1}L=M.insertRow(L);for(X=0;X<z;X++)mxUtils.br(L.insertCell(-1));return L.cells[0]};Graph.prototype.deleteRow=function(z,L){z.tBodies[0].deleteRow(L)};Graph.prototype.insertColumn=function(z,L){var M=z.tHead;if(null!=M)for(var U=0;U<M.rows.length;U++){var X=document.createElement("th");M.rows[U].appendChild(X);mxUtils.br(X)}z=z.tBodies[0];for(M=0;M<z.rows.length;M++)U=z.rows[M].insertCell(L),mxUtils.br(U);return z.rows[0].cells[0<=L?L:z.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(z,
-L){if(0<=L){z=z.tBodies[0].rows;for(var M=0;M<z.length;M++)z[M].cells.length>L&&z[M].deleteCell(L)}};Graph.prototype.pasteHtmlAtCaret=function(z){if(window.getSelection){var L=window.getSelection();if(L.getRangeAt&&L.rangeCount){L=L.getRangeAt(0);L.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var U;U=M.firstChild;)lastNode=z.appendChild(U);L.insertNode(z)}}else(L=document.selection)&&"Control"!=L.type&&L.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=
-function(z,L){function M(X,fa){X.length>fa&&(X=X.substring(0,Math.round(fa/2))+"..."+X.substring(X.length-Math.round(fa/4)));return X}z=null!=z?z:"javascript:void(0);";if(null==L||0==L.length)L=this.isCustomLink(z)?this.getLinkTitle(z):z;var U=document.createElement("a");U.setAttribute("rel",this.linkRelation);U.setAttribute("href",this.getAbsoluteUrl(z));U.setAttribute("title",M(this.isCustomLink(z)?this.getLinkTitle(z):z,80));null!=this.linkTarget&&U.setAttribute("target",this.linkTarget);mxUtils.write(U,
-M(L,40));this.isCustomLink(z)&&mxEvent.addListener(U,"click",mxUtils.bind(this,function(X){this.customLinkClicked(z);mxEvent.consume(X)}));return U};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(fa,na){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(fa){fa=z.apply(this,arguments);if(mxEvent.isTouchEvent(fa.getEvent())&&
-null==fa.getState()){var na=this.getCellAt(fa.graphX,fa.graphY);null!=na&&this.isSwimlane(na)&&this.hitsSwimlaneContent(na,fa.graphX,fa.graphY)||(fa.state=this.view.getState(na),null!=fa.state&&null!=fa.state.shape&&(this.container.style.cursor=fa.state.shape.node.style.cursor))}null==fa.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return fa};var L=!1,M=!1,U=!1,X=this.fireMouseEvent;this.fireMouseEvent=function(fa,na,ua){fa==mxEvent.MOUSE_DOWN&&(na=this.updateMouseEvent(na),
-L=this.isCellSelected(na.getCell()),M=this.isSelectionEmpty(),U=this.popupMenuHandler.isMenuShowing());X.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(fa,na){var ua=mxEvent.isMouseEvent(na.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==na.getState()||!na.isSource(na.getState().control))&&(this.popupMenuHandler.popupTrigger||!U&&!ua&&(M&&null==na.getCell()&&this.isSelectionEmpty()||L&&this.isCellSelected(na.getCell())));
-ua=!L||ua?null:mxUtils.bind(this,function(pa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var za=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(na.getX()+za.x+1,na.getY()+za.y+1,pa,na.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[fa,na,ua])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=
-this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():document.getSelection?z=document.getSelection():document.selection&&(z=document.selection.createRange().text);return""!=z};mxCellEditor.prototype.insertTab=function(z){var L=this.textarea.ownerDocument.defaultView.getSelection(),M=L.getRangeAt(0),U="\t";if(null!=z)for(U="";0<z;)U+=" ",z--;z=document.createElement("span");
-z.style.whiteSpace="pre";z.appendChild(document.createTextNode(U));M.insertNode(z);M.setStartAfter(z);M.setEndAfter(z);L.removeAllRanges();L.addRange(M)};mxCellEditor.prototype.alignText=function(z,L){var M=null!=L&&mxEvent.isShiftDown(L);if(M||null!=window.getSelection&&null!=window.getSelection().containsNode){var U=!0;this.graph.processElements(this.textarea,function(X){M||window.getSelection().containsNode(X,!0)?(X.removeAttribute("align"),X.style.textAlign=null):U=!1});U&&this.graph.cellEditor.setAlign(z)}document.execCommand("justify"+
-z.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var z=window.getSelection();if(z.getRangeAt&&z.rangeCount){for(var L=[],M=0,U=z.rangeCount;M<U;++M)L.push(z.getRangeAt(M));return L}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(z){try{if(z)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var L=0,M=z.length;L<
-M;++L)sel.addRange(z[L])}else document.selection&&z.select&&z.select()}catch(U){}};var C=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(z){null!=z.text&&(z.text.replaceLinefeeds="0"!=mxUtils.getValue(z.style,"nl2Br","1"));C.apply(this,arguments)};var I=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(z,L){this.isKeepFocusEvent(z)||!mxEvent.isAltDown(z.getEvent())?I.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=
-function(z){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var G=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(z,L){z=this.graph.getStartEditingCell(z,L);G.apply(this,arguments);var M=this.graph.view.getState(z);this.textarea.className=null!=M&&1==M.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(z);
-M=this.graph.getModel().getParent(z);var U=this.graph.getCellGeometry(z);if(this.graph.getModel().isEdge(M)&&null!=U&&U.relative||this.graph.getModel().isEdge(z))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var aa=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function L(X,fa){fa.originalNode=X;X=X.firstChild;for(var na=fa.firstChild;null!=X&&null!=na;)L(X,na),X=X.nextSibling,na=na.nextSibling;
-return fa}function M(X,fa){if(null!=X)if(fa.originalNode!=X)U(X);else for(X=X.firstChild,fa=fa.firstChild;null!=X;){var na=X.nextSibling;null==fa?U(X):(M(X,fa),fa=fa.nextSibling);X=na}}function U(X){for(var fa=X.firstChild;null!=fa;){var na=fa.nextSibling;U(fa);fa=na}1==X.nodeType&&("BR"===X.nodeName||null!=X.firstChild)||3==X.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(X)).length?(3==X.nodeType&&mxUtils.setTextContent(X,mxUtils.getTextContent(X).replace(/\n|\r/g,"")),1==X.nodeType&&(X.removeAttribute("style"),
-X.removeAttribute("class"),X.removeAttribute("width"),X.removeAttribute("cellpadding"),X.removeAttribute("cellspacing"),X.removeAttribute("border"))):X.parentNode.removeChild(X)}aa.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(X){var fa=L(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
-0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,fa):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var z=this.graph.view.getState(this.editingCell);if(null!=z){var L=null!=z&&"0"!=mxUtils.getValue(z.style,"nl2Br","1"),M=this.saveSelection();if(this.codeViewMode){ua=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ua.length&&"\n"==ua.charAt(ua.length-1)&&(ua=ua.substring(0,ua.length-1));ua=this.graph.sanitizeHtml(L?
-ua.replace(/\n/g,"<br/>"):ua,!0);this.textarea.className="mxCellEditor geContentEditable";pa=mxUtils.getValue(z.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);L=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var U=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),X=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,fa=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,
+this.scrollTop=na.container.scrollTop;null==this.currentLink&&"auto"==na.container.style.overflow&&(na.container.style.cursor="move");this.updateCurrentState(za)},mouseMove:function(pa,za){if(na.isMouseDown)null!=this.currentLink&&(pa=Math.abs(this.startX-za.getGraphX()),za=Math.abs(this.startY-za.getGraphY()),(pa>ha||za>ha)&&this.clear());else{for(pa=za.getSource();null!=pa&&"a"!=pa.nodeName.toLowerCase();)pa=pa.parentNode;null!=pa?this.clear():(null!=na.tooltipHandler&&null!=this.currentLink&&null!=
+this.currentState&&na.tooltipHandler.reset(za,!0,this.currentState),(null==this.currentState||za.getState()!=this.currentState&&null!=za.sourceState||!na.intersects(this.currentState,za.getGraphX(),za.getGraphY()))&&this.updateCurrentState(za))}},mouseUp:function(pa,za){var Da=za.getSource();for(pa=za.getEvent();null!=Da&&"a"!=Da.nodeName.toLowerCase();)Da=Da.parentNode;null==Da&&Math.abs(this.scrollLeft-na.container.scrollLeft)<ha&&Math.abs(this.scrollTop-na.container.scrollTop)<ha&&(null==za.sourceState||
+!za.isSource(za.sourceState.control))&&((mxEvent.isLeftMouseButton(pa)||mxEvent.isMiddleMouseButton(pa))&&!mxEvent.isPopupTrigger(pa)||mxEvent.isTouchEvent(pa))&&(null!=this.currentLink?(Da=na.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&Da||null==K||K(pa,this.currentLink),mxEvent.isConsumed(pa)||(pa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(pa)?"_blank":Da?na.linkTarget:"_top",na.openLink(this.currentLink,pa),za.consume())):null!=M&&!za.isConsumed()&&
+Math.abs(this.scrollLeft-na.container.scrollLeft)<ha&&Math.abs(this.scrollTop-na.container.scrollTop)<ha&&Math.abs(this.startX-za.getGraphX())<ha&&Math.abs(this.startY-za.getGraphY())<ha&&M(za.getEvent()));this.clear()},activate:function(pa){this.currentLink=na.getAbsoluteUrl(na.getLinkForCell(pa.cell));null!=this.currentLink&&(this.currentTarget=na.getLinkTargetForCell(pa.cell),na.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(pa))},clear:function(){null!=na.container&&
+(na.container.style.cursor=W);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=na.tooltipHandler&&na.tooltipHandler.hide()}};na.click=function(pa){};na.addMouseListener(ua);mxEvent.addListener(document,"mouseleave",function(pa){ua.clear()})};Graph.prototype.duplicateCells=function(z,K){z=null!=z?z:this.getSelectionCells();K=null!=K?K:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);
+var U=this.getModel(),W=this.gridSize,ha=[];U.beginUpdate();try{var na={},ua=this.createCellLookup(z),pa=this.cloneCells(z,!1,na,!0);for(M=0;M<z.length;M++){var za=U.getParent(z[M]);if(null!=za){var Da=this.moveCells([pa[M]],W,W,!1)[0];ha.push(Da);if(K)U.add(za,pa[M]);else{var Ma=za.getIndex(z[M]);U.add(za,pa[M],Ma+1)}if(this.isTable(za)){var La=this.getCellGeometry(pa[M]),Ua=this.getCellGeometry(za);null!=La&&null!=Ua&&(Ua=Ua.clone(),Ua.height+=La.height,U.setGeometry(za,Ua))}}else ha.push(pa[M])}this.updateCustomLinks(this.createCellMapping(na,
+ua),pa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",pa))}finally{U.endUpdate()}return ha};Graph.prototype.insertImage=function(z,K,M){if(null!=z&&null!=this.cellEditor.textarea){for(var U=this.cellEditor.textarea.getElementsByTagName("img"),W=[],ha=0;ha<U.length;ha++)W.push(U[ha]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==W.length+1)for(ha=z.length-1;0<=ha;ha--)if(0==ha||z[ha]!=W[ha-1]){z[ha].setAttribute("width",
+K);z[ha].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var K=this.cellEditor.textarea.getElementsByTagName("a"),M=[],U=0;U<K.length;U++)M.push(K[U]);document.execCommand("createlink",!1,mxUtils.trim(z));K=this.cellEditor.textarea.getElementsByTagName("a");if(K.length==M.length+1)for(U=K.length-1;0<=U;U--)if(K[U]!=M[U-1]){for(K=K[U].getElementsByTagName("a");0<K.length;){for(M=
+K[0].parentNode;null!=K[0].firstChild;)M.insertBefore(K[0].firstChild,K[0]);M.removeChild(K[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(z))};Graph.prototype.isCellResizable=function(z){var K=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(K||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,K){null==
+K&&(K=this.getSelectionCells());if(null!=K&&1<K.length){for(var M=[],U=null,W=null,ha=0;ha<K.length;ha++)if(this.getModel().isVertex(K[ha])){var na=this.view.getState(K[ha]);if(null!=na){var ua=z?na.getCenterX():na.getCenterY();U=null!=U?Math.max(U,ua):ua;W=null!=W?Math.min(W,ua):ua;M.push(na)}}if(2<M.length){M.sort(function(Ma,La){return z?Ma.x-La.x:Ma.y-La.y});na=this.view.translate;ua=this.view.scale;W=W/ua-(z?na.x:na.y);U=U/ua-(z?na.x:na.y);this.getModel().beginUpdate();try{var pa=(U-W)/(M.length-
+1);U=W;for(ha=1;ha<M.length-1;ha++){var za=this.view.getState(this.model.getParent(M[ha].cell)),Da=this.getCellGeometry(M[ha].cell);U+=pa;null!=Da&&null!=za&&(Da=Da.clone(),z?Da.x=Math.round(U-Da.width/2)-za.origin.x:Da.y=Math.round(U-Da.height/2)-za.origin.y,this.getModel().setGeometry(M[ha].cell,Da))}}finally{this.getModel().endUpdate()}}}return K};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=
+function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(K,M){return this.getLinkForCell(K.cell)});return z};Graph.prototype.parseBackgroundImage=function(z){var K=null;null!=z&&0<z.length&&(z=JSON.parse(z),K=new mxImage(z.src,z.width,z.height));return K};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,K,M,U,W,ha,na,ua,pa,za,Da,Ma,La,Ua){var Sa=null;if(null!=Ua)for(Sa=new mxDictionary,Da=0;Da<Ua.length;Da++)Sa.put(Ua[Da],
+!0);if(Ua=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{K=null!=K?K:1;M=null!=M?M:0;W=null!=W?W:!0;ha=null!=ha?ha:!0;na=null!=na?na:!0;za=null!=za?za:!1;var Fa="page"==La?this.view.getBackgroundPageBounds():ha&&null==Sa||U||"diagram"==La?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),va=this.view.scale;"diagram"==La&&null!=this.backgroundImage&&(Fa=mxRectangle.fromRectangle(Fa),Fa.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*
+va,(this.view.translate.y+this.backgroundImage.y)*va,this.backgroundImage.width*va,this.backgroundImage.height*va)));if(null==Fa)throw Error(mxResources.get("drawingEmpty"));U=K/va;La=W?-.5:0;var ya=Graph.createSvgNode(La,La,Math.max(1,Math.ceil(Fa.width*U)+2*M)+(za&&0==M?5:0),Math.max(1,Math.ceil(Fa.height*U)+2*M)+(za&&0==M?5:0),z),Na=ya.ownerDocument,Ja=null!=Na.createElementNS?Na.createElementNS(mxConstants.NS_SVG,"g"):Na.createElement("g");ya.appendChild(Ja);var Qa=this.createSvgCanvas(Ja);Qa.foOffset=
+W?-.5:0;Qa.textOffset=W?-.5:0;Qa.imageOffset=W?-.5:0;Qa.translate(Math.floor(M/K-Fa.x/va),Math.floor(M/K-Fa.y/va));var Za=document.createElement("div"),cb=Qa.getAlternateText;Qa.getAlternateText=function(db,kb,ib,ob,vb,nb,Bb,yb,mb,pb,gb,rb,tb){if(null!=nb&&0<this.state.fontSize)try{mxUtils.isNode(nb)?nb=nb.innerText:(Za.innerHTML=nb,nb=mxUtils.extractTextWithWhitespace(Za.childNodes));for(var zb=Math.ceil(2*ob/this.state.fontSize),wb=[],Ab=0,lb=0;(0==zb||Ab<zb)&&lb<nb.length;){var xb=nb.charCodeAt(lb);
+if(10==xb||13==xb){if(0<Ab)break}else wb.push(nb.charAt(lb)),255>xb&&Ab++;lb++}wb.length<nb.length&&1<nb.length-wb.length&&(nb=mxUtils.trim(wb.join(""))+"...");return nb}catch(c){return cb.apply(this,arguments)}else return cb.apply(this,arguments)};var fb=this.backgroundImage;if(null!=fb){z=va/K;var qb=this.view.translate;La=new mxRectangle((fb.x+qb.x)*z,(fb.y+qb.y)*z,fb.width*z,fb.height*z);mxUtils.intersects(Fa,La)&&Qa.image(fb.x+qb.x,fb.y+qb.y,fb.width,fb.height,fb.src,!0)}Qa.scale(U);Qa.textEnabled=
+na;ua=null!=ua?ua:this.createSvgImageExport();var ub=ua.drawCellState,ab=ua.getLinkForCellState;ua.getLinkForCellState=function(db,kb){var ib=ab.apply(this,arguments);return null==ib||db.view.graph.isCustomLink(ib)?null:ib};ua.getLinkTargetForCellState=function(db,kb){return db.view.graph.getLinkTargetForCell(db.cell)};ua.drawCellState=function(db,kb){for(var ib=db.view.graph,ob=null!=Sa?Sa.get(db.cell):ib.isCellSelected(db.cell),vb=ib.model.getParent(db.cell);!(ha&&null==Sa||ob)&&null!=vb;)ob=null!=
+Sa?Sa.get(vb):ib.isCellSelected(vb),vb=ib.model.getParent(vb);(ha&&null==Sa||ob)&&ub.apply(this,arguments)};ua.drawState(this.getView().getState(this.model.root),Qa);this.updateSvgLinks(ya,pa,!0);this.addForeignObjectWarning(Qa,ya);return ya}finally{Ua&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(z,K){if("0"!=urlParams["svg-warning"]&&0<K.getElementsByTagName("foreignObject").length){var M=z.createElement("switch"),U=z.createElement("g");
+U.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var W=z.createElement("a");W.setAttribute("transform","translate(0,-5)");null==W.setAttributeNS||K.ownerDocument!=document&&null==document.documentMode?(W.setAttribute("xlink:href",Graph.foreignObjectWarningLink),W.setAttribute("target","_blank")):(W.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),W.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));z=z.createElement("text");
+z.setAttribute("text-anchor","middle");z.setAttribute("font-size","10px");z.setAttribute("x","50%");z.setAttribute("y","100%");mxUtils.write(z,Graph.foreignObjectWarningText);M.appendChild(U);W.appendChild(z);M.appendChild(W);K.appendChild(M)}};Graph.prototype.updateSvgLinks=function(z,K,M){z=z.getElementsByTagName("a");for(var U=0;U<z.length;U++)if(null==z[U].getAttribute("target")){var W=z[U].getAttribute("href");null==W&&(W=z[U].getAttribute("xlink:href"));null!=W&&(null!=K&&/^https?:\/\//.test(W)?
+z[U].setAttribute("target",K):M&&this.isCustomLink(W)&&z[U].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(z){z=new mxSvgCanvas2D(z);z.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;z.pointerEvents=!0;return z};Graph.prototype.getSelectedElement=function(){var z=null;if(window.getSelection){var K=window.getSelection();K.getRangeAt&&K.rangeCount&&(z=K.getRangeAt(0).commonAncestorContainer)}else document.selection&&(z=document.selection.createRange().parentElement());
+return z};Graph.prototype.getSelectedEditingElement=function(){for(var z=this.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=z.parentNode;null!=z&&z==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(z=this.cellEditor.textarea.firstChild);return z};Graph.prototype.getParentByName=function(z,K,M){for(;null!=z&&z.nodeName!=K;){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.getParentByNames=
+function(z,K,M){for(;null!=z&&!(0<=mxUtils.indexOf(K,z.nodeName));){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.selectNode=function(z){var K=null;if(window.getSelection){if(K=window.getSelection(),K.getRangeAt&&K.rangeCount){var M=document.createRange();M.selectNode(z);K.removeAllRanges();K.addRange(M)}}else(K=document.selection)&&"Control"!=K.type&&(z=K.createRange(),z.collapse(!0),M=K.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,
+K,M){var U=this.getCellGeometry(z);if(null!=U){U=U.clone();if(null!=U.points)for(var W=0;W<U.points.length;W++)K?U.points[W].x=M+(M-U.points[W].x):U.points[W].y=M+(M-U.points[W].y);W=function(ha){null!=ha&&(K?ha.x=M+(M-ha.x):ha.y=M+(M-ha.y))};W(U.getTerminalPoint(!0));W(U.getTerminalPoint(!1));this.model.setGeometry(z,U)}};Graph.prototype.flipChildren=function(z,K,M){this.model.beginUpdate();try{for(var U=this.model.getChildCount(z),W=0;W<U;W++){var ha=this.model.getChildAt(z,W);if(this.model.isEdge(ha))this.flipEdgePoints(ha,
+K,M);else{var na=this.getCellGeometry(ha);null!=na&&(na=na.clone(),K?na.x=M+(M-na.x-na.width):na.y=M+(M-na.y-na.height),this.model.setGeometry(ha,na))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(z,K){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],U=0;U<z.length;U++)if(this.model.isEdge(z[U])){var W=this.view.getState(z[U]);null!=W&&this.flipEdgePoints(z[U],K,(K?W.getCenterX():W.getCenterY())/this.view.scale-(K?W.origin.x:W.origin.y)-(K?this.view.translate.x:
+this.view.translate.y))}else{var ha=this.getCellGeometry(z[U]);null!=ha&&this.flipChildren(z[U],K,K?ha.getCenterX()-ha.x:ha.getCenterY()-ha.y);M.push(z[U])}this.toggleCellStyles(K?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,K){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var U=0;U<z.length;U++){var W=this.model.getParent(z[U]);if(this.isTable(W)){var ha=this.getCellGeometry(z[U]),na=this.getCellGeometry(W);
+null!=ha&&null!=na&&(na=na.clone(),na.height-=ha.height,this.model.setGeometry(W,na))}}var ua=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,K)}finally{this.model.endUpdate()}if(null!=ua)for(M=[],U=0;U<ua.length;U++)this.model.contains(ua[U])&&(this.model.isVertex(ua[U])||this.model.isEdge(ua[U]))&&M.push(ua[U])}return M};Graph.prototype.insertTableColumn=function(z,K){var M=this.getModel();M.beginUpdate();try{var U=z,W=0;if(this.isTableCell(z)){var ha=M.getParent(z);
+U=M.getParent(ha);W=mxUtils.indexOf(M.getChildCells(ha,!0),z)}else this.isTableRow(z)?U=M.getParent(z):z=M.getChildCells(U,!0)[0],K||(W=M.getChildCells(z,!0).length-1);var na=M.getChildCells(U,!0),ua=Graph.minTableColumnWidth;for(z=0;z<na.length;z++){var pa=M.getChildCells(na[z],!0)[W],za=M.cloneCell(pa,!1),Da=this.getCellGeometry(za);za.value=null;za.style=mxUtils.setStyle(mxUtils.setStyle(za.style,"rowspan",null),"colspan",null);if(null!=Da){null!=Da.alternateBounds&&(Da.width=Da.alternateBounds.width,
+Da.height=Da.alternateBounds.height,Da.alternateBounds=null);ua=Da.width;var Ma=this.getCellGeometry(na[z]);null!=Ma&&(Da.height=Ma.height)}M.add(na[z],za,W+(K?0:1))}var La=this.getCellGeometry(U);null!=La&&(La=La.clone(),La.width+=ua,M.setGeometry(U,La))}finally{M.endUpdate()}};Graph.prototype.deleteLane=function(z){var K=this.getModel();K.beginUpdate();try{var M=null;M="stackLayout"==this.getCurrentCellStyle(z).childLayout?z:K.getParent(z);var U=K.getChildCells(M,!0);0==U.length?K.remove(M):(M==
+z&&(z=U[U.length-1]),K.remove(z))}finally{K.endUpdate()}};Graph.prototype.insertLane=function(z,K){var M=this.getModel();M.beginUpdate();try{var U=null;if("stackLayout"==this.getCurrentCellStyle(z).childLayout){U=z;var W=M.getChildCells(U,!0);z=W[K?0:W.length-1]}else U=M.getParent(z);var ha=U.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(U,z,ha+(K?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,K){var M=this.getModel();M.beginUpdate();try{var U=z,W=z;if(this.isTableCell(z))W=
+M.getParent(z),U=M.getParent(W);else if(this.isTableRow(z))U=M.getParent(z);else{var ha=M.getChildCells(U,!0);W=ha[K?0:ha.length-1]}var na=M.getChildCells(W,!0),ua=U.getIndex(W);W=M.cloneCell(W,!1);W.value=null;var pa=this.getCellGeometry(W);if(null!=pa){for(ha=0;ha<na.length;ha++){z=M.cloneCell(na[ha],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var za=this.getCellGeometry(z);null!=za&&(null!=za.alternateBounds&&(za.width=za.alternateBounds.width,
+za.height=za.alternateBounds.height,za.alternateBounds=null),za.height=pa.height);W.insert(z)}M.add(U,W,ua+(K?0:1));var Da=this.getCellGeometry(U);null!=Da&&(Da=Da.clone(),Da.height+=pa.height,M.setGeometry(U,Da))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var K=this.getModel();K.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&(U=K.getParent(z));this.isTableRow(U)&&(M=K.getParent(U));var W=K.getChildCells(M,!0);if(0==W.length)K.remove(M);else{this.isTableRow(U)||(U=
+W[0]);var ha=K.getChildCells(U,!0);if(1>=ha.length)K.remove(M);else{var na=ha.length-1;this.isTableCell(z)&&(na=mxUtils.indexOf(ha,z));for(U=z=0;U<W.length;U++){var ua=K.getChildCells(W[U],!0)[na];K.remove(ua);var pa=this.getCellGeometry(ua);null!=pa&&(z=Math.max(z,pa.width))}var za=this.getCellGeometry(M);null!=za&&(za=za.clone(),za.width-=z,K.setGeometry(M,za))}}}finally{K.endUpdate()}};Graph.prototype.deleteTableRow=function(z){var K=this.getModel();K.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&
+(z=U=K.getParent(z));this.isTableRow(z)&&(M=K.getParent(U));var W=K.getChildCells(M,!0);if(1>=W.length)K.remove(M);else{this.isTableRow(U)||(U=W[W.length-1]);K.remove(U);z=0;var ha=this.getCellGeometry(U);null!=ha&&(z=ha.height);var na=this.getCellGeometry(M);null!=na&&(na=na.clone(),na.height-=z,K.setGeometry(M,na))}}finally{K.endUpdate()}};Graph.prototype.insertRow=function(z,K){for(var M=z.tBodies[0],U=M.rows[0].cells,W=z=0;W<U.length;W++){var ha=U[W].getAttribute("colspan");z+=null!=ha?parseInt(ha):
+1}K=M.insertRow(K);for(W=0;W<z;W++)mxUtils.br(K.insertCell(-1));return K.cells[0]};Graph.prototype.deleteRow=function(z,K){z.tBodies[0].deleteRow(K)};Graph.prototype.insertColumn=function(z,K){var M=z.tHead;if(null!=M)for(var U=0;U<M.rows.length;U++){var W=document.createElement("th");M.rows[U].appendChild(W);mxUtils.br(W)}z=z.tBodies[0];for(M=0;M<z.rows.length;M++)U=z.rows[M].insertCell(K),mxUtils.br(U);return z.rows[0].cells[0<=K?K:z.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(z,
+K){if(0<=K){z=z.tBodies[0].rows;for(var M=0;M<z.length;M++)z[M].cells.length>K&&z[M].deleteCell(K)}};Graph.prototype.pasteHtmlAtCaret=function(z){if(window.getSelection){var K=window.getSelection();if(K.getRangeAt&&K.rangeCount){K=K.getRangeAt(0);K.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var U;U=M.firstChild;)lastNode=z.appendChild(U);K.insertNode(z)}}else(K=document.selection)&&"Control"!=K.type&&K.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=
+function(z,K){function M(W,ha){W.length>ha&&(W=W.substring(0,Math.round(ha/2))+"..."+W.substring(W.length-Math.round(ha/4)));return W}z=null!=z?z:"javascript:void(0);";if(null==K||0==K.length)K=this.isCustomLink(z)?this.getLinkTitle(z):z;var U=document.createElement("a");U.setAttribute("rel",this.linkRelation);U.setAttribute("href",this.getAbsoluteUrl(z));U.setAttribute("title",M(this.isCustomLink(z)?this.getLinkTitle(z):z,80));null!=this.linkTarget&&U.setAttribute("target",this.linkTarget);mxUtils.write(U,
+M(K,40));this.isCustomLink(z)&&mxEvent.addListener(U,"click",mxUtils.bind(this,function(W){this.customLinkClicked(z);mxEvent.consume(W)}));return U};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(ha,na){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(ha){ha=z.apply(this,arguments);if(mxEvent.isTouchEvent(ha.getEvent())&&
+null==ha.getState()){var na=this.getCellAt(ha.graphX,ha.graphY);null!=na&&this.isSwimlane(na)&&this.hitsSwimlaneContent(na,ha.graphX,ha.graphY)||(ha.state=this.view.getState(na),null!=ha.state&&null!=ha.state.shape&&(this.container.style.cursor=ha.state.shape.node.style.cursor))}null==ha.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return ha};var K=!1,M=!1,U=!1,W=this.fireMouseEvent;this.fireMouseEvent=function(ha,na,ua){ha==mxEvent.MOUSE_DOWN&&(na=this.updateMouseEvent(na),
+K=this.isCellSelected(na.getCell()),M=this.isSelectionEmpty(),U=this.popupMenuHandler.isMenuShowing());W.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(ha,na){var ua=mxEvent.isMouseEvent(na.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==na.getState()||!na.isSource(na.getState().control))&&(this.popupMenuHandler.popupTrigger||!U&&!ua&&(M&&null==na.getCell()&&this.isSelectionEmpty()||K&&this.isCellSelected(na.getCell())));
+ua=!K||ua?null:mxUtils.bind(this,function(pa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var za=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(na.getX()+za.x+1,na.getY()+za.y+1,pa,na.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[ha,na,ua])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=
+this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():document.getSelection?z=document.getSelection():document.selection&&(z=document.selection.createRange().text);return""!=z};mxCellEditor.prototype.insertTab=function(z){var K=this.textarea.ownerDocument.defaultView.getSelection(),M=K.getRangeAt(0),U="\t";if(null!=z)for(U="";0<z;)U+=" ",z--;z=document.createElement("span");
+z.style.whiteSpace="pre";z.appendChild(document.createTextNode(U));M.insertNode(z);M.setStartAfter(z);M.setEndAfter(z);K.removeAllRanges();K.addRange(M)};mxCellEditor.prototype.alignText=function(z,K){var M=null!=K&&mxEvent.isShiftDown(K);if(M||null!=window.getSelection&&null!=window.getSelection().containsNode){var U=!0;this.graph.processElements(this.textarea,function(W){M||window.getSelection().containsNode(W,!0)?(W.removeAttribute("align"),W.style.textAlign=null):U=!1});U&&this.graph.cellEditor.setAlign(z)}document.execCommand("justify"+
+z.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var z=window.getSelection();if(z.getRangeAt&&z.rangeCount){for(var K=[],M=0,U=z.rangeCount;M<U;++M)K.push(z.getRangeAt(M));return K}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(z){try{if(z)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var K=0,M=z.length;K<
+M;++K)sel.addRange(z[K])}else document.selection&&z.select&&z.select()}catch(U){}};var C=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(z){null!=z.text&&(z.text.replaceLinefeeds="0"!=mxUtils.getValue(z.style,"nl2Br","1"));C.apply(this,arguments)};var I=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(z,K){this.isKeepFocusEvent(z)||!mxEvent.isAltDown(z.getEvent())?I.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=
+function(z){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var G=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(z,K){z=this.graph.getStartEditingCell(z,K);G.apply(this,arguments);var M=this.graph.view.getState(z);this.textarea.className=null!=M&&1==M.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(z);
+M=this.graph.getModel().getParent(z);var U=this.graph.getCellGeometry(z);if(this.graph.getModel().isEdge(M)&&null!=U&&U.relative||this.graph.getModel().isEdge(z))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var Z=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function K(W,ha){ha.originalNode=W;W=W.firstChild;for(var na=ha.firstChild;null!=W&&null!=na;)K(W,na),W=W.nextSibling,na=na.nextSibling;
+return ha}function M(W,ha){if(null!=W)if(ha.originalNode!=W)U(W);else for(W=W.firstChild,ha=ha.firstChild;null!=W;){var na=W.nextSibling;null==ha?U(W):(M(W,ha),ha=ha.nextSibling);W=na}}function U(W){for(var ha=W.firstChild;null!=ha;){var na=ha.nextSibling;U(ha);ha=na}1==W.nodeType&&("BR"===W.nodeName||null!=W.firstChild)||3==W.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(W)).length?(3==W.nodeType&&mxUtils.setTextContent(W,mxUtils.getTextContent(W).replace(/\n|\r/g,"")),1==W.nodeType&&(W.removeAttribute("style"),
+W.removeAttribute("class"),W.removeAttribute("width"),W.removeAttribute("cellpadding"),W.removeAttribute("cellspacing"),W.removeAttribute("border"))):W.parentNode.removeChild(W)}Z.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(W){var ha=K(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
+0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,ha):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var z=this.graph.view.getState(this.editingCell);if(null!=z){var K=null!=z&&"0"!=mxUtils.getValue(z.style,"nl2Br","1"),M=this.saveSelection();if(this.codeViewMode){ua=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ua.length&&"\n"==ua.charAt(ua.length-1)&&(ua=ua.substring(0,ua.length-1));ua=this.graph.sanitizeHtml(K?
+ua.replace(/\n/g,"<br/>"):ua,!0);this.textarea.className="mxCellEditor geContentEditable";pa=mxUtils.getValue(z.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);K=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var U=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),W=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,ha=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,
0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,na=[];(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&na.push("underline");(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&na.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(pa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=
-Math.round(pa)+"px";this.textarea.style.textDecoration=na.join(" ");this.textarea.style.fontWeight=X?"bold":"normal";this.textarea.style.fontStyle=fa?"italic":"";this.textarea.style.fontFamily=L;this.textarea.style.textAlign=U;this.textarea.style.padding="0px";this.textarea.innerHTML!=ua&&(this.textarea.innerHTML=ua,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&
-this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ua=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ua=mxUtils.replaceTrailingNewlines(ua,"<div><br></div>"));ua=this.graph.sanitizeHtml(L?ua.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ua,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var pa=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(pa*
+Math.round(pa)+"px";this.textarea.style.textDecoration=na.join(" ");this.textarea.style.fontWeight=W?"bold":"normal";this.textarea.style.fontStyle=ha?"italic":"";this.textarea.style.fontFamily=K;this.textarea.style.textAlign=U;this.textarea.style.padding="0px";this.textarea.innerHTML!=ua&&(this.textarea.innerHTML=ua,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&
+this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ua=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ua=mxUtils.replaceTrailingNewlines(ua,"<div><br></div>"));ua=this.graph.sanitizeHtml(K?ua.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ua,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var pa=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(pa*
mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(pa)+"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!=ua&&(this.textarea.innerHTML=ua);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&
-this.restoreSelection(this.switchSelectionState);this.switchSelectionState=M;this.resize()}};var ca=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(z,L){if(null!=this.textarea)if(z=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=z){var M=z.view.scale;this.bounds=mxRectangle.fromRectangle(z);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*M;this.bounds.height=60*M;var U=null!=z.text?z.text.margin:null;null==U&&(U=mxUtils.getAlignmentAsPoint(mxUtils.getValue(z.style,
+this.restoreSelection(this.switchSelectionState);this.switchSelectionState=M;this.resize()}};var ca=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(z,K){if(null!=this.textarea)if(z=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=z){var M=z.view.scale;this.bounds=mxRectangle.fromRectangle(z);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*M;this.bounds.height=60*M;var U=null!=z.text?z.text.margin:null;null==U&&(U=mxUtils.getAlignmentAsPoint(mxUtils.getValue(z.style,
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(z.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=U.x*this.bounds.width;this.bounds.y+=U.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/M)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/M)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/M)+(this.textarea.offsetHeight-
this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*M);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/M)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*M);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("+M+","+
-M+")")}else this.textarea.style.height="",this.textarea.style.overflow="",ca.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(z,L){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var M=this.graph.getEditingValue(z.cell,L);"1"==mxUtils.getValue(z.style,"nl2Br","1")&&(M=M.replace(/\n/g,"<br/>"));return M=this.graph.sanitizeHtml(M,!0)};mxCellEditorGetCurrentValue=
-mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(z){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var L=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return L="1"==mxUtils.getValue(z.style,"nl2Br","1")?L.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):L.replace(/\r\n/g,"").replace(/\n/g,"")};var ba=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(z){this.codeViewMode&&
-this.toggleViewMode();ba.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(z){}};var Z=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(z,L){this.graph.getModel().beginUpdate();try{Z.apply(this,arguments),""==L&&this.graph.isCellDeletable(z.cell)&&0==this.graph.model.getChildCount(z.cell)&&this.graph.isTransparentState(z)&&this.graph.removeCells([z.cell],!1)}finally{this.graph.getModel().endUpdate()}};
-mxCellEditor.prototype.getBackgroundColor=function(z){var L=mxUtils.getValue(z.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=L&&L!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(L=mxUtils.getValue(z.style,mxConstants.STYLE_FILLCOLOR,null));L==mxConstants.NONE&&(L=null);return L};mxCellEditor.prototype.getBorderColor=function(z){var L=mxUtils.getValue(z.style,
-mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=L&&L!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(L=mxUtils.getValue(z.style,mxConstants.STYLE_STROKECOLOR,null));L==mxConstants.NONE&&(L=null);return L};mxCellEditor.prototype.getMinimumSize=function(z){var L=this.graph.getView().scale;return new mxRectangle(0,0,null==z.text?30:z.text.size*L+20,30)};mxGraphHandlerIsValidDropTarget=
-mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(z,L){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(L.getEvent)};mxGraphView.prototype.formatUnitText=function(z){return z?e(z,this.unit):z};mxGraphHandler.prototype.updateHint=function(z){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var L=this.graph.view.translate,M=this.graph.view.scale;
-z=this.roundLength((this.bounds.x+this.currentDx)/M-L.x);L=this.roundLength((this.bounds.y+this.currentDy)/M-L.y);M=this.graph.view.unit;this.hint.innerHTML=e(z,M)+", "+e(L,M);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=
-null)};var qa=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(z,L){qa.apply(this,arguments);var M=this.graph.getCellStyle(z);if(null==M.childLayout){var U=this.graph.model.getParent(z),X=null!=U?this.graph.getCellGeometry(U):null;if(null!=X&&(M=this.graph.getCellStyle(U),"stackLayout"==M.childLayout)){var fa=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var na=this.graph.getActualStartSize(U);
-X=X.clone();M?X.height=L.height+na.y+na.height+2*fa:X.width=L.width+na.x+na.width+2*fa;this.graph.model.setGeometry(U,X)}}};var N=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function z(ua){M.get(ua)||(M.put(ua,!0),X.push(ua))}for(var L=N.apply(this,arguments),M=new mxDictionary,U=this.graph.model,X=[],fa=0;fa<L.length;fa++){var na=L[fa];this.graph.isTableCell(na)?z(U.getParent(U.getParent(na))):this.graph.isTableRow(na)&&
-z(U.getParent(na));z(na)}return X};var Y=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var L=Y.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};var ea=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(z){var L=ea.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=
-function(){var z=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+z.x/2,this.bounds.y+this.rotationHandleVSpacing-z.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(z,L){return this.graph.isRecursiveVertexResize(z)&&!mxEvent.isAltDown(L.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(z,L){return mxEvent.isControlDown(L.getEvent())||mxEvent.isMetaDown(L.getEvent())};var ka=mxVertexHandler.prototype.isRotationHandleVisible;
-mxVertexHandler.prototype.isRotationHandleVisible=function(){return ka.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var ja=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=
-function(){return ja.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var V=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(z){return z.tableHandle||V.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var z=0;this.graph.isTableRow(this.state.cell)?z=1:this.graph.isTableCell(this.state.cell)&&
-(z=2);return z};var J=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return J.apply(this,arguments).grow(-this.getSelectionBorderInset())};var W=null,Q=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==W&&(W=mxCellRenderer.defaultShapes.tableLine);var z=Q.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var L=function(Ra,Fa,va){for(var ya=[],Na=0;Na<Ra.length;Na++){var Ja=
-Ra[Na];ya.push(null==Ja?null:new mxPoint((pa+Ja.x+Fa)*fa,(za+Ja.y+va)*fa))}return ya},M=this,U=this.graph,X=U.model,fa=U.view.scale,na=this.state,ua=this.selectionBorder,pa=this.state.origin.x+U.view.translate.x,za=this.state.origin.y+U.view.translate.y;null==z&&(z=[]);var Da=U.view.getCellStates(X.getChildCells(this.state.cell,!0));if(0<Da.length){var Ma=X.getChildCells(Da[0].cell,!0),La=U.getTableLines(this.state.cell,!1,!0),Ua=U.getTableLines(this.state.cell,!0,!1);for(X=0;X<Da.length;X++)mxUtils.bind(this,
-function(Ra){var Fa=Da[Ra],va=Ra<Da.length-1?Da[Ra+1]:null;va=null!=va?U.getCellGeometry(va.cell):null;var ya=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=Ua[Ra]?new W(Ua[Ra],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;Fa=new mxHandle(Fa,"row-resize",null,va);Fa.tableHandle=!0;var Na=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=
-this.shape){this.shape.stroke=0==Na?mxConstants.NONE:ua.stroke;if(this.shape.constructor==W)this.shape.line=L(Ua[Ra],0,Na),this.shape.updateBoundsFromLine();else{var Pa=U.getActualStartSize(na.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*fa;this.shape.bounds.x=na.x+(Ra==Da.length-1?0:Pa.x*fa);this.shape.bounds.width=na.width-(Ra==Da.length-1?0:Pa.width+Pa.x+fa)}this.shape.redraw()}};var Ja=!1;Fa.setPosition=function(Pa,Ya,cb){Na=Math.max(Graph.minTableRowHeight-
-Pa.height,Ya.y-Pa.y-Pa.height);Ja=mxEvent.isShiftDown(cb.getEvent());null!=ya&&Ja&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Fa.execute=function(Pa){if(0!=Na)U.setTableRowHeight(this.state.cell,Na,!Ja);else if(!M.blockDelayedSelection){var Ya=U.getCellAt(Pa.getGraphX(),Pa.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(Ya,Pa)}Na=0};Fa.reset=function(){Na=0};z.push(Fa)})(X);for(X=0;X<Ma.length;X++)mxUtils.bind(this,function(Ra){var Fa=U.view.getState(Ma[Ra]),va=U.getCellGeometry(Ma[Ra]),
-ya=null!=va.alternateBounds?va.alternateBounds:va;null==Fa&&(Fa=new mxCellState(U.view,Ma[Ra],U.getCellStyle(Ma[Ra])),Fa.x=na.x+va.x*fa,Fa.y=na.y+va.y*fa,Fa.width=ya.width*fa,Fa.height=ya.height*fa,Fa.updateCachedBounds());va=Ra<Ma.length-1?Ma[Ra+1]:null;va=null!=va?U.getCellGeometry(va):null;var Na=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=La[Ra]?new W(La[Ra],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;
-Fa=new mxHandle(Fa,"col-resize",null,va);Fa.tableHandle=!0;var Ja=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Ja?mxConstants.NONE:ua.stroke;if(this.shape.constructor==W)this.shape.line=L(La[Ra],Ja,0),this.shape.updateBoundsFromLine();else{var Ya=U.getActualStartSize(na.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Ja)*fa;this.shape.bounds.y=na.y+(Ra==Ma.length-
-1?0:Ya.y*fa);this.shape.bounds.height=na.height-(Ra==Ma.length-1?0:(Ya.height+Ya.y)*fa)}this.shape.redraw()}};var Pa=!1;Fa.setPosition=function(Ya,cb,fb){Ja=Math.max(Graph.minTableColumnWidth-ya.width,cb.x-Ya.x-ya.width);Pa=mxEvent.isShiftDown(fb.getEvent());null==Na||Pa||(Ja=Math.min(Ja,Na.width-Graph.minTableColumnWidth))};Fa.execute=function(Ya){if(0!=Ja)U.setTableColumnWidth(this.state.cell,Ja,Pa);else if(!M.blockDelayedSelection){var cb=U.getCellAt(Ya.getGraphX(),Ya.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(cb,
-Ya)}Ja=0};Fa.positionChanged=function(){};Fa.reset=function(){Ja=0};z.push(Fa)})(X)}}return null!=z?z.reverse():null};var S=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(z){S.apply(this,arguments);if(null!=this.moveHandles)for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].style.visibility=z?"":"hidden";if(null!=this.cornerHandles)for(L=0;L<this.cornerHandles.length;L++)this.cornerHandles[L].node.style.visibility=z?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=
-function(){var z=this.graph.model;if(null!=this.moveHandles){for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].parentNode.removeChild(this.moveHandles[L]);this.moveHandles=null}this.moveHandles=[];for(L=0;L<z.getChildCount(this.state.cell);L++)mxUtils.bind(this,function(M){if(null!=M&&z.isVertex(M.cell)){var U=mxUtils.createImage(Editor.rowMoveImage);U.style.position="absolute";U.style.cursor="pointer";U.style.width="7px";U.style.height="4px";U.style.padding="4px 2px 4px 2px";U.rowState=
-M;mxEvent.addGestureListeners(U,mxUtils.bind(this,function(X){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(X)&&this.graph.isCellSelected(M.cell)||this.graph.selectCellForEvent(M.cell,X);mxEvent.isPopupTrigger(X)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(X),mxEvent.getClientY(X),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(X),this.graph.isMouseDown=!0);
-mxEvent.consume(X)}),null,mxUtils.bind(this,function(X){mxEvent.isPopupTrigger(X)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(X),mxEvent.getClientY(X),M.cell,X),mxEvent.consume(X))}));this.moveHandles.push(U);this.graph.container.appendChild(U)}})(this.graph.view.getState(z.getChildAt(this.state.cell,L)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&
-this.refreshMoveHandles()};var ha=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,0),L=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var U=0;U<this.customHandles.length;U++)if(null!=this.customHandles[U].shape&&null!=this.customHandles[U].shape.bounds){var X=
-this.customHandles[U].shape.bounds,fa=X.getCenterX(),na=X.getCenterY();if(Math.abs(this.state.x-fa)<X.width/2||Math.abs(this.state.y-na)<X.height/2||Math.abs(this.state.x+this.state.width-fa)<X.width/2||Math.abs(this.state.y+this.state.height-na)<X.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(L/=2,this.graph.isTable(this.state.cell)&&(L+=7),z.x=this.sizers[0].bounds.width+L,z.y=this.sizers[0].bounds.height+L):z=ha.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=
-function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{z=this.state.view.scale;var L=this.state.view.unit;this.hint.innerHTML=e(this.roundLength(this.bounds.width/z),L)+" x "+e(this.roundLength(this.bounds.height/z),L)}z=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||
-"0");null==z&&(z=this.bounds);this.hint.style.left=z.x+Math.round((z.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=z.y+z.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var la=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(z,L){la.apply(this,arguments);null!=
-this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var u=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(z,L){u.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(z,L){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var M=
-this.graph.view.translate,U=this.graph.view.scale,X=this.roundLength(L.x/U-M.x);M=this.roundLength(L.y/U-M.y);U=this.graph.view.unit;this.hint.innerHTML=e(X,U)+", "+e(M,U);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(X=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*X.x)+"%, "+Math.round(100*X.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility=
-"hidden");this.hint.style.left=Math.round(z.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(z.getGraphY(),L.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"/>');
+M+")")}else this.textarea.style.height="",this.textarea.style.overflow="",ca.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(z,K){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var M=this.graph.getEditingValue(z.cell,K);"1"==mxUtils.getValue(z.style,"nl2Br","1")&&(M=M.replace(/\n/g,"<br/>"));return M=this.graph.sanitizeHtml(M,!0)};mxCellEditorGetCurrentValue=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(z){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var K=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return K="1"==mxUtils.getValue(z.style,"nl2Br","1")?K.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):K.replace(/\r\n/g,"").replace(/\n/g,"")};var aa=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(z){this.codeViewMode&&
+this.toggleViewMode();aa.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(z){}};var Y=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(z,K){this.graph.getModel().beginUpdate();try{Y.apply(this,arguments),""==K&&this.graph.isCellDeletable(z.cell)&&0==this.graph.model.getChildCount(z.cell)&&this.graph.isTransparentState(z)&&this.graph.removeCells([z.cell],!1)}finally{this.graph.getModel().endUpdate()}};
+mxCellEditor.prototype.getBackgroundColor=function(z){var K=mxUtils.getValue(z.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=K&&K!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(K=mxUtils.getValue(z.style,mxConstants.STYLE_FILLCOLOR,null));K==mxConstants.NONE&&(K=null);return K};mxCellEditor.prototype.getBorderColor=function(z){var K=mxUtils.getValue(z.style,
+mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=K&&K!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(K=mxUtils.getValue(z.style,mxConstants.STYLE_STROKECOLOR,null));K==mxConstants.NONE&&(K=null);return K};mxCellEditor.prototype.getMinimumSize=function(z){var K=this.graph.getView().scale;return new mxRectangle(0,0,null==z.text?30:z.text.size*K+20,30)};mxGraphHandlerIsValidDropTarget=
+mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(z,K){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(K.getEvent)};mxGraphView.prototype.formatUnitText=function(z){return z?e(z,this.unit):z};mxGraphHandler.prototype.updateHint=function(z){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var K=this.graph.view.translate,M=this.graph.view.scale;
+z=this.roundLength((this.bounds.x+this.currentDx)/M-K.x);K=this.roundLength((this.bounds.y+this.currentDy)/M-K.y);M=this.graph.view.unit;this.hint.innerHTML=e(z,M)+", "+e(K,M);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=
+null)};var qa=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(z,K){qa.apply(this,arguments);var M=this.graph.getCellStyle(z);if(null==M.childLayout){var U=this.graph.model.getParent(z),W=null!=U?this.graph.getCellGeometry(U):null;if(null!=W&&(M=this.graph.getCellStyle(U),"stackLayout"==M.childLayout)){var ha=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var na=this.graph.getActualStartSize(U);
+W=W.clone();M?W.height=K.height+na.y+na.height+2*ha:W.width=K.width+na.x+na.width+2*ha;this.graph.model.setGeometry(U,W)}}};var Q=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function z(ua){M.get(ua)||(M.put(ua,!0),W.push(ua))}for(var K=Q.apply(this,arguments),M=new mxDictionary,U=this.graph.model,W=[],ha=0;ha<K.length;ha++){var na=K[ha];this.graph.isTableCell(na)?z(U.getParent(U.getParent(na))):this.graph.isTableRow(na)&&
+z(U.getParent(na));z(na)}return W};var X=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var K=X.apply(this,arguments);K.stroke="#C0C0C0";K.strokewidth=1;return K};var fa=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(z){var K=fa.apply(this,arguments);K.stroke="#C0C0C0";K.strokewidth=1;return K};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=
+function(){var z=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+z.x/2,this.bounds.y+this.rotationHandleVSpacing-z.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(z,K){return this.graph.isRecursiveVertexResize(z)&&!mxEvent.isAltDown(K.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(z,K){return mxEvent.isControlDown(K.getEvent())||mxEvent.isMetaDown(K.getEvent())};var ka=mxVertexHandler.prototype.isRotationHandleVisible;
+mxVertexHandler.prototype.isRotationHandleVisible=function(){return ka.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var ia=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=
+function(){return ia.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var V=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(z){return z.tableHandle||V.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var z=0;this.graph.isTableRow(this.state.cell)?z=1:this.graph.isTableCell(this.state.cell)&&
+(z=2);return z};var L=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return L.apply(this,arguments).grow(-this.getSelectionBorderInset())};var ea=null,O=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==ea&&(ea=mxCellRenderer.defaultShapes.tableLine);var z=O.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var K=function(Sa,Fa,va){for(var ya=[],Na=0;Na<Sa.length;Na++){var Ja=
+Sa[Na];ya.push(null==Ja?null:new mxPoint((pa+Ja.x+Fa)*ha,(za+Ja.y+va)*ha))}return ya},M=this,U=this.graph,W=U.model,ha=U.view.scale,na=this.state,ua=this.selectionBorder,pa=this.state.origin.x+U.view.translate.x,za=this.state.origin.y+U.view.translate.y;null==z&&(z=[]);var Da=U.view.getCellStates(W.getChildCells(this.state.cell,!0));if(0<Da.length){var Ma=W.getChildCells(Da[0].cell,!0),La=U.getTableLines(this.state.cell,!1,!0),Ua=U.getTableLines(this.state.cell,!0,!1);for(W=0;W<Da.length;W++)mxUtils.bind(this,
+function(Sa){var Fa=Da[Sa],va=Sa<Da.length-1?Da[Sa+1]:null;va=null!=va?U.getCellGeometry(va.cell):null;var ya=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=Ua[Sa]?new ea(Ua[Sa],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;Fa=new mxHandle(Fa,"row-resize",null,va);Fa.tableHandle=!0;var Na=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=
+this.shape){this.shape.stroke=0==Na?mxConstants.NONE:ua.stroke;if(this.shape.constructor==ea)this.shape.line=K(Ua[Sa],0,Na),this.shape.updateBoundsFromLine();else{var Qa=U.getActualStartSize(na.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*ha;this.shape.bounds.x=na.x+(Sa==Da.length-1?0:Qa.x*ha);this.shape.bounds.width=na.width-(Sa==Da.length-1?0:Qa.width+Qa.x+ha)}this.shape.redraw()}};var Ja=!1;Fa.setPosition=function(Qa,Za,cb){Na=Math.max(Graph.minTableRowHeight-
+Qa.height,Za.y-Qa.y-Qa.height);Ja=mxEvent.isShiftDown(cb.getEvent());null!=ya&&Ja&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Fa.execute=function(Qa){if(0!=Na)U.setTableRowHeight(this.state.cell,Na,!Ja);else if(!M.blockDelayedSelection){var Za=U.getCellAt(Qa.getGraphX(),Qa.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(Za,Qa)}Na=0};Fa.reset=function(){Na=0};z.push(Fa)})(W);for(W=0;W<Ma.length;W++)mxUtils.bind(this,function(Sa){var Fa=U.view.getState(Ma[Sa]),va=U.getCellGeometry(Ma[Sa]),
+ya=null!=va.alternateBounds?va.alternateBounds:va;null==Fa&&(Fa=new mxCellState(U.view,Ma[Sa],U.getCellStyle(Ma[Sa])),Fa.x=na.x+va.x*ha,Fa.y=na.y+va.y*ha,Fa.width=ya.width*ha,Fa.height=ya.height*ha,Fa.updateCachedBounds());va=Sa<Ma.length-1?Ma[Sa+1]:null;va=null!=va?U.getCellGeometry(va):null;var Na=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=La[Sa]?new ea(La[Sa],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;
+Fa=new mxHandle(Fa,"col-resize",null,va);Fa.tableHandle=!0;var Ja=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Ja?mxConstants.NONE:ua.stroke;if(this.shape.constructor==ea)this.shape.line=K(La[Sa],Ja,0),this.shape.updateBoundsFromLine();else{var Za=U.getActualStartSize(na.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Ja)*ha;this.shape.bounds.y=na.y+(Sa==Ma.length-
+1?0:Za.y*ha);this.shape.bounds.height=na.height-(Sa==Ma.length-1?0:(Za.height+Za.y)*ha)}this.shape.redraw()}};var Qa=!1;Fa.setPosition=function(Za,cb,fb){Ja=Math.max(Graph.minTableColumnWidth-ya.width,cb.x-Za.x-ya.width);Qa=mxEvent.isShiftDown(fb.getEvent());null==Na||Qa||(Ja=Math.min(Ja,Na.width-Graph.minTableColumnWidth))};Fa.execute=function(Za){if(0!=Ja)U.setTableColumnWidth(this.state.cell,Ja,Qa);else if(!M.blockDelayedSelection){var cb=U.getCellAt(Za.getGraphX(),Za.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(cb,
+Za)}Ja=0};Fa.positionChanged=function(){};Fa.reset=function(){Ja=0};z.push(Fa)})(W)}}return null!=z?z.reverse():null};var N=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(z){N.apply(this,arguments);if(null!=this.moveHandles)for(var K=0;K<this.moveHandles.length;K++)this.moveHandles[K].style.visibility=z?"":"hidden";if(null!=this.cornerHandles)for(K=0;K<this.cornerHandles.length;K++)this.cornerHandles[K].node.style.visibility=z?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=
+function(){var z=this.graph.model;if(null!=this.moveHandles){for(var K=0;K<this.moveHandles.length;K++)this.moveHandles[K].parentNode.removeChild(this.moveHandles[K]);this.moveHandles=null}this.moveHandles=[];for(K=0;K<z.getChildCount(this.state.cell);K++)mxUtils.bind(this,function(M){if(null!=M&&z.isVertex(M.cell)){var U=mxUtils.createImage(Editor.rowMoveImage);U.style.position="absolute";U.style.cursor="pointer";U.style.width="7px";U.style.height="4px";U.style.padding="4px 2px 4px 2px";U.rowState=
+M;mxEvent.addGestureListeners(U,mxUtils.bind(this,function(W){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(W)&&this.graph.isCellSelected(M.cell)||this.graph.selectCellForEvent(M.cell,W);mxEvent.isPopupTrigger(W)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(W),mxEvent.getClientY(W),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(W),this.graph.isMouseDown=!0);
+mxEvent.consume(W)}),null,mxUtils.bind(this,function(W){mxEvent.isPopupTrigger(W)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(W),mxEvent.getClientY(W),M.cell,W),mxEvent.consume(W))}));this.moveHandles.push(U);this.graph.container.appendChild(U)}})(this.graph.view.getState(z.getChildAt(this.state.cell,K)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&
+this.refreshMoveHandles()};var ba=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,0),K=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var U=0;U<this.customHandles.length;U++)if(null!=this.customHandles[U].shape&&null!=this.customHandles[U].shape.bounds){var W=
+this.customHandles[U].shape.bounds,ha=W.getCenterX(),na=W.getCenterY();if(Math.abs(this.state.x-ha)<W.width/2||Math.abs(this.state.y-na)<W.height/2||Math.abs(this.state.x+this.state.width-ha)<W.width/2||Math.abs(this.state.y+this.state.height-na)<W.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(K/=2,this.graph.isTable(this.state.cell)&&(K+=7),z.x=this.sizers[0].bounds.width+K,z.y=this.sizers[0].bounds.height+K):z=ba.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=
+function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{z=this.state.view.scale;var K=this.state.view.unit;this.hint.innerHTML=e(this.roundLength(this.bounds.width/z),K)+" x "+e(this.roundLength(this.bounds.height/z),K)}z=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||
+"0");null==z&&(z=this.bounds);this.hint.style.left=z.x+Math.round((z.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=z.y+z.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var la=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(z,K){la.apply(this,arguments);null!=
+this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var u=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(z,K){u.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(z,K){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var M=
+this.graph.view.translate,U=this.graph.view.scale,W=this.roundLength(K.x/U-M.x);M=this.roundLength(K.y/U-M.y);U=this.graph.view.unit;this.hint.innerHTML=e(W,U)+", "+e(M,U);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(W=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*W.x)+"%, "+Math.round(100*W.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility=
+"hidden");this.hint.style.left=Math.round(z.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(z.getGraphY(),K.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="'+
@@ -2630,264 +2631,264 @@ mxEdgeHandler.prototype.endHandleImage=HoverIcons.prototype.endMainHandle;mxEdge
HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget=HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxVertexHandler.prototype.rotationEnabled=!0;mxVertexHandler.prototype.manageSizers=
!0;mxVertexHandler.prototype.livePreview=!0;mxGraphHandler.prototype.maxLivePreview=16;mxRubberband.prototype.defaultOpacity=30;mxConnectionHandler.prototype.outlineConnect=!0;mxCellHighlight.prototype.keepOnTop=!0;mxVertexHandler.prototype.parentHighlightEnabled=!0;mxEdgeHandler.prototype.parentHighlightEnabled=!0;mxEdgeHandler.prototype.dblClickRemoveEnabled=!0;mxEdgeHandler.prototype.straightRemoveEnabled=!0;mxEdgeHandler.prototype.virtualBendsEnabled=!0;mxEdgeHandler.prototype.mergeRemoveEnabled=
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
-12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(z){return mxEvent.isMouseEvent(z.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return null==z.getState()&&!mxEvent.isMouseEvent(L)||mxEvent.isPopupTrigger(L)&&(null==z.getState()||mxEvent.isControlDown(L)||mxEvent.isShiftDown(L))};var H=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
-function(z,L){H.apply(this,arguments);mxEvent.isTouchEvent(L.getEvent())&&this.graph.isCellSelected(L.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return mxEvent.isLeftMouseButton(L)&&(this.useLeftButtonForPanning&&null==z.getState()||mxEvent.isControlDown(L)&&!mxEvent.isShiftDown(L))||this.usePopupTrigger&&mxEvent.isPopupTrigger(L)};mxRubberband.prototype.isSpaceEvent=function(z){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,L){if(this.cancelled)this.cancelled=!1,L.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,U=null,X=null,fa=z=null;
-null!=this.first&&null!=this.currentX&&null!=this.currentY&&(U=this.first.x,X=this.first.y,z=(this.currentX-U)/this.graph.view.scale,fa=(this.currentY-X)/this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(z=this.graph.snap(z),fa=this.graph.snap(fa),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(fa)<this.graph.tolerance&&(fa=0))));this.reset();if(M){if(this.isSpaceEvent(L)){this.graph.model.beginUpdate();try{var na=this.graph.getCellsBeyond(U,X,this.graph.getDefaultParent(),
-!0,!0);for(M=0;M<na.length;M++)if(this.graph.isCellMovable(na[M])){var ua=this.graph.view.getState(na[M]),pa=this.graph.getCellGeometry(na[M]);null!=ua&&null!=pa&&(pa=pa.clone(),pa.translate(z,fa),this.graph.model.setGeometry(na[M],pa))}}finally{this.graph.model.endUpdate()}}else na=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(na,L.getEvent());L.consume()}}};mxRubberband.prototype.mouseMove=function(z,L){if(!L.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
-z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=L.getX()+M.x;M=L.getY()+M.y;var U=this.first.x-z,X=this.first.y-M,fa=this.graph.tolerance;if(null!=this.div||Math.abs(U)>fa||Math.abs(X)>fa)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(L)?(z=this.x+this.width,M=this.y+this.height,U=this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(this.width=this.graph.snap(this.width/U)*U,this.height=this.graph.snap(this.height/U)*U,this.graph.isGridEnabled()||
+12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(z){return mxEvent.isMouseEvent(z.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(z){var K=z.getEvent();return null==z.getState()&&!mxEvent.isMouseEvent(K)||mxEvent.isPopupTrigger(K)&&(null==z.getState()||mxEvent.isControlDown(K)||mxEvent.isShiftDown(K))};var H=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
+function(z,K){H.apply(this,arguments);mxEvent.isTouchEvent(K.getEvent())&&this.graph.isCellSelected(K.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(z){var K=z.getEvent();return mxEvent.isLeftMouseButton(K)&&(this.useLeftButtonForPanning&&null==z.getState()||mxEvent.isControlDown(K)&&!mxEvent.isShiftDown(K))||this.usePopupTrigger&&mxEvent.isPopupTrigger(K)};mxRubberband.prototype.isSpaceEvent=function(z){return this.graph.isEnabled()&&
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,K){if(this.cancelled)this.cancelled=!1,K.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,U=null,W=null,ha=z=null;
+null!=this.first&&null!=this.currentX&&null!=this.currentY&&(U=this.first.x,W=this.first.y,z=(this.currentX-U)/this.graph.view.scale,ha=(this.currentY-W)/this.graph.view.scale,mxEvent.isAltDown(K.getEvent())||(z=this.graph.snap(z),ha=this.graph.snap(ha),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(ha)<this.graph.tolerance&&(ha=0))));this.reset();if(M){if(this.isSpaceEvent(K)){this.graph.model.beginUpdate();try{var na=this.graph.getCellsBeyond(U,W,this.graph.getDefaultParent(),
+!0,!0);for(M=0;M<na.length;M++)if(this.graph.isCellMovable(na[M])){var ua=this.graph.view.getState(na[M]),pa=this.graph.getCellGeometry(na[M]);null!=ua&&null!=pa&&(pa=pa.clone(),pa.translate(z,ha),this.graph.model.setGeometry(na[M],pa))}}finally{this.graph.model.endUpdate()}}else na=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(na,K.getEvent());K.consume()}}};mxRubberband.prototype.mouseMove=function(z,K){if(!K.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
+z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=K.getX()+M.x;M=K.getY()+M.y;var U=this.first.x-z,W=this.first.y-M,ha=this.graph.tolerance;if(null!=this.div||Math.abs(U)>ha||Math.abs(W)>ha)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(K)?(z=this.x+this.width,M=this.y+this.height,U=this.graph.view.scale,mxEvent.isAltDown(K.getEvent())||(this.width=this.graph.snap(this.width/U)*U,this.height=this.graph.snap(this.height/U)*U,this.graph.isGridEnabled()||
(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=z-this.width),this.y<this.first.y&&(this.y=M-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",
null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&
-(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),L.consume()}};var O=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);O.apply(this,arguments)};var T=(new Date).getTime(),R=0,da=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(z,L,M,U){da.apply(this,arguments);M!=this.currentTerminalState?(T=(new Date).getTime(),
-R=0):R=(new Date).getTime()-T;this.currentTerminalState=M};var P=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(z){return mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())?!1:null!=this.currentTerminalState&&z.getState()==this.currentTerminalState&&2E3<R||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&P.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
-function(z,L,M){L=null!=z&&0==z;var U=this.state.getVisibleTerminalState(L);z=null!=z&&(0==z||z>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==z)?this.graph.getConnectionConstraint(this.state,U,L):null;M=null!=(null!=z?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(L),z):null)?M?this.endFixedHandleImage:this.fixedHandleImage:null!=z&&null!=U?M?this.endTerminalHandleImage:this.terminalHandleImage:M?this.endHandleImage:this.handleImage;if(null!=M)return M=
-new mxImageShape(new mxRectangle(0,0,M.width,M.height),M.src),M.preserveImageAspect=!1,M;M=mxConstants.HANDLE_SIZE;this.preferHtml&&--M;return new mxRectangleShape(new mxRectangle(0,0,M,M),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ma=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(z,L,M){this.handleImage=L==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:L==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
-return ma.apply(this,arguments)};var ra=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(z){if(null!=z&&1==z.length){var L=this.graph.getModel(),M=L.getParent(z[0]),U=this.graph.getCellGeometry(z[0]);if(L.isEdge(M)&&null!=U&&U.relative&&(L=this.graph.view.getState(z[0]),null!=L&&2>L.width&&2>L.height&&null!=L.text&&null!=L.text.boundingBox))return mxRectangle.fromRectangle(L.text.boundingBox)}return ra.apply(this,arguments)};var xa=mxGraphHandler.prototype.getGuideStates;
-mxGraphHandler.prototype.getGuideStates=function(){for(var z=xa.apply(this,arguments),L=[],M=0;M<z.length;M++)"1"!=mxUtils.getValue(z[M].style,"part","0")&&L.push(z[M]);return L};var ta=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(z){var L=this.graph.getModel(),M=L.getParent(z.cell),U=this.graph.getCellGeometry(z.cell);return L.isEdge(M)&&null!=U&&U.relative&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox?(L=z.text.unrotatedBoundingBox||
-z.text.boundingBox,new mxRectangle(Math.round(L.x),Math.round(L.y),Math.round(L.width),Math.round(L.height))):ta.apply(this,arguments)};var Aa=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(z,L){var M=this.graph.getModel(),U=M.getParent(this.state.cell),X=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(L)==mxEvent.ROTATION_HANDLE||!M.isEdge(U)||null==X||!X.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Aa.apply(this,arguments)};
-mxVertexHandler.prototype.rotateClick=function(){var z=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),L=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&z==mxConstants.NONE&&L==mxConstants.NONE?(z=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,z,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};
-var Ca=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(z,L){Ca.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 Ba=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(z,L){Ba.apply(this,arguments);null!=this.rotationShape&&null!=
+(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),K.consume()}};var P=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);P.apply(this,arguments)};var T=(new Date).getTime(),S=0,da=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(z,K,M,U){da.apply(this,arguments);M!=this.currentTerminalState?(T=(new Date).getTime(),
+S=0):S=(new Date).getTime()-T;this.currentTerminalState=M};var R=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(z){return mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())?!1:null!=this.currentTerminalState&&z.getState()==this.currentTerminalState&&2E3<S||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&R.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
+function(z,K,M){K=null!=z&&0==z;var U=this.state.getVisibleTerminalState(K);z=null!=z&&(0==z||z>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==z)?this.graph.getConnectionConstraint(this.state,U,K):null;M=null!=(null!=z?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(K),z):null)?M?this.endFixedHandleImage:this.fixedHandleImage:null!=z&&null!=U?M?this.endTerminalHandleImage:this.terminalHandleImage:M?this.endHandleImage:this.handleImage;if(null!=M)return M=
+new mxImageShape(new mxRectangle(0,0,M.width,M.height),M.src),M.preserveImageAspect=!1,M;M=mxConstants.HANDLE_SIZE;this.preferHtml&&--M;return new mxRectangleShape(new mxRectangle(0,0,M,M),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ma=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(z,K,M){this.handleImage=K==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:K==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
+return ma.apply(this,arguments)};var ra=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(z){if(null!=z&&1==z.length){var K=this.graph.getModel(),M=K.getParent(z[0]),U=this.graph.getCellGeometry(z[0]);if(K.isEdge(M)&&null!=U&&U.relative&&(K=this.graph.view.getState(z[0]),null!=K&&2>K.width&&2>K.height&&null!=K.text&&null!=K.text.boundingBox))return mxRectangle.fromRectangle(K.text.boundingBox)}return ra.apply(this,arguments)};var xa=mxGraphHandler.prototype.getGuideStates;
+mxGraphHandler.prototype.getGuideStates=function(){for(var z=xa.apply(this,arguments),K=[],M=0;M<z.length;M++)"1"!=mxUtils.getValue(z[M].style,"part","0")&&K.push(z[M]);return K};var ta=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(z){var K=this.graph.getModel(),M=K.getParent(z.cell),U=this.graph.getCellGeometry(z.cell);return K.isEdge(M)&&null!=U&&U.relative&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox?(K=z.text.unrotatedBoundingBox||
+z.text.boundingBox,new mxRectangle(Math.round(K.x),Math.round(K.y),Math.round(K.width),Math.round(K.height))):ta.apply(this,arguments)};var Aa=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(z,K){var M=this.graph.getModel(),U=M.getParent(this.state.cell),W=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(K)==mxEvent.ROTATION_HANDLE||!M.isEdge(U)||null==W||!W.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Aa.apply(this,arguments)};
+mxVertexHandler.prototype.rotateClick=function(){var z=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),K=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&z==mxConstants.NONE&&K==mxConstants.NONE?(z=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,z,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};
+var Ca=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(z,K){Ca.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 Ba=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(z,K){Ba.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 sa=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){sa.apply(this,arguments);var z=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();
-else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=[];for(var L=0;4>L;L++){var M=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);M.dialect=mxConstants.DIALECT_SVG;M.init(this.graph.view.getOverlayPane());this.cornerHandles.push(M)}}var U=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(X,fa){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));U()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(X,fa){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
-L=this.graph.getLinkForCell(this.state.cell);M=this.graph.getLinksForState(this.state);this.updateLinkHint(L,M);if(null!=L||null!=M&&0<M.length)z=!0;z&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(z,L){try{if(null==z&&(null==L||0==L.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=z||null!=L&&0<L.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding=
+else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=[];for(var K=0;4>K;K++){var M=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);M.dialect=mxConstants.DIALECT_SVG;M.init(this.graph.view.getOverlayPane());this.cornerHandles.push(M)}}var U=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(W,ha){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));U()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(W,ha){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
+K=this.graph.getLinkForCell(this.state.cell);M=this.graph.getLinksForState(this.state);this.updateLinkHint(K,M);if(null!=K||null!=M&&0<M.length)z=!0;z&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(z,K){try{if(null==z&&(null==K||0==K.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=z||null!=K&&0<K.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding=
"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=z&&(this.linkHint.appendChild(this.graph.createLinkForHint(z)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var M=document.createElement("img");M.setAttribute("src",Editor.editImage);M.setAttribute("title",
-mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(fa){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(fa)}));var U=M.cloneNode(!0);U.setAttribute("src",Editor.trashImage);U.setAttribute("title",mxResources.get("removeIt",
-[mxResources.get("link")]));U.style.marginLeft="4px";this.linkHint.appendChild(U);mxEvent.addListener(U,"click",mxUtils.bind(this,function(fa){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(fa)}))}if(null!=L)for(M=0;M<L.length;M++){var X=document.createElement("div");X.style.marginTop=null!=z||0<M?"6px":"0px";X.appendChild(this.graph.createLinkForHint(L[M].getAttribute("href"),mxUtils.getTextContent(L[M])));this.linkHint.appendChild(X)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(fa){}};
-mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Oa=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Oa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var z=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&
-this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(U,X){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));z();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var L=this.graph.getLinkForCell(this.state.cell),M=this.graph.getLinksForState(this.state);if(null!=
-L||null!=M&&0<M.length)this.updateLinkHint(L,M),this.redrawHandles()};var Ta=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Ta.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Sa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.left=this.moveHandles[z].rowState.x+
-this.moveHandles[z].rowState.width-5+"px",this.moveHandles[z].style.top=this.moveHandles[z].rowState.y+this.moveHandles[z].rowState.height/2-6+"px";if(null!=this.cornerHandles){z=this.getSelectionBorderInset();var L=this.cornerHandles,M=L[0].bounds.height/2;L[0].bounds.x=this.state.x-L[0].bounds.width/2+z;L[0].bounds.y=this.state.y-M+z;L[0].redraw();L[1].bounds.x=L[0].bounds.x+this.state.width-2*z;L[1].bounds.y=L[0].bounds.y;L[1].redraw();L[2].bounds.x=L[0].bounds.x;L[2].bounds.y=this.state.y+this.state.height-
-2*z;L[2].redraw();L[3].bounds.x=L[1].bounds.x;L[3].bounds.y=L[2].bounds.y;L[3].redraw();for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].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":"");Sa.apply(this);null!=this.state&&null!=this.linkHint&&(z=new mxPoint(this.state.getCenterX(),
-this.state.getCenterY()),L=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),M=mxUtils.getBoundingBox(L,this.state.style[mxConstants.STYLE_ROTATION]||"0",z),z=null!=M?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,L=null!=this.state.text?this.state.text.boundingBox:null,null==M&&(M=this.state),M=M.y+M.height,null!=L&&(M=Math.max(M,L.y+L.height)),this.linkHint.style.left=Math.max(0,Math.round(z.x+(z.width-this.linkHint.clientWidth)/
-2))+"px",this.linkHint.style.top=Math.round(M+this.verticalOffset/2+Editor.hintOffset)+"px")};var $a=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){$a.apply(this,arguments);if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)null!=this.moveHandles[z]&&null!=this.moveHandles[z].parentNode&&this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}if(null!=this.cornerHandles){for(z=0;z<this.cornerHandles.length;z++)null!=this.cornerHandles[z]&&
+mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(ha){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(ha)}));var U=M.cloneNode(!0);U.setAttribute("src",Editor.trashImage);U.setAttribute("title",mxResources.get("removeIt",
+[mxResources.get("link")]));U.style.marginLeft="4px";this.linkHint.appendChild(U);mxEvent.addListener(U,"click",mxUtils.bind(this,function(ha){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(ha)}))}if(null!=K)for(M=0;M<K.length;M++){var W=document.createElement("div");W.style.marginTop=null!=z||0<M?"6px":"0px";W.appendChild(this.graph.createLinkForHint(K[M].getAttribute("href"),mxUtils.getTextContent(K[M])));this.linkHint.appendChild(W)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(ha){}};
+mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Pa=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Pa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var z=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&
+this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(U,W){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));z();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var K=this.graph.getLinkForCell(this.state.cell),M=this.graph.getLinksForState(this.state);if(null!=
+K||null!=M&&0<M.length)this.updateLinkHint(K,M),this.redrawHandles()};var Ta=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Ta.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Oa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.left=this.moveHandles[z].rowState.x+
+this.moveHandles[z].rowState.width-5+"px",this.moveHandles[z].style.top=this.moveHandles[z].rowState.y+this.moveHandles[z].rowState.height/2-6+"px";if(null!=this.cornerHandles){z=this.getSelectionBorderInset();var K=this.cornerHandles,M=K[0].bounds.height/2;K[0].bounds.x=this.state.x-K[0].bounds.width/2+z;K[0].bounds.y=this.state.y-M+z;K[0].redraw();K[1].bounds.x=K[0].bounds.x+this.state.width-2*z;K[1].bounds.y=K[0].bounds.y;K[1].redraw();K[2].bounds.x=K[0].bounds.x;K[2].bounds.y=this.state.y+this.state.height-
+2*z;K[2].redraw();K[3].bounds.x=K[1].bounds.x;K[3].bounds.y=K[2].bounds.y;K[3].redraw();for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].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":"");Oa.apply(this);null!=this.state&&null!=this.linkHint&&(z=new mxPoint(this.state.getCenterX(),
+this.state.getCenterY()),K=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),M=mxUtils.getBoundingBox(K,this.state.style[mxConstants.STYLE_ROTATION]||"0",z),z=null!=M?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,K=null!=this.state.text?this.state.text.boundingBox:null,null==M&&(M=this.state),M=M.y+M.height,null!=K&&(M=Math.max(M,K.y+K.height)),this.linkHint.style.left=Math.max(0,Math.round(z.x+(z.width-this.linkHint.clientWidth)/
+2))+"px",this.linkHint.style.top=Math.round(M+this.verticalOffset/2+Editor.hintOffset)+"px")};var Xa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){Xa.apply(this,arguments);if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)null!=this.moveHandles[z]&&null!=this.moveHandles[z].parentNode&&this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}if(null!=this.cornerHandles){for(z=0;z<this.cornerHandles.length;z++)null!=this.cornerHandles[z]&&
null!=this.cornerHandles[z].node&&null!=this.cornerHandles[z].node.parentNode&&this.cornerHandles[z].node.parentNode.removeChild(this.cornerHandles[z].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 Ga=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Ga.apply(this),null!=this.state&&null!=this.linkHint)){var z=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(z=new mxRectangle(z.x,z.y,z.width,z.height),z.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(z.x+(z.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=
Math.round(z.y+z.height+Editor.hintOffset)+"px"}};var eb=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){eb.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var bb=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){bb.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(c,l,x){mxShape.call(this);this.line=c;this.stroke=l;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function q(){mxShape.call(this)}
-function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function I(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function ca(){mxActor.call(this)}function ba(){mxActor.call(this)}function Z(){mxActor.call(this)}function qa(){mxActor.call(this)}function N(){mxActor.call(this)}function Y(c,l){this.canvas=c;this.canvas.setLineJoin("round");
-this.canvas.setLineCap("round");this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,Y.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,Y.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,Y.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,Y.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
-Y.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,Y.prototype.arcTo)}function ea(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function V(){mxActor.call(this)}function J(){mxActor.call(this)}function W(){mxRectangleShape.call(this)}function Q(){mxRectangleShape.call(this)}function S(){mxCylinder.call(this)}function ha(){mxShape.call(this)}function la(){mxShape.call(this)}function u(){mxEllipse.call(this)}
-function H(){mxShape.call(this)}function O(){mxShape.call(this)}function T(){mxRectangleShape.call(this)}function R(){mxShape.call(this)}function da(){mxShape.call(this)}function P(){mxShape.call(this)}function ma(){mxShape.call(this)}function ra(){mxShape.call(this)}function xa(){mxCylinder.call(this)}function ta(){mxCylinder.call(this)}function Aa(){mxRectangleShape.call(this)}function Ca(){mxDoubleEllipse.call(this)}function Ba(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);
-this.spacing=0}function Oa(){mxArrowConnector.call(this);this.spacing=0}function Ta(){mxActor.call(this)}function Sa(){mxRectangleShape.call(this)}function $a(){mxActor.call(this)}function Ga(){mxActor.call(this)}function eb(){mxActor.call(this)}function bb(){mxActor.call(this)}function z(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function U(){mxActor.call(this)}function X(){mxActor.call(this)}function fa(){mxActor.call(this)}function na(){mxEllipse.call(this)}
-function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function za(){mxRhombus.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxEllipse.call(this)}function Ua(){mxEllipse.call(this)}function Ra(){mxActor.call(this)}function Fa(){mxActor.call(this)}function va(){mxActor.call(this)}function ya(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
-!0;this.indent=2;this.rectOutline="single"}function Na(){mxConnector.call(this)}function Ja(c,l,x,p,v,A,B,ia,K,wa){B+=K;var oa=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(oa.x-v-B,oa.y-A-B,2*B,2*B);wa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
-c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
-p=0;p<this.line.length&&!l;p++){var v=this.line[p];null!=v&&null!=x&&(l=mxUtils.rectangleIntersectsSegment(c,x,v));x=v}return l};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,l,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):
-!1,B=this.isHorizontal(),ia=this.getTitleSize();0==ia||this.outline?La.prototype.paintVertexShape.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-l,-x));A||this.outline||!(B&&ia<v||!B&&ia<p)||this.paintForeground(c,l,x,p,v)};e.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ia=A;A=B;B=ia}c.rotate(-this.getShapeRotation(),
-A,B,l+p/2,x+v/2);s=this.scale;l=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/s;this.paintTableForeground(c,l,x,p,v)}};e.prototype.paintTableForeground=function(c,l,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],l,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?
-c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,
-parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ia=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),
-c.lineTo(A,A),c.close(),c.fill()),0!=ia&&(c.setFillAlpha(Math.abs(ia)),c.setFillColor(0>ia?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(A,A),c.lineTo(A,v),c.lineTo(0,v-A),c.close(),c.fill()),c.begin(),c.moveTo(A,v),c.lineTo(A,A),c.lineTo(0,0),c.moveTo(A,A),c.lineTo(p,A),c.end(),c.stroke())};n.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",
-n);var Pa=Math.tan(mxUtils.toRadians(30)),Ya=(.5-Pa)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,l,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(l+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=
-20;t.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/Pa);c.translate((p-l)/2,(v-l)/2+l/4);c.moveTo(0,.25*l);c.lineTo(.5*l,l*Ya);c.lineTo(l,.25*l);c.lineTo(.5*l,(.5-Ya)*l);c.lineTo(0,.25*l);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(p,v/(.5+Pa));A?(c.moveTo(0,.25*l),c.lineTo(.5*l,(.5-Ya)*l),c.lineTo(l,.25*l),c.moveTo(.5*l,(.5-Ya)*l),c.lineTo(.5*l,(1-Ya)*l)):(c.translate((p-
-l)/2,(v-l)/2),c.moveTo(0,.25*l),c.lineTo(.5*l,l*Ya),c.lineTo(l,.25*l),c.lineTo(l,.75*l),c.lineTo(.5*l,(1-Ya)*l),c.lineTo(0,.75*l),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),
-c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,-l);A||(c.moveTo(0,l),c.curveTo(0,-l/3,p,-l/3,p,l),c.lineTo(p,v-l),c.curveTo(p,v+l/3,0,v+l/3,0,v-l),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=
-function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-
-A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=
-function(c,l,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(l,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(q,mxShape);
-q.prototype.size=15;q.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};
-mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=15;y.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),
-c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=
-60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;C.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ia=mxUtils.getValue(this.style,"absoluteArcSize",!1),K=parseFloat(mxUtils.getValue(this.style,
-"arcSize",this.arcSize));ia||(K*=Math.min(p,v));K=Math.min(K,.5*p,.5*(v-x));l=Math.max(l,K);l=Math.min(p-K,l);B||(K=0);c.begin();"left"==A?(c.moveTo(Math.max(K,0),x),c.lineTo(Math.max(K,0),0),c.lineTo(l,0),c.lineTo(l,x)):(c.moveTo(p-l,x),c.lineTo(p-l,0),c.lineTo(p-Math.max(K,0),0),c.lineTo(p-Math.max(K,0),x));B?(c.moveTo(0,K+x),c.arcTo(K,K,0,0,1,K,x),c.lineTo(p-K,x),c.arcTo(K,K,0,0,1,p,K+x),c.lineTo(p,v-K),c.arcTo(K,K,0,0,1,p-K,v),c.lineTo(K,v),c.arcTo(K,K,0,0,1,0,v-K)):(c.moveTo(0,x),c.lineTo(p,
-x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,
-"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,
-c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};mxUtils.extend(I,mxCylinder);I.prototype.arcSize=.1;I.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(l*=Math.min(p,v));l=Math.min(l,.5*p,.5*v);A||(l=
-0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,l);c.arcTo(l,l,0,0,1,A+l,0);c.lineTo(p-l,0);c.arcTo(l,l,0,0,1,p,l);c.lineTo(p,v-l);c.arcTo(l,l,0,0,1,p-l,v);c.lineTo(A+l,v);c.arcTo(l,l,0,0,1,A,v-l);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,
-20,20),c.fillAndStroke()):"connPointRefExit"==x&&(c.ellipse(0,.5*v-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*v-5),c.lineTo(15,.5*v+5),c.moveTo(15,.5*v-5),c.lineTo(5,.5*v+5),c.stroke())};I.prototype.getLabelMargins=function(c){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",I);mxUtils.extend(G,mxActor);G.prototype.size=30;G.prototype.isRoundable=
-function(){return!0};G.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(aa,mxActor);aa.prototype.size=.4;aa.prototype.redrawPath=function(c,l,
-x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,l/2);c.quadTo(p/4,1.4*l,p/2,l/2);c.quadTo(3*p/4,l*(1-1.4),p,l/2);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};aa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
-this.direction==mxConstants.DIRECTION_WEST)return l*=p,new mxRectangle(c.x,c.y+l,x,p-2*l);l*=x;return new mxRectangle(c.x+l,c.y,x-2*l,p)}return c};mxCellRenderer.registerShape("tape",aa);mxUtils.extend(ca,mxActor);ca.prototype.size=.3;ca.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};ca.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));c.moveTo(0,0);c.lineTo(p,0);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};mxCellRenderer.registerShape("document",ca);var cb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,l,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):cb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
-"boundedLbl",!1)){var l=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*l),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(l/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*l*this.scale),0,Math.max(0,.3*l*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
-"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==
-mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};I.prototype.getLabelMargins=function(c){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(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,Math.max(0,l*this.scale))}return null};mxUtils.extend(ba,mxActor);ba.prototype.size=.2;ba.prototype.fixedSize=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
-p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p-l,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",ba);mxUtils.extend(Z,mxActor);Z.prototype.size=.2;Z.prototype.fixedSize=20;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(c,l,x,p,v){l="0"!=
-mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Z);mxUtils.extend(qa,mxActor);qa.prototype.size=
-.5;qa.prototype.redrawPath=function(c,l,x,p,v){c.setFillColor(null);l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(l,0),new mxPoint(l,v/2),new mxPoint(0,v/2),new mxPoint(l,v/2),new mxPoint(l,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(N,mxActor);N.prototype.redrawPath=
-function(c,l,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);l=p/5;c.rect(0,0,l,v);c.fillAndStroke();c.rect(2*l,0,l,v);c.fillAndStroke();c.rect(4*l,0,l,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",N);Y.prototype.moveTo=function(c,l){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;this.firstX=c;this.firstY=l};Y.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)};Y.prototype.quadTo=function(c,l,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};Y.prototype.curveTo=function(c,l,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};Y.prototype.arcTo=function(c,l,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};Y.prototype.lineTo=function(c,l){if(null!=this.lastX&&null!=this.lastY){var x=function(oa){return"number"===
-typeof oa?oa?0>oa?-1:1:oa===oa?0:NaN:NaN},p=Math.abs(c-this.lastX),v=Math.abs(l-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;return}var B=Math.round(A/10),ia=this.defaultVariation;5>B&&(B=5,ia/=3);var K=x(c-this.lastX)*p/B;x=x(l-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var wa=(Math.random()-.5)*ia;this.originalLineTo.call(this.canvas,K*A+this.lastX-wa*v,x*A+this.lastY-wa*p)}this.originalLineTo.call(this.canvas,c,l)}else this.originalLineTo.apply(this.canvas,
-arguments);this.lastX=c;this.lastY=l};Y.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 fb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){fb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};
-var qb=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(c){qb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new Y(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var ab=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,l,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=Y)ab.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function I(){mxCylinder.call(this)}function G(){mxActor.call(this)}function Z(){mxActor.call(this)}function ca(){mxActor.call(this)}function aa(){mxActor.call(this)}function Y(){mxActor.call(this)}function qa(){mxActor.call(this)}function Q(){mxActor.call(this)}function X(c,l){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,X.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,X.prototype.arcTo)}function fa(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ia(){mxActor.call(this)}function V(){mxActor.call(this)}function L(){mxActor.call(this)}function ea(){mxRectangleShape.call(this)}function O(){mxRectangleShape.call(this)}function N(){mxCylinder.call(this)}function ba(){mxShape.call(this)}function la(){mxShape.call(this)}function u(){mxEllipse.call(this)}function H(){mxShape.call(this)}
+function P(){mxShape.call(this)}function T(){mxRectangleShape.call(this)}function S(){mxShape.call(this)}function da(){mxShape.call(this)}function R(){mxShape.call(this)}function ma(){mxShape.call(this)}function ra(){mxShape.call(this)}function xa(){mxCylinder.call(this)}function ta(){mxCylinder.call(this)}function Aa(){mxRectangleShape.call(this)}function Ca(){mxDoubleEllipse.call(this)}function Ba(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function Pa(){mxArrowConnector.call(this);
+this.spacing=0}function Ta(){mxActor.call(this)}function Oa(){mxRectangleShape.call(this)}function Xa(){mxActor.call(this)}function Ga(){mxActor.call(this)}function eb(){mxActor.call(this)}function bb(){mxActor.call(this)}function z(){mxActor.call(this)}function K(){mxActor.call(this)}function M(){mxActor.call(this)}function U(){mxActor.call(this)}function W(){mxActor.call(this)}function ha(){mxActor.call(this)}function na(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}
+function za(){mxRhombus.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxEllipse.call(this)}function Ua(){mxEllipse.call(this)}function Sa(){mxActor.call(this)}function Fa(){mxActor.call(this)}function va(){mxActor.call(this)}function ya(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Na(){mxConnector.call(this)}
+function Ja(c,l,x,p,v,A,B,ja,J,wa){B+=J;var oa=p.clone();p.x-=v*(2*B+J);p.y-=A*(2*B+J);v*=B+J;A*=B+J;return function(){c.ellipse(oa.x-v-B,oa.y-A-B,2*B,2*B);wa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=
+function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,p=0;p<this.line.length&&!l;p++){var v=this.line[p];null!=v&&null!=x&&(l=mxUtils.rectangleIntersectsSegment(c,
+x,v));x=v}return l};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,l,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,B=this.isHorizontal(),ja=this.getTitleSize();0==ja||this.outline?La.prototype.paintVertexShape.apply(this,
+arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-l,-x));A||this.outline||!(B&&ja<v||!B&&ja<p)||this.paintForeground(c,l,x,p,v)};e.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ja=A;A=B;B=ja}c.rotate(-this.getShapeRotation(),A,B,l+p/2,x+v/2);s=this.scale;l=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/
+s;this.paintTableForeground(c,l,x,p,v)}};e.prototype.paintTableForeground=function(c,l,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],l,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
+e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ja=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"darkOpacity2",this.darkOpacity2))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),c.lineTo(A,A),c.close(),c.fill()),0!=ja&&(c.setFillAlpha(Math.abs(ja)),c.setFillColor(0>ja?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(A,
+A),c.lineTo(A,v),c.lineTo(0,v-A),c.close(),c.fill()),c.begin(),c.moveTo(A,v),c.lineTo(A,A),c.lineTo(0,0),c.moveTo(A,A),c.lineTo(p,A),c.end(),c.stroke())};n.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",n);var Qa=Math.tan(mxUtils.toRadians(30)),Za=(.5-Qa)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,
+mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,l,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(l+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=20;t.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/Qa);c.translate((p-l)/2,(v-l)/2+l/4);c.moveTo(0,
+.25*l);c.lineTo(.5*l,l*Za);c.lineTo(l,.25*l);c.lineTo(.5*l,(.5-Za)*l);c.lineTo(0,.25*l);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(p,v/(.5+Qa));A?(c.moveTo(0,.25*l),c.lineTo(.5*l,(.5-Za)*l),c.lineTo(l,.25*l),c.moveTo(.5*l,(.5-Za)*l),c.lineTo(.5*l,(1-Za)*l)):(c.translate((p-l)/2,(v-l)/2),c.moveTo(0,.25*l),c.lineTo(.5*l,l*Za),c.lineTo(l,.25*l),c.lineTo(l,.75*l),c.lineTo(.5*
+l,(1-Za)*l),c.lineTo(0,.75*l),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,
+-l);A||(c.moveTo(0,l),c.curveTo(0,-l/3,p,-l/3,p,l),c.lineTo(p,v-l),c.curveTo(p,v+l/3,0,v+l/3,0,v-l),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",
+this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),
+c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
+"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(l,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(q,mxShape);q.prototype.size=15;q.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*
+v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=
+15;y.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),
+B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;
+C.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ja=mxUtils.getValue(this.style,"absoluteArcSize",!1),J=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));ja||(J*=Math.min(p,v));
+J=Math.min(J,.5*p,.5*(v-x));l=Math.max(l,J);l=Math.min(p-J,l);B||(J=0);c.begin();"left"==A?(c.moveTo(Math.max(J,0),x),c.lineTo(Math.max(J,0),0),c.lineTo(l,0),c.lineTo(l,x)):(c.moveTo(p-l,x),c.lineTo(p-l,0),c.lineTo(p-Math.max(J,0),0),c.lineTo(p-Math.max(J,0),x));B?(c.moveTo(0,J+x),c.arcTo(J,J,0,0,1,J,x),c.lineTo(p-J,x),c.arcTo(J,J,0,0,1,p,J+x),c.lineTo(p,v-J),c.arcTo(J,J,0,0,1,p-J,v),c.lineTo(J,v),c.arcTo(J,J,0,0,1,0,v-J)):(c.moveTo(0,x),c.lineTo(p,x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();
+c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,
+"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-
+l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};mxUtils.extend(I,mxCylinder);I.prototype.arcSize=.1;I.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(l*=Math.min(p,v));l=Math.min(l,.5*p,.5*v);A||(l=0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,
+l);c.arcTo(l,l,0,0,1,A+l,0);c.lineTo(p-l,0);c.arcTo(l,l,0,0,1,p,l);c.lineTo(p,v-l);c.arcTo(l,l,0,0,1,p-l,v);c.lineTo(A+l,v);c.arcTo(l,l,0,0,1,A,v-l);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,20,20),c.fillAndStroke()):"connPointRefExit"==
+x&&(c.ellipse(0,.5*v-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*v-5),c.lineTo(15,.5*v+5),c.moveTo(15,.5*v-5),c.lineTo(5,.5*v+5),c.stroke())};I.prototype.getLabelMargins=function(c){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",I);mxUtils.extend(G,mxActor);G.prototype.size=30;G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=
+function(c,l,x,p,v){l=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(Z,mxActor);Z.prototype.size=.4;Z.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));c.moveTo(0,l/2);c.quadTo(p/4,1.4*l,p/2,l/2);c.quadTo(3*p/4,l*(1-1.4),p,l/2);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};Z.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return l*=
+p,new mxRectangle(c.x,c.y+l,x,p-2*l);l*=x;return new mxRectangle(c.x+l,c.y,x-2*l,p)}return c};mxCellRenderer.registerShape("tape",Z);mxUtils.extend(ca,mxActor);ca.prototype.size=.3;ca.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};ca.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
+0);c.lineTo(p,0);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};mxCellRenderer.registerShape("document",ca);var cb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,l,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):cb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=2*mxUtils.getValue(this.style,
+"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*l),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(l/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*l*this.scale),0,Math.max(0,.3*l*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,
+"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
+this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};I.prototype.getLabelMargins=function(c){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(c){if(mxUtils.getValue(this.style,
+"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,Math.max(0,l*this.scale))}return null};mxUtils.extend(aa,mxActor);aa.prototype.size=.2;aa.prototype.fixedSize=20;aa.prototype.isRoundable=function(){return!0};aa.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p-l,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",aa);mxUtils.extend(Y,mxActor);Y.prototype.size=.2;Y.prototype.fixedSize=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
+p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Y);mxUtils.extend(qa,mxActor);qa.prototype.size=.5;qa.prototype.redrawPath=function(c,l,x,p,v){c.setFillColor(null);
+l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(l,0),new mxPoint(l,v/2),new mxPoint(0,v/2),new mxPoint(l,v/2),new mxPoint(l,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(c,l,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);
+l=p/5;c.rect(0,0,l,v);c.fillAndStroke();c.rect(2*l,0,l,v);c.fillAndStroke();c.rect(4*l,0,l,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",Q);X.prototype.moveTo=function(c,l){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;this.firstX=c;this.firstY=l};X.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)};
+X.prototype.quadTo=function(c,l,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};X.prototype.curveTo=function(c,l,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};X.prototype.arcTo=function(c,l,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};X.prototype.lineTo=function(c,l){if(null!=this.lastX&&null!=this.lastY){var x=function(oa){return"number"===typeof oa?oa?0>oa?-1:1:oa===oa?0:NaN:NaN},p=
+Math.abs(c-this.lastX),v=Math.abs(l-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;return}var B=Math.round(A/10),ja=this.defaultVariation;5>B&&(B=5,ja/=3);var J=x(c-this.lastX)*p/B;x=x(l-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var wa=(Math.random()-.5)*ja;this.originalLineTo.call(this.canvas,J*A+this.lastX-wa*v,x*A+this.lastY-wa*p)}this.originalLineTo.call(this.canvas,c,l)}else this.originalLineTo.apply(this.canvas,arguments);
+this.lastX=c;this.lastY=l};X.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 fb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){fb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var qb=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(c){qb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new X(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var ab=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,l,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=X)ab.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(A||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)A||null!=this.fill&&this.fill!=mxConstants.NONE||(c.pointerEvents=!1),c.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?A=Math.min(p/2,Math.min(v/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,A=Math.min(p*
-A,v*A)),c.moveTo(l+A,x),c.lineTo(l+p-A,x),c.quadTo(l+p,x,l+p,x+A),c.lineTo(l+p,x+v-A),c.quadTo(l+p,x+v,l+p-A,x+v),c.lineTo(l+A,x+v),c.quadTo(l,x+v,l,x+v-A),c.lineTo(l,x+A),c.quadTo(l,x,l+A,x)):(c.moveTo(l,x),c.lineTo(l+p,x),c.lineTo(l+p,x+v),c.lineTo(l,x+v),c.lineTo(l,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=.1;ea.prototype.fixedSize=!1;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
+A,v*A)),c.moveTo(l+A,x),c.lineTo(l+p-A,x),c.quadTo(l+p,x,l+p,x+A),c.lineTo(l+p,x+v-A),c.quadTo(l+p,x+v,l+p-A,x+v),c.lineTo(l+A,x+v),c.quadTo(l,x+v,l,x+v-A),c.lineTo(l,x+A),c.quadTo(l,x,l+A,x)):(c.moveTo(l,x),c.lineTo(l+p,x),c.lineTo(l+p,x+v),c.lineTo(l,x+v),c.lineTo(l,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var l=c.width,x=c.height;c=new mxRectangle(c.x,c.y,l,x);var p=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;p=Math.max(p,Math.min(l*v,x*v))}c.x+=Math.round(p);c.width-=Math.round(2*p);return c}return c};
-ea.prototype.paintForeground=function(c,l,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.moveTo(l+p-B,x);c.lineTo(l+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
-arguments)};mxCellRenderer.registerShape("process",ea);mxCellRenderer.registerShape("process2",ea);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,l,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,l,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ja,mxHexagon);ja.prototype.size=30;ja.prototype.position=.5;ja.prototype.position2=.5;ja.prototype.base=20;ja.prototype.getLabelMargins=function(){return new mxRectangle(0,
-0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(c,l,x,p,v){l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),ia=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ia),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,l,!0,[4])};mxCellRenderer.registerShape("callout",ja);mxUtils.extend(V,mxActor);V.prototype.size=.2;V.prototype.fixedSize=20;V.prototype.isRoundable=function(){return!0};V.prototype.redrawPath=function(c,l,x,p,
+fa.prototype.paintForeground=function(c,l,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.moveTo(l+p-B,x);c.lineTo(l+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,l,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,l,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ia,mxHexagon);ia.prototype.size=30;ia.prototype.position=.5;ia.prototype.position2=.5;ia.prototype.base=20;ia.prototype.getLabelMargins=function(){return new mxRectangle(0,
+0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,l,x,p,v){l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
+this.position2)))),ja=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ja),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,l,!0,[4])};mxCellRenderer.registerShape("callout",ia);mxUtils.extend(V,mxActor);V.prototype.size=.2;V.prototype.fixedSize=20;V.prototype.isRoundable=function(){return!0};V.prototype.redrawPath=function(c,l,x,p,
v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(0,v),new mxPoint(l,v/2)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("step",
-V);mxUtils.extend(J,mxHexagon);J.prototype.size=.25;J.prototype.fixedSize=20;J.prototype.isRoundable=function(){return!0};J.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,
-0),new mxPoint(p-l,0),new mxPoint(p,.5*v),new mxPoint(p-l,v),new mxPoint(l,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",J);mxUtils.extend(W,mxRectangleShape);W.prototype.isHtmlAllowed=function(){return!1};W.prototype.paintForeground=function(c,l,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(l+p/2,x+A);c.lineTo(l+p/2,x+v-A);c.moveTo(l+A,x+v/2);c.lineTo(l+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-W);var db=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};mxRhombus.prototype.paintVertexShape=function(c,l,x,p,v){db.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
-0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),db.apply(this,[c,l,x,p,v]))}};mxUtils.extend(Q,mxRectangleShape);Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};Q.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ia=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],wa=this.style["symbol"+A+"Width"],oa=this.style["symbol"+A+"Height"],Za=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
-Za,hb=this.style["symbol"+A+"ArcSpacing"];null!=hb&&(hb*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),Za+=hb,jb+=hb);hb=l;var Ea=x;hb=ia==mxConstants.ALIGN_CENTER?hb+(p-wa)/2:ia==mxConstants.ALIGN_RIGHT?hb+(p-wa-Za):hb+Za;Ea=K==mxConstants.ALIGN_MIDDLE?Ea+(v-oa)/2:K==mxConstants.ALIGN_BOTTOM?Ea+(v-oa-jb):Ea+jb;c.save();ia=new B;ia.style=this.style;B.prototype.paintVertexShape.call(ia,c,hb,Ea,wa,oa);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
-mxCellRenderer.registerShape("ext",Q);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(ha,mxShape);ha.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
-2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ha);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-la);mxUtils.extend(u,mxEllipse);u.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",u);mxUtils.extend(H,mxShape);H.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(O,mxShape);
-O.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};O.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};O.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",O);mxUtils.extend(T,mxRectangleShape);T.prototype.size=
+V);mxUtils.extend(L,mxHexagon);L.prototype.size=.25;L.prototype.fixedSize=20;L.prototype.isRoundable=function(){return!0};L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,
+0),new mxPoint(p-l,0),new mxPoint(p,.5*v),new mxPoint(p-l,v),new mxPoint(l,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",L);mxUtils.extend(ea,mxRectangleShape);ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.paintForeground=function(c,l,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(l+p/2,x+A);c.lineTo(l+p/2,x+v-A);c.moveTo(l+A,x+v/2);c.lineTo(l+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
+mxCellRenderer.registerShape("plus",ea);var db=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};mxRhombus.prototype.paintVertexShape=function(c,l,x,p,v){db.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),db.apply(this,[c,l,x,p,v]))}};mxUtils.extend(O,mxRectangleShape);O.prototype.isHtmlAllowed=function(){return!1};O.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};O.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ja=this.style["symbol"+A+"Align"],J=this.style["symbol"+A+"VerticalAlign"],wa=this.style["symbol"+A+"Width"],oa=this.style["symbol"+A+"Height"],$a=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
+$a,hb=this.style["symbol"+A+"ArcSpacing"];null!=hb&&(hb*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),$a+=hb,jb+=hb);hb=l;var Ea=x;hb=ja==mxConstants.ALIGN_CENTER?hb+(p-wa)/2:ja==mxConstants.ALIGN_RIGHT?hb+(p-wa-$a):hb+$a;Ea=J==mxConstants.ALIGN_MIDDLE?Ea+(v-oa)/2:J==mxConstants.ALIGN_BOTTOM?Ea+(v-oa-jb):Ea+jb;c.save();ja=new B;ja.style=this.style;B.prototype.paintVertexShape.call(ja,c,hb,Ea,wa,oa);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
+mxCellRenderer.registerShape("ext",O);mxUtils.extend(N,mxCylinder);N.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",N);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
+2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ba);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+la);mxUtils.extend(u,mxEllipse);u.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",u);mxUtils.extend(H,mxShape);H.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(P,mxShape);
+P.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};P.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};P.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",P);mxUtils.extend(T,mxRectangleShape);T.prototype.size=
40;T.prototype.isHtmlAllowed=function(){return!1};T.prototype.getLabelBounds=function(c){var l=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,l)};T.prototype.paintBackground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,l,
x,p,A):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=T&&(B=new B,B.apply(this.state),c.save(),B.paintVertexShape(c,l,x,p,A),c.restore()));A<v&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(l+p/2,x+A),c.lineTo(l+p/2,x+v),c.end(),c.stroke())};T.prototype.paintForeground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,l,x,p,Math.min(v,
-A))};mxCellRenderer.registerShape("umlLifeline",T);mxUtils.extend(R,mxShape);R.prototype.width=60;R.prototype.height=30;R.prototype.corner=10;R.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};R.prototype.paintBackground=function(c,l,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
-"width",this.width)))),ia=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),K=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);K!=mxConstants.NONE&&(c.setFillColor(K),c.rect(l,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,l,x,p,v),c.setGradient(this.fill,this.gradient,l,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
-c.moveTo(l,x);c.lineTo(l+B,x);c.lineTo(l+B,x+Math.max(0,ia-1.5*A));c.lineTo(l+Math.max(0,B-A),x+ia);c.lineTo(l,x+ia);c.close();c.fillAndStroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+p,x);c.lineTo(l+p,x+v);c.lineTo(l,x+v);c.lineTo(l,x+ia);c.stroke()};mxCellRenderer.registerShape("umlFrame",R);mxPerimeter.CenterPerimeter=function(c,l,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
+A))};mxCellRenderer.registerShape("umlLifeline",T);mxUtils.extend(S,mxShape);S.prototype.width=60;S.prototype.height=30;S.prototype.corner=10;S.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};S.prototype.paintBackground=function(c,l,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
+"width",this.width)))),ja=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),J=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);J!=mxConstants.NONE&&(c.setFillColor(J),c.rect(l,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,l,x,p,v),c.setGradient(this.fill,this.gradient,l,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
+c.moveTo(l,x);c.lineTo(l+B,x);c.lineTo(l+B,x+Math.max(0,ja-1.5*A));c.lineTo(l+Math.max(0,B-A),x+ja);c.lineTo(l,x+ja);c.close();c.fillAndStroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+p,x);c.lineTo(l+p,x+v);c.lineTo(l,x+v);c.lineTo(l,x+ja);c.stroke()};mxCellRenderer.registerShape("umlFrame",S);mxPerimeter.CenterPerimeter=function(c,l,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
l,x,p){p=T.prototype.size;null!=l&&(p=mxUtils.getValue(l.style,"size",p)*l.view.scale);l=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;x.x<c.getCenterX()&&(l=-1*(l+1));return new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y+p,x.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,l,x,p){p=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,l,x,p){p=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;null!=l.style.backboneSize&&(p+=parseFloat(l.style.backboneSize)*l.view.scale/2-1);if("south"==l.style[mxConstants.STYLE_DIRECTION]||"north"==l.style[mxConstants.STYLE_DIRECTION])return x.x<c.getCenterX()&&(p=-1*(p+1)),new mxPoint(c.getCenterX()+p,Math.min(c.y+c.height,Math.max(c.y,x.y)));x.y<c.getCenterY()&&(p=-1*(p+1));return new mxPoint(Math.min(c.x+
-c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,l,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(l.style,"size",ja.prototype.size))*l.view.scale))),l.style),l,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
-l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?ba.prototype.fixedSize:ba.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ia=c.y,K=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+K,ia+v),new mxPoint(B+
-K,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia)]):(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K,ia),new mxPoint(B+K-v,ia+wa),new mxPoint(B,ia+wa),new mxPoint(B+v,ia)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ia,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,l,x,p){var v="0"!=
-mxUtils.getValue(l.style,"fixedSize","0"),A=v?Z.prototype.fixedSize:Z.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ia=c.y,K=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K-v,ia),new mxPoint(B+K,ia+wa),new mxPoint(B,ia+wa),new mxPoint(B+
-v,ia)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+K,ia),new mxPoint(B+K-v,ia+wa),new mxPoint(B+v,ia+wa),new mxPoint(B,ia)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia+v),new mxPoint(B+K,ia),new mxPoint(B+K,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+
-K,ia+v),new mxPoint(B+K,ia+wa-v),new mxPoint(B,ia+wa),new mxPoint(B,ia)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ia,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?V.prototype.fixedSize:V.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,
-ia=c.y,K=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+K-v,ia),new mxPoint(B+K,c),new mxPoint(B+K-v,ia+wa),new mxPoint(B,ia+wa),new mxPoint(B+v,c),new mxPoint(B,ia)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,
-A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K,ia),new mxPoint(B+K-v,c),new mxPoint(B+K,ia+wa),new mxPoint(B+v,ia+wa),new mxPoint(B,c),new mxPoint(B+v,ia)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia+v),new mxPoint(oa,ia),new mxPoint(B+K,ia+v),new mxPoint(B+K,ia+wa),new mxPoint(oa,ia+wa-v),new mxPoint(B,ia+wa),new mxPoint(B,ia+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(oa,ia+
-v),new mxPoint(B+K,ia),new mxPoint(B+K,ia+wa-v),new mxPoint(oa,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+K?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ia,oa,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?J.prototype.fixedSize:J.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=
-c.x,ia=c.y,K=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(oa,ia),new mxPoint(B+K,ia+v),new mxPoint(B+K,ia+wa-v),new mxPoint(oa,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia+v),new mxPoint(oa,ia)]):(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,
-Math.min(1,A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K-v,ia),new mxPoint(B+K,c),new mxPoint(B+K-v,ia+wa),new mxPoint(B+v,ia+wa),new mxPoint(B,c),new mxPoint(B+v,ia)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+K?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ia,oa,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(da,mxShape);da.prototype.size=10;da.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
-c.translate(l,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",da);mxUtils.extend(P,mxShape);P.prototype.size=10;P.prototype.inset=2;P.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(l,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
-c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(ma,mxShape);ma.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",ma);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
+c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,l,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(l.style,"size",ia.prototype.size))*l.view.scale))),l.style),l,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
+l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?aa.prototype.fixedSize:aa.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ja=c.y,J=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+J,ja+v),new mxPoint(B+
+J,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja)]):(v=v?Math.max(0,Math.min(.5*J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J,ja),new mxPoint(B+J-v,ja+wa),new mxPoint(B,ja+wa),new mxPoint(B+v,ja)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+J?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ja,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,l,x,p){var v="0"!=
+mxUtils.getValue(l.style,"fixedSize","0"),A=v?Y.prototype.fixedSize:Y.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ja=c.y,J=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J-v,ja),new mxPoint(B+J,ja+wa),new mxPoint(B,ja+wa),new mxPoint(B+
+v,ja)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+J,ja),new mxPoint(B+J-v,ja+wa),new mxPoint(B+v,ja+wa),new mxPoint(B,ja)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja+v),new mxPoint(B+J,ja),new mxPoint(B+J,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+
+J,ja+v),new mxPoint(B+J,ja+wa-v),new mxPoint(B,ja+wa),new mxPoint(B,ja)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+J?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ja,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?V.prototype.fixedSize:V.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,
+ja=c.y,J=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+J-v,ja),new mxPoint(B+J,c),new mxPoint(B+J-v,ja+wa),new mxPoint(B,ja+wa),new mxPoint(B+v,c),new mxPoint(B,ja)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,Math.min(1,
+A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J,ja),new mxPoint(B+J-v,c),new mxPoint(B+J,ja+wa),new mxPoint(B+v,ja+wa),new mxPoint(B,c),new mxPoint(B+v,ja)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja+v),new mxPoint(oa,ja),new mxPoint(B+J,ja+v),new mxPoint(B+J,ja+wa),new mxPoint(oa,ja+wa-v),new mxPoint(B,ja+wa),new mxPoint(B,ja+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(oa,ja+
+v),new mxPoint(B+J,ja),new mxPoint(B+J,ja+wa-v),new mxPoint(oa,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+J?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ja,oa,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?L.prototype.fixedSize:L.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=
+c.x,ja=c.y,J=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(oa,ja),new mxPoint(B+J,ja+v),new mxPoint(B+J,ja+wa-v),new mxPoint(oa,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja+v),new mxPoint(oa,ja)]):(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,
+Math.min(1,A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J-v,ja),new mxPoint(B+J,c),new mxPoint(B+J-v,ja+wa),new mxPoint(B+v,ja+wa),new mxPoint(B,c),new mxPoint(B+v,ja)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+J?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ja,oa,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(da,mxShape);da.prototype.size=10;da.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
+c.translate(l,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",da);mxUtils.extend(R,mxShape);R.prototype.size=10;R.prototype.inset=2;R.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(l,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
+c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",R);mxUtils.extend(ma,mxShape);ma.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",ma);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
"inset",this.inset))+this.strokewidth;c.translate(l,x);c.ellipse(0,A,p-2*A,v-2*A);c.fillAndStroke();c.begin();c.moveTo(p/2,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(xa,mxCylinder);xa.prototype.jettyWidth=20;xa.prototype.jettyHeight=10;xa.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",
-this.jettyHeight));x=B/2;B=x+B/2;var ia=Math.min(l,v-l),K=Math.min(ia+2*l,v-l);A?(c.moveTo(x,ia),c.lineTo(B,ia),c.lineTo(B,ia+l),c.lineTo(x,ia+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,K),c.lineTo(x,ia+l),c.lineTo(0,ia+l),c.lineTo(0,ia),c.lineTo(x,ia),c.close());c.end()};mxCellRenderer.registerShape("module",xa);mxUtils.extend(ta,mxCylinder);ta.prototype.jettyWidth=
-32;ta.prototype.jettyHeight=12;ta.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ia=.3*v-l/2,K=.7*v-l/2;A?(c.moveTo(x,ia),c.lineTo(B,ia),c.lineTo(B,ia+l),c.lineTo(x,ia+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,
-K),c.lineTo(x,ia+l),c.lineTo(0,ia+l),c.lineTo(0,ia),c.lineTo(x,ia),c.close());c.end()};mxCellRenderer.registerShape("component",ta);mxUtils.extend(Aa,mxRectangleShape);Aa.prototype.paintForeground=function(c,l,x,p,v){var A=p/2,B=v/2,ia=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(l+A,x),new mxPoint(l+p,x+B),new mxPoint(l+A,x+v),new mxPoint(l,x+B)],this.isRounded,ia,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+this.jettyHeight));x=B/2;B=x+B/2;var ja=Math.min(l,v-l),J=Math.min(ja+2*l,v-l);A?(c.moveTo(x,ja),c.lineTo(B,ja),c.lineTo(B,ja+l),c.lineTo(x,ja+l),c.moveTo(x,J),c.lineTo(B,J),c.lineTo(B,J+l),c.lineTo(x,J+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,J+l),c.lineTo(0,J+l),c.lineTo(0,J),c.lineTo(x,J),c.lineTo(x,ja+l),c.lineTo(0,ja+l),c.lineTo(0,ja),c.lineTo(x,ja),c.close());c.end()};mxCellRenderer.registerShape("module",xa);mxUtils.extend(ta,mxCylinder);ta.prototype.jettyWidth=
+32;ta.prototype.jettyHeight=12;ta.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ja=.3*v-l/2,J=.7*v-l/2;A?(c.moveTo(x,ja),c.lineTo(B,ja),c.lineTo(B,ja+l),c.lineTo(x,ja+l),c.moveTo(x,J),c.lineTo(B,J),c.lineTo(B,J+l),c.lineTo(x,J+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,J+l),c.lineTo(0,J+l),c.lineTo(0,J),c.lineTo(x,
+J),c.lineTo(x,ja+l),c.lineTo(0,ja+l),c.lineTo(0,ja),c.lineTo(x,ja),c.close());c.end()};mxCellRenderer.registerShape("component",ta);mxUtils.extend(Aa,mxRectangleShape);Aa.prototype.paintForeground=function(c,l,x,p,v){var A=p/2,B=v/2,ja=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(l+A,x),new mxPoint(l+p,x+B),new mxPoint(l+A,x+v),new mxPoint(l,x+B)],this.isRounded,ja,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("associativeEntity",Aa);mxUtils.extend(Ca,mxDoubleEllipse);Ca.prototype.outerStroke=!0;Ca.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.min(4,Math.min(p/5,v/5));0<p&&0<v&&(c.ellipse(l+A,x+A,p-2*A,v-2*A),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(l,x,p,v),c.stroke())};mxCellRenderer.registerShape("endState",Ca);mxUtils.extend(Ba,Ca);Ba.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",Ba);mxUtils.extend(sa,mxArrowConnector);
-sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(Oa,mxArrowConnector);Oa.prototype.defaultWidth=10;Oa.prototype.defaultArrowWidth=20;Oa.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,
-"startWidth",this.defaultArrowWidth)};Oa.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Oa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Oa);mxUtils.extend(Ta,mxActor);Ta.prototype.size=30;Ta.prototype.isRoundable=function(){return!0};Ta.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,parseFloat(mxUtils.getValue(this.style,
-"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,l),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ta);mxUtils.extend(Sa,mxRectangleShape);Sa.prototype.dx=20;Sa.prototype.dy=20;Sa.prototype.isHtmlAllowed=function(){return!1};Sa.prototype.paintForeground=function(c,l,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
-var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(l,x+A);c.lineTo(l+p,x+A);c.end();c.stroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Sa);
-mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(l,x),
-new mxPoint(l,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",$a);mxUtils.extend(Ga,mxActor);Ga.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",Ga);mxUtils.extend(eb,mxActor);eb.prototype.dx=20;eb.prototype.dy=20;eb.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
+sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(Pa,mxArrowConnector);Pa.prototype.defaultWidth=10;Pa.prototype.defaultArrowWidth=20;Pa.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,
+"startWidth",this.defaultArrowWidth)};Pa.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Pa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Pa);mxUtils.extend(Ta,mxActor);Ta.prototype.size=30;Ta.prototype.isRoundable=function(){return!0};Ta.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,parseFloat(mxUtils.getValue(this.style,
+"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,l),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ta);mxUtils.extend(Oa,mxRectangleShape);Oa.prototype.dx=20;Oa.prototype.dy=20;Oa.prototype.isHtmlAllowed=function(){return!1};Oa.prototype.paintForeground=function(c,l,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
+var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(l,x+A);c.lineTo(l+p,x+A);c.end();c.stroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Oa);
+mxUtils.extend(Xa,mxActor);Xa.prototype.dx=20;Xa.prototype.dy=20;Xa.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(l,x),
+new mxPoint(l,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",Xa);mxUtils.extend(Ga,mxActor);Ga.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",Ga);mxUtils.extend(eb,mxActor);eb.prototype.dx=20;eb.prototype.dy=20;eb.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint((p+l)/2,x),new mxPoint((p+l)/2,v),new mxPoint((p-l)/2,v),new mxPoint((p-l)/2,x),new mxPoint(0,x)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("tee",eb);mxUtils.extend(bb,
mxActor);bb.prototype.arrowWidth=.3;bb.prototype.arrowSize=.2;bb.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-
l,v),new mxPoint(p-l,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("singleArrow",bb);mxUtils.extend(z,mxActor);z.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",bb.prototype.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",bb.prototype.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
-2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
-"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(U,mxActor);U.prototype.redrawPath=function(c,
-l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",U);mxUtils.extend(X,mxActor);X.prototype.size=20;X.prototype.isRoundable=function(){return!0};X.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,
-.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",X);mxUtils.extend(fa,mxActor);fa.prototype.size=.375;fa.prototype.isRoundable=function(){return!0};fa.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,
-v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(na,mxEllipse);na.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",na);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
+2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(K,mxActor);K.prototype.size=.1;K.prototype.fixedSize=20;K.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
+"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",K);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(U,mxActor);U.prototype.redrawPath=function(c,
+l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",U);mxUtils.extend(W,mxActor);W.prototype.size=20;W.prototype.isRoundable=function(){return!0};W.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,
+.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",W);mxUtils.extend(ha,mxActor);ha.prototype.size=.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,
+v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(na,mxEllipse);na.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",na);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(l+p/2,x);c.lineTo(l+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",ua);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l+.145*p,x+.145*v);c.lineTo(l+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(l+.855*p,x+.145*v);c.lineTo(l+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",pa);mxUtils.extend(za,mxRhombus);za.prototype.paintVertexShape=function(c,l,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",za);mxUtils.extend(Da,mxEllipse);Da.prototype.paintVertexShape=function(c,l,x,p,v){c.begin();c.moveTo(l,x);c.lineTo(l+p,x);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke();
-c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ia=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,ia);c.lineTo(l+A+B,ia-B/2);c.moveTo(l+A,ia);c.lineTo(l+A+B,ia+B/2);c.moveTo(l+A,ia);c.lineTo(l+p-A,ia);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,ia);c.lineTo(l+p-B-A,ia-B/2);c.moveTo(l+
-p-A,ia);c.lineTo(l+p-B-A,ia+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(La,mxEllipse);La.prototype.drawHidden=!0;La.prototype.paintVertexShape=function(c,l,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ia="1"==mxUtils.getValue(this.style,"top","1"),K="1"==mxUtils.getValue(this.style,
-"left","1"),wa="1"==mxUtils.getValue(this.style,"right","1"),oa="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ia||wa||oa||K?(c.rect(l,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(l,x),this.outline||ia?c.lineTo(l+p,x):c.moveTo(l+p,x),this.outline||wa?c.lineTo(l+p,x+v):c.moveTo(l+p,x+v),this.outline||oa?c.lineTo(l,x+v):c.moveTo(l,x+v),(this.outline||K)&&c.lineTo(l,x),c.end(),c.stroke(),c.setLineCap("flat")):
-c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",La);mxUtils.extend(Ua,mxEllipse);Ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(l+p/2,x),c.lineTo(l+p/2,x+v)):(c.moveTo(l,x+v/2),c.lineTo(l+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ua);mxUtils.extend(Ra,mxActor);Ra.prototype.redrawPath=function(c,
-l,x,p,v){l=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Ra);mxUtils.extend(Fa,mxActor);Fa.prototype.size=.2;Fa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,p);var A=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(v-A)/2;x=l+A;var B=(p-A)/2;A=B+A;c.moveTo(0,l);c.lineTo(B,l);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,l);c.lineTo(p,l);c.lineTo(p,x);
+c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ja=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,ja);c.lineTo(l+A+B,ja-B/2);c.moveTo(l+A,ja);c.lineTo(l+A+B,ja+B/2);c.moveTo(l+A,ja);c.lineTo(l+p-A,ja);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,ja);c.lineTo(l+p-B-A,ja-B/2);c.moveTo(l+
+p-A,ja);c.lineTo(l+p-B-A,ja+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(La,mxEllipse);La.prototype.drawHidden=!0;La.prototype.paintVertexShape=function(c,l,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ja="1"==mxUtils.getValue(this.style,"top","1"),J="1"==mxUtils.getValue(this.style,
+"left","1"),wa="1"==mxUtils.getValue(this.style,"right","1"),oa="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ja||wa||oa||J?(c.rect(l,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(l,x),this.outline||ja?c.lineTo(l+p,x):c.moveTo(l+p,x),this.outline||wa?c.lineTo(l+p,x+v):c.moveTo(l+p,x+v),this.outline||oa?c.lineTo(l,x+v):c.moveTo(l,x+v),(this.outline||J)&&c.lineTo(l,x),c.end(),c.stroke(),c.setLineCap("flat")):
+c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",La);mxUtils.extend(Ua,mxEllipse);Ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(l+p/2,x),c.lineTo(l+p/2,x+v)):(c.moveTo(l,x+v/2),c.lineTo(l+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ua);mxUtils.extend(Sa,mxActor);Sa.prototype.redrawPath=function(c,
+l,x,p,v){l=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Sa);mxUtils.extend(Fa,mxActor);Fa.prototype.size=.2;Fa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,p);var A=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(v-A)/2;x=l+A;var B=(p-A)/2;A=B+A;c.moveTo(0,l);c.lineTo(B,l);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,l);c.lineTo(p,l);c.lineTo(p,x);
c.lineTo(A,x);c.lineTo(A,v);c.lineTo(B,v);c.lineTo(B,x);c.lineTo(0,x);c.close();c.end()};mxCellRenderer.registerShape("cross",Fa);mxUtils.extend(va,mxActor);va.prototype.size=.25;va.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/2);x=Math.min(p-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*p);c.moveTo(0,v/2);c.lineTo(x,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(x,v);c.close();c.end()};mxCellRenderer.registerShape("display",va);mxUtils.extend(ya,
mxActor);ya.prototype.cst={RECT2:"mxgraph.basic.rect"};ya.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"}]}];ya.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,
-x);this.strictDrawShape(c,0,0,p,v)};ya.prototype.strictDrawShape=function(c,l,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ia=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),K=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),wa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),oa=A&&A.indent?
-A.indent:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),Za=A&&A.dashed?A.dashed:mxUtils.getValue(this.style,"dashed",!1),jb=A&&A.dashPattern?A.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),hb=A&&A.relIndent?A.relIndent:Math.max(0,Math.min(50,oa)),Ea=A&&A.top?A.top:mxUtils.getValue(this.style,"top",!0),Ka=A&&A.right?A.right:mxUtils.getValue(this.style,"right",!0),Ia=A&&A.bottom?A.bottom:mxUtils.getValue(this.style,"bottom",!0),Ha=A&&A.left?A.left:
-mxUtils.getValue(this.style,"left",!0),Qa=A&&A.topLeftStyle?A.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),Va=A&&A.topRightStyle?A.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),Wa=A&&A.bottomRightStyle?A.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),Xa=A&&A.bottomLeftStyle?A.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),Eb=A&&A.fillColor?A.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");
+x);this.strictDrawShape(c,0,0,p,v)};ya.prototype.strictDrawShape=function(c,l,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ja=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),J=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),wa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),oa=A&&A.indent?
+A.indent:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),$a=A&&A.dashed?A.dashed:mxUtils.getValue(this.style,"dashed",!1),jb=A&&A.dashPattern?A.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),hb=A&&A.relIndent?A.relIndent:Math.max(0,Math.min(50,oa)),Ea=A&&A.top?A.top:mxUtils.getValue(this.style,"top",!0),Ka=A&&A.right?A.right:mxUtils.getValue(this.style,"right",!0),Ia=A&&A.bottom?A.bottom:mxUtils.getValue(this.style,"bottom",!0),Ha=A&&A.left?A.left:
+mxUtils.getValue(this.style,"left",!0),Ra=A&&A.topLeftStyle?A.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),Va=A&&A.topRightStyle?A.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),Wa=A&&A.bottomRightStyle?A.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),Ya=A&&A.bottomLeftStyle?A.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),Eb=A&&A.fillColor?A.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");
A&&A.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var Fb=A&&A.strokeWidth?A.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),Cb=A&&A.fillColor2?A.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),Db=A&&A.gradientColor2?A.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Gb=A&&A.gradientDirection2?A.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Hb=A&&A.opacity?A.opacity:mxUtils.getValue(this.style,"opacity","100"),
-Ib=Math.max(0,Math.min(50,K));A=ya.prototype;c.setDashed(Za);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);K=Math.min(.5*v,.5*p,K);ia||(K=Ib*Math.min(p,v)/100);K=Math.min(K,.5*Math.min(p,v));ia||(oa=Math.min(hb*Math.min(p,v)/100));oa=Math.min(oa,.5*Math.min(p,v)-K);(Ea||Ka||Ia||Ha)&&"frame"!=wa&&(c.begin(),Ea?A.moveNW(c,l,x,p,v,B,Qa,K,Ha):c.moveTo(0,0),Ea&&A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),Ka&&A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),Ia&&
-A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),Ha&&A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),Za=ia=Hb,"none"==Cb&&(ia=0),"none"==Db&&(Za=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ia,Za),c.begin(),Ea?A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha):c.moveTo(oa,0),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),Ia&&Ka&&A.paintSEInner(c,
-l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),Ka&&Ea&&A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),Ea&&Ha&&A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,l,x,p,v,B,Qa,Va,Wa,Xa,K,Ea,Ka,Ia,Ha),c.stroke()));Ea||Ka||Ia||!Ha?Ea||Ka||!Ia||Ha?!Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==
-wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),
-c.fillAndStroke()):Ea||!Ka||Ia||Ha?!Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,
-K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,
-l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&
-Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):
-(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea||Ka||Ia||Ha?
-Ea&&!Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,
-l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,
-K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,
-K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,
-x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,
-l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,
-l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,
-l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,
-v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,
-l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke()):
-Ea&&Ka&&Ia&&Ha&&("frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),c.close(),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,
-B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),
-A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),c.close(),A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,
-l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):
-(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),
-A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,l,x,p,v,B,Qa,Va,
-Wa,Xa,K,Ea,Ka,Ia,Ha);c.stroke()};ya.prototype.moveNW=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,0):c.moveTo(0,ia)};ya.prototype.moveNE=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,0):c.moveTo(p-ia,0)};ya.prototype.moveSE=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,v):c.moveTo(p,v-ia)};ya.prototype.moveSW=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,
-v):c.moveTo(ia,v)};ya.prototype.paintNW=function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,ia,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ia,0);else c.lineTo(0,0)};ya.prototype.paintTop=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,0):c.lineTo(p-ia,0)};ya.prototype.paintNE=
-function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,p,ia)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ia);else c.lineTo(p,0)};ya.prototype.paintRight=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,v):c.lineTo(p,v-ia)};ya.prototype.paintLeft=function(c,l,x,p,v,A,B,ia,K){"square"==
-B||"default"==B&&"square"==A||!K?c.lineTo(0,0):c.lineTo(0,ia)};ya.prototype.paintSE=function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,p-ia,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ia,v);else c.lineTo(p,v)};ya.prototype.paintBottom=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(0,
-v):c.lineTo(ia,v)};ya.prototype.paintSW=function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,0,v-ia)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ia);else c.lineTo(0,v)};ya.prototype.paintNWInner=function(c,l,x,p,v,A,B,ia,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,K,.5*K+ia);else if("invRound"==
-B||"default"==B&&"invRound"==A)c.arcTo(ia+K,ia+K,0,0,1,K,K+ia);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(K,.5*K+ia);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ia,K+ia),c.lineTo(K,K+ia)};ya.prototype.paintTopInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(0,K):wa&&!oa?c.lineTo(K,0):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ia+.5*K,K):c.lineTo(ia+K,K):c.lineTo(0,
-K):c.lineTo(0,0)};ya.prototype.paintNEInner=function(c,l,x,p,v,A,B,ia,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,p-ia-.5*K,K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ia+K,ia+K,0,0,1,p-ia-K,K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ia-.5*K,K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ia-K,ia+K),c.lineTo(p-ia-K,K)};ya.prototype.paintRightInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(p-K,0):wa&&!oa?c.lineTo(p,
-K):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ia+.5*K):c.lineTo(p-K,ia+K):c.lineTo(p-K,0):c.lineTo(p,0)};ya.prototype.paintLeftInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(K,v):wa&&!oa?c.lineTo(0,v-K):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ia-.5*K):c.lineTo(K,v-ia-K):
-c.lineTo(K,v):c.lineTo(0,v)};ya.prototype.paintSEInner=function(c,l,x,p,v,A,B,ia,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,p-K,v-ia-.5*K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ia+K,ia+K,0,0,1,p-K,v-ia-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-K,v-ia-.5*K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ia-K,v-ia-K),c.lineTo(p-K,v-ia-K)};ya.prototype.paintBottomInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(p,
-v-K):wa&&!oa?c.lineTo(p-K,v):"square"==B||"default"==B&&"square"==A||!wa?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ia-.5*K,v-K):c.lineTo(p-ia-K,v-K):c.lineTo(p,v)};ya.prototype.paintSWInner=function(c,l,x,p,v,A,B,ia,K,wa){if(!wa)c.lineTo(K,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(K,v-K);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,ia+.5*K,v-K);else if("invRound"==B||"default"==B&&"invRound"==
-A)c.arcTo(ia+K,ia+K,0,0,1,ia+K,v-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ia+.5*K,v-K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ia,v-ia-K),c.lineTo(K+ia,v-K)};ya.prototype.moveSWInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(K,v-ia-K):
-c.moveTo(0,v-K)};ya.prototype.lineSWInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,v-ia-K):c.lineTo(0,v-K)};ya.prototype.moveSEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==
-A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,v-ia-K):c.moveTo(p-K,v)};ya.prototype.lineSEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,v-ia-K):
-c.lineTo(p-K,v)};ya.prototype.moveNEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.moveTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,ia+K):c.moveTo(p,K)};ya.prototype.lineNEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==
-A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,ia+K):c.lineTo(p,K)};ya.prototype.moveNWInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.moveTo(K,0):wa&&!oa?c.moveTo(0,K):"square"==B||"default"==B&&"square"==A?c.moveTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
-B&&"fold"==A)&&c.moveTo(K,ia+K):c.moveTo(0,0)};ya.prototype.lineNWInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(K,0):wa&&!oa?c.lineTo(0,K):"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,ia+K):c.lineTo(0,0)};ya.prototype.paintFolds=function(c,l,x,p,v,A,B,ia,K,wa,oa,Za,jb,hb,Ea){if("fold"==
-A||"fold"==B||"fold"==ia||"fold"==K||"fold"==wa)("fold"==B||"default"==B&&"fold"==A)&&Za&&Ea&&(c.moveTo(0,oa),c.lineTo(oa,oa),c.lineTo(oa,0)),("fold"==ia||"default"==ia&&"fold"==A)&&Za&&jb&&(c.moveTo(p-oa,0),c.lineTo(p-oa,oa),c.lineTo(p,oa)),("fold"==K||"default"==K&&"fold"==A)&&hb&&jb&&(c.moveTo(p-oa,v),c.lineTo(p-oa,v-oa),c.lineTo(p,v-oa)),("fold"==wa||"default"==wa&&"fold"==A)&&hb&&Ea&&(c.moveTo(0,v-oa),c.lineTo(oa,v-oa),c.lineTo(oa,v))};mxCellRenderer.registerShape(ya.prototype.cst.RECT2,ya);
+Ib=Math.max(0,Math.min(50,J));A=ya.prototype;c.setDashed($a);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);J=Math.min(.5*v,.5*p,J);ja||(J=Ib*Math.min(p,v)/100);J=Math.min(J,.5*Math.min(p,v));ja||(oa=Math.min(hb*Math.min(p,v)/100));oa=Math.min(oa,.5*Math.min(p,v)-J);(Ea||Ka||Ia||Ha)&&"frame"!=wa&&(c.begin(),Ea?A.moveNW(c,l,x,p,v,B,Ra,J,Ha):c.moveTo(0,0),Ea&&A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),Ka&&A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),Ia&&
+A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),Ha&&A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),$a=ja=Hb,"none"==Cb&&(ja=0),"none"==Db&&($a=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ja,$a),c.begin(),Ea?A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha):c.moveTo(oa,0),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),Ia&&Ka&&A.paintSEInner(c,
+l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),Ka&&Ea&&A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),Ea&&Ha&&A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,l,x,p,v,B,Ra,Va,Wa,Ya,J,Ea,Ka,Ia,Ha),c.stroke()));Ea||Ka||Ia||!Ha?Ea||Ka||!Ia||Ha?!Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==
+wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),
+c.fillAndStroke()):Ea||!Ka||Ia||Ha?!Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,
+J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,
+l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&
+Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):
+(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea||Ka||Ia||Ha?
+Ea&&!Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,
+l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,
+J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,
+J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,
+x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,
+l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,
+l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,
+l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,
+v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,
+l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke()):
+Ea&&Ka&&Ia&&Ha&&("frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),c.close(),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,
+B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),
+A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),c.close(),A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,
+l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):
+(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),
+A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,l,x,p,v,B,Ra,Va,
+Wa,Ya,J,Ea,Ka,Ia,Ha);c.stroke()};ya.prototype.moveNW=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(0,0):c.moveTo(0,ja)};ya.prototype.moveNE=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(p,0):c.moveTo(p-ja,0)};ya.prototype.moveSE=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(p,v):c.moveTo(p,v-ja)};ya.prototype.moveSW=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(0,
+v):c.moveTo(ja,v)};ya.prototype.paintNW=function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,ja,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ja,0);else c.lineTo(0,0)};ya.prototype.paintTop=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.lineTo(p,0):c.lineTo(p-ja,0)};ya.prototype.paintNE=
+function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,p,ja)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ja);else c.lineTo(p,0)};ya.prototype.paintRight=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.lineTo(p,v):c.lineTo(p,v-ja)};ya.prototype.paintLeft=function(c,l,x,p,v,A,B,ja,J){"square"==
+B||"default"==B&&"square"==A||!J?c.lineTo(0,0):c.lineTo(0,ja)};ya.prototype.paintSE=function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,p-ja,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ja,v);else c.lineTo(p,v)};ya.prototype.paintBottom=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.lineTo(0,
+v):c.lineTo(ja,v)};ya.prototype.paintSW=function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,0,v-ja)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ja);else c.lineTo(0,v)};ya.prototype.paintNWInner=function(c,l,x,p,v,A,B,ja,J){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,J,.5*J+ja);else if("invRound"==
+B||"default"==B&&"invRound"==A)c.arcTo(ja+J,ja+J,0,0,1,J,J+ja);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(J,.5*J+ja);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(J+ja,J+ja),c.lineTo(J,J+ja)};ya.prototype.paintTopInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(0,J):wa&&!oa?c.lineTo(J,0):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ja+.5*J,J):c.lineTo(ja+J,J):c.lineTo(0,
+J):c.lineTo(0,0)};ya.prototype.paintNEInner=function(c,l,x,p,v,A,B,ja,J){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,p-ja-.5*J,J);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ja+J,ja+J,0,0,1,p-ja-J,J);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ja-.5*J,J);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ja-J,ja+J),c.lineTo(p-ja-J,J)};ya.prototype.paintRightInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(p-J,0):wa&&!oa?c.lineTo(p,
+J):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-J,ja+.5*J):c.lineTo(p-J,ja+J):c.lineTo(p-J,0):c.lineTo(p,0)};ya.prototype.paintLeftInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(J,v):wa&&!oa?c.lineTo(0,v-J):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(J,v-ja-.5*J):c.lineTo(J,v-ja-J):
+c.lineTo(J,v):c.lineTo(0,v)};ya.prototype.paintSEInner=function(c,l,x,p,v,A,B,ja,J){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,p-J,v-ja-.5*J);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ja+J,ja+J,0,0,1,p-J,v-ja-J);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-J,v-ja-.5*J);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ja-J,v-ja-J),c.lineTo(p-J,v-ja-J)};ya.prototype.paintBottomInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(p,
+v-J):wa&&!oa?c.lineTo(p-J,v):"square"==B||"default"==B&&"square"==A||!wa?c.lineTo(p-J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ja-.5*J,v-J):c.lineTo(p-ja-J,v-J):c.lineTo(p,v)};ya.prototype.paintSWInner=function(c,l,x,p,v,A,B,ja,J,wa){if(!wa)c.lineTo(J,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(J,v-J);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,ja+.5*J,v-J);else if("invRound"==B||"default"==B&&"invRound"==
+A)c.arcTo(ja+J,ja+J,0,0,1,ja+J,v-J);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ja+.5*J,v-J);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(J+ja,v-ja-J),c.lineTo(J+ja,v-J)};ya.prototype.moveSWInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(J,v-ja-J):
+c.moveTo(0,v-J)};ya.prototype.lineSWInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(J,v-ja-J):c.lineTo(0,v-J)};ya.prototype.moveSEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-J,v-J):"rounded"==B||"default"==B&&"rounded"==
+A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-J,v-ja-J):c.moveTo(p-J,v)};ya.prototype.lineSEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-J,v-ja-J):
+c.lineTo(p-J,v)};ya.prototype.moveNEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.moveTo(p-J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-J,ja+J):c.moveTo(p,J)};ya.prototype.lineNEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.lineTo(p-J,J):"rounded"==B||"default"==B&&"rounded"==
+A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-J,ja+J):c.lineTo(p,J)};ya.prototype.moveNWInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.moveTo(J,0):wa&&!oa?c.moveTo(0,J):"square"==B||"default"==B&&"square"==A?c.moveTo(J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
+B&&"fold"==A)&&c.moveTo(J,ja+J):c.moveTo(0,0)};ya.prototype.lineNWInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(J,0):wa&&!oa?c.lineTo(0,J):"square"==B||"default"==B&&"square"==A?c.lineTo(J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(J,ja+J):c.lineTo(0,0)};ya.prototype.paintFolds=function(c,l,x,p,v,A,B,ja,J,wa,oa,$a,jb,hb,Ea){if("fold"==
+A||"fold"==B||"fold"==ja||"fold"==J||"fold"==wa)("fold"==B||"default"==B&&"fold"==A)&&$a&&Ea&&(c.moveTo(0,oa),c.lineTo(oa,oa),c.lineTo(oa,0)),("fold"==ja||"default"==ja&&"fold"==A)&&$a&&jb&&(c.moveTo(p-oa,0),c.lineTo(p-oa,oa),c.lineTo(p,oa)),("fold"==J||"default"==J&&"fold"==A)&&hb&&jb&&(c.moveTo(p-oa,v),c.lineTo(p-oa,v-oa),c.lineTo(p,v-oa)),("fold"==wa||"default"==wa&&"fold"==A)&&hb&&Ea&&(c.moveTo(0,v-oa),c.lineTo(oa,v-oa),c.lineTo(oa,v))};mxCellRenderer.registerShape(ya.prototype.cst.RECT2,ya);
ya.prototype.constraints=null;mxUtils.extend(Na,mxConnector);Na.prototype.origPaintEdgeShape=Na.prototype.paintEdgeShape;Na.prototype.paintEdgeShape=function(c,l,x){for(var p=[],v=0;v<l.length;v++)p.push(mxUtils.clone(l[v]));v=c.state.dashed;var A=c.state.fixDash;Na.prototype.origPaintEdgeShape.apply(this,[c,p,x]);3<=c.state.strokeWidth&&(p=mxUtils.getValue(this.style,"fillColor",null),null!=p&&(c.setStrokeColor(p),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(v,A),Na.prototype.origPaintEdgeShape.apply(this,
-[c,l,x])))};mxCellRenderer.registerShape("filledEdge",Na);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var l=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==l.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,l,x,p,v,A,B,ia,K,wa){var oa=v*(B+K+1),Za=A*(B+K+1);return function(){c.begin();
-c.moveTo(p.x-oa/2-Za/2,p.y-Za/2+oa/2);c.lineTo(p.x+Za/2-3*oa/2,p.y-3*Za/2-oa/2);c.stroke()}});mxMarker.addMarker("box",function(c,l,x,p,v,A,B,ia,K,wa){var oa=v*(B+K+1),Za=A*(B+K+1),jb=p.x+oa/2,hb=p.y+Za/2;p.x-=oa;p.y-=Za;return function(){c.begin();c.moveTo(jb-oa/2-Za/2,hb-Za/2+oa/2);c.lineTo(jb-oa/2+Za/2,hb-Za/2-oa/2);c.lineTo(jb+Za/2-3*oa/2,hb-3*Za/2-oa/2);c.lineTo(jb-Za/2-3*oa/2,hb-3*Za/2+oa/2);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,l,x,p,v,A,B,ia,K,
-wa){var oa=v*(B+K+1),Za=A*(B+K+1);return function(){c.begin();c.moveTo(p.x-oa/2-Za/2,p.y-Za/2+oa/2);c.lineTo(p.x+Za/2-3*oa/2,p.y-3*Za/2-oa/2);c.moveTo(p.x-oa/2+Za/2,p.y-Za/2-oa/2);c.lineTo(p.x-Za/2-3*oa/2,p.y-3*Za/2+oa/2);c.stroke()}});mxMarker.addMarker("circle",Ja);mxMarker.addMarker("circlePlus",function(c,l,x,p,v,A,B,ia,K,wa){var oa=p.clone(),Za=Ja.apply(this,arguments),jb=v*(B+2*K),hb=A*(B+2*K);return function(){Za.apply(this,arguments);c.begin();c.moveTo(oa.x-v*K,oa.y-A*K);c.lineTo(oa.x-2*jb+
-v*K,oa.y-2*hb+A*K);c.moveTo(oa.x-jb-hb+A*K,oa.y-hb+jb-v*K);c.lineTo(oa.x+hb-jb-A*K,oa.y-hb-jb+v*K);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,l,x,p,v,A,B,ia,K,wa){var oa=v*(B+K+1),Za=A*(B+K+1),jb=p.clone();p.x-=oa;p.y-=Za;return function(){c.begin();c.moveTo(jb.x-Za,jb.y+oa);c.quadTo(p.x-Za,p.y+oa,p.x,p.y);c.quadTo(p.x+Za,p.y-oa,jb.x+Za,jb.y-oa);c.stroke()}});mxMarker.addMarker("async",function(c,l,x,p,v,A,B,ia,K,wa){l=v*K*1.118;x=A*K*1.118;v*=B+K;A*=B+K;var oa=p.clone();oa.x-=l;oa.y-=
-x;p.x+=-v-l;p.y+=-A-x;return function(){c.begin();c.moveTo(oa.x,oa.y);ia?c.lineTo(oa.x-v-A/2,oa.y-A+v/2):c.lineTo(oa.x+A/2-v,oa.y-A-v/2);c.lineTo(oa.x-v,oa.y-A);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(l,x,p,v,A,B,ia,K,wa,oa){A*=ia+wa;B*=ia+wa;var Za=v.clone();return function(){l.begin();l.moveTo(Za.x,Za.y);K?l.lineTo(Za.x-A-B/c,Za.y-B+A/c):l.lineTo(Za.x+B/c-A,Za.y-B-A/c);l.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var kb=
-function(c,l,x){return ib(c,["width"],l,function(p,v,A,B,ia){ia=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ia/2,B.y+A*p/4-v*ia/2)},function(p,v,A,B,ia,K){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));c.style.width=Math.round(2*p)/c.view.scale-x})},ib=function(c,l,x,p,v){return gb(c,l,function(A){var B=c.absolutePoints,ia=B.length-1;A=c.view.translate;var K=c.view.scale,wa=x?B[0]:B[ia];B=x?B[1]:B[ia-1];ia=B.x-wa.x;var oa=B.y-wa.y,Za=Math.sqrt(ia*ia+oa*oa);wa=
-p.call(this,Za,ia/Za,oa/Za,wa,B);return new mxPoint(wa.x/K-A.x,wa.y/K-A.y)},function(A,B,ia){var K=c.absolutePoints,wa=K.length-1;A=c.view.translate;var oa=c.view.scale,Za=x?K[0]:K[wa];K=x?K[1]:K[wa-1];wa=K.x-Za.x;var jb=K.y-Za.y,hb=Math.sqrt(wa*wa+jb*jb);B.x=(B.x+A.x)*oa;B.y=(B.y+A.y)*oa;v.call(this,hb,wa/hb,jb/hb,Za,K,B,ia)})},nb=function(c){return function(l){return[gb(l,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",bb.prototype.arrowWidth))),
+[c,l,x])))};mxCellRenderer.registerShape("filledEdge",Na);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var l=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==l.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,l,x,p,v,A,B,ja,J,wa){var oa=v*(B+J+1),$a=A*(B+J+1);return function(){c.begin();
+c.moveTo(p.x-oa/2-$a/2,p.y-$a/2+oa/2);c.lineTo(p.x+$a/2-3*oa/2,p.y-3*$a/2-oa/2);c.stroke()}});mxMarker.addMarker("box",function(c,l,x,p,v,A,B,ja,J,wa){var oa=v*(B+J+1),$a=A*(B+J+1),jb=p.x+oa/2,hb=p.y+$a/2;p.x-=oa;p.y-=$a;return function(){c.begin();c.moveTo(jb-oa/2-$a/2,hb-$a/2+oa/2);c.lineTo(jb-oa/2+$a/2,hb-$a/2-oa/2);c.lineTo(jb+$a/2-3*oa/2,hb-3*$a/2-oa/2);c.lineTo(jb-$a/2-3*oa/2,hb-3*$a/2+oa/2);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,l,x,p,v,A,B,ja,J,
+wa){var oa=v*(B+J+1),$a=A*(B+J+1);return function(){c.begin();c.moveTo(p.x-oa/2-$a/2,p.y-$a/2+oa/2);c.lineTo(p.x+$a/2-3*oa/2,p.y-3*$a/2-oa/2);c.moveTo(p.x-oa/2+$a/2,p.y-$a/2-oa/2);c.lineTo(p.x-$a/2-3*oa/2,p.y-3*$a/2+oa/2);c.stroke()}});mxMarker.addMarker("circle",Ja);mxMarker.addMarker("circlePlus",function(c,l,x,p,v,A,B,ja,J,wa){var oa=p.clone(),$a=Ja.apply(this,arguments),jb=v*(B+2*J),hb=A*(B+2*J);return function(){$a.apply(this,arguments);c.begin();c.moveTo(oa.x-v*J,oa.y-A*J);c.lineTo(oa.x-2*jb+
+v*J,oa.y-2*hb+A*J);c.moveTo(oa.x-jb-hb+A*J,oa.y-hb+jb-v*J);c.lineTo(oa.x+hb-jb-A*J,oa.y-hb-jb+v*J);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,l,x,p,v,A,B,ja,J,wa){var oa=v*(B+J+1),$a=A*(B+J+1),jb=p.clone();p.x-=oa;p.y-=$a;return function(){c.begin();c.moveTo(jb.x-$a,jb.y+oa);c.quadTo(p.x-$a,p.y+oa,p.x,p.y);c.quadTo(p.x+$a,p.y-oa,jb.x+$a,jb.y-oa);c.stroke()}});mxMarker.addMarker("async",function(c,l,x,p,v,A,B,ja,J,wa){l=v*J*1.118;x=A*J*1.118;v*=B+J;A*=B+J;var oa=p.clone();oa.x-=l;oa.y-=
+x;p.x+=-v-l;p.y+=-A-x;return function(){c.begin();c.moveTo(oa.x,oa.y);ja?c.lineTo(oa.x-v-A/2,oa.y-A+v/2):c.lineTo(oa.x+A/2-v,oa.y-A-v/2);c.lineTo(oa.x-v,oa.y-A);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(l,x,p,v,A,B,ja,J,wa,oa){A*=ja+wa;B*=ja+wa;var $a=v.clone();return function(){l.begin();l.moveTo($a.x,$a.y);J?l.lineTo($a.x-A-B/c,$a.y-B+A/c):l.lineTo($a.x+B/c-A,$a.y-B-A/c);l.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var kb=
+function(c,l,x){return ib(c,["width"],l,function(p,v,A,B,ja){ja=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ja/2,B.y+A*p/4-v*ja/2)},function(p,v,A,B,ja,J){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));c.style.width=Math.round(2*p)/c.view.scale-x})},ib=function(c,l,x,p,v){return gb(c,l,function(A){var B=c.absolutePoints,ja=B.length-1;A=c.view.translate;var J=c.view.scale,wa=x?B[0]:B[ja];B=x?B[1]:B[ja-1];ja=B.x-wa.x;var oa=B.y-wa.y,$a=Math.sqrt(ja*ja+oa*oa);wa=
+p.call(this,$a,ja/$a,oa/$a,wa,B);return new mxPoint(wa.x/J-A.x,wa.y/J-A.y)},function(A,B,ja){var J=c.absolutePoints,wa=J.length-1;A=c.view.translate;var oa=c.view.scale,$a=x?J[0]:J[wa];J=x?J[1]:J[wa-1];wa=J.x-$a.x;var jb=J.y-$a.y,hb=Math.sqrt(wa*wa+jb*jb);B.x=(B.x+A.x)*oa;B.y=(B.y+A.y)*oa;v.call(this,hb,wa/hb,jb/hb,$a,J,B,ja)})},ob=function(c){return function(l){return[gb(l,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",bb.prototype.arrowWidth))),
v=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",bb.prototype.arrowSize)));return new mxPoint(x.x+(1-v)*x.width,x.y+(1-p)*x.height/2)},function(x,p){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(x.y+x.height/2-p.y)/x.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(x.x+x.width-p.x)/x.width))})]}},vb=function(c){return function(l){return[gb(l,["size"],function(x){var p=Math.max(0,Math.min(.5*x.height,parseFloat(mxUtils.getValue(this.state.style,"size",
-c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},mb=function(c,l,x){return function(p){var v=[gb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",l)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
-!1)&&v.push(ob(p));return v}},Bb=function(c,l,x,p,v){x=null!=x?x:.5;return function(A){var B=[gb(A,["size"],function(ia){var K=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,wa=parseFloat(mxUtils.getValue(this.state.style,"size",K?v:c));return new mxPoint(ia.x+Math.max(0,Math.min(.5*ia.width,wa*(K?1:ia.width))),ia.getCenterY())},function(ia,K,wa){ia=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?K.x-ia.x:Math.max(0,Math.min(x,(K.x-ia.x)/ia.width));this.state.style.size=
-ia},!1,p)];l&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(ob(A));return B}},yb=function(c,l,x){c=null!=c?c:.5;return function(p){var v=[gb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ia=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:l)));return new mxPoint(A.x+Math.min(.75*A.width*c,ia*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
-A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(ob(p));return v}},lb=function(){return function(c){var l=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l}},ob=function(c,l){return gb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=l?l:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
+c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},nb=function(c,l,x){return function(p){var v=[gb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",l)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
+!1)&&v.push(pb(p));return v}},Bb=function(c,l,x,p,v){x=null!=x?x:.5;return function(A){var B=[gb(A,["size"],function(ja){var J=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,wa=parseFloat(mxUtils.getValue(this.state.style,"size",J?v:c));return new mxPoint(ja.x+Math.max(0,Math.min(.5*ja.width,wa*(J?1:ja.width))),ja.getCenterY())},function(ja,J,wa){ja=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?J.x-ja.x:Math.max(0,Math.min(x,(J.x-ja.x)/ja.width));this.state.style.size=
+ja},!1,p)];l&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(pb(A));return B}},yb=function(c,l,x){c=null!=c?c:.5;return function(p){var v=[gb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ja=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:l)));return new mxPoint(A.x+Math.min(.75*A.width*c,ja*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
+A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(pb(p));return v}},mb=function(){return function(c){var l=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l}},pb=function(c,l){return gb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=l?l:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;return new mxPoint(x.x+x.width-Math.min(x.width/2,v),x.y+p)}v=Math.max(0,parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(x.x+x.width-Math.min(Math.max(x.width/2,x.height/2),Math.min(x.width,x.height)*v),x.y+p)},function(x,p,v){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(x.width,2*(x.x+x.width-
-p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},gb=function(c,l,x,p,v,A,B){var ia=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ia.execute=function(wa){for(var oa=0;oa<l.length;oa++)this.copyStyle(l[oa]);B&&B(wa)};ia.getPosition=x;ia.setPosition=p;ia.ignoreGrid=null!=v?v:!0;if(A){var K=ia.positionChanged;ia.positionChanged=function(){K.apply(this,arguments);c.view.invalidate(this.state.cell);
-c.view.validate()}}return ia},rb={link:function(c){return[kb(c,!0,10),kb(c,!1,10)]},flexArrow:function(c){var l=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(ib(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ia){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
-return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,K.x,K.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
-c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(wa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ia){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
-5)*c.view.scale;return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,K.x,K.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
+p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},gb=function(c,l,x,p,v,A,B){var ja=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ja.execute=function(wa){for(var oa=0;oa<l.length;oa++)this.copyStyle(l[oa]);B&&B(wa)};ja.getPosition=x;ja.setPosition=p;ja.ignoreGrid=null!=v?v:!0;if(A){var J=ja.positionChanged;ja.positionChanged=function(){J.apply(this,arguments);c.view.invalidate(this.state.cell);
+c.view.validate()}}return ja},rb={link:function(c){return[kb(c,!0,10),kb(c,!1,10)]},flexArrow:function(c){var l=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(ib(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ja){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
+return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,J.x,J.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
+c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(wa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ja){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
+5)*c.view.scale;return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,J.x,J.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(wa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<l&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(ib(c,
-["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ia){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,K.x,K.y);
+["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ja){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,J.x,J.y);
c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(wa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),
-x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ia){p=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,
-B.y,B.x+A,B.y-v,K.x,K.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(wa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<
-l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<l&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var l=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));l.push(ob(c,x/2))}l.push(gb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
+x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ja){p=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,
+B.y,B.x+A,B.y-v,J.x,J.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(wa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<
+l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<l&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var l=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));l.push(pb(c,x/2))}l.push(gb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(c.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(p.getCenterX(),p.y+Math.max(0,Math.min(p.height,v))):new mxPoint(p.x+Math.max(0,Math.min(p.width,v)),p.getCenterY())},function(p,v){c.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(p.height,v.y-p.y))):Math.round(Math.max(0,Math.min(p.width,v.x-p.x)))},!1,null,function(p){var v=
-c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ia=0;ia<A.length;ia++)A[ia]!=c.cell&&v.isSwimlane(A[ia])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ia]))==p&&B.push(A[ia]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return l},label:lb(),ext:lb(),rectangle:lb(),
-triangle:lb(),rhombus:lb(),umlLifeline:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},umlFrame:function(c){return[gb(c,["width","height"],function(l){var x=Math.max(R.prototype.corner,Math.min(l.width,mxUtils.getValue(this.state.style,"width",R.prototype.width))),
-p=Math.max(1.5*R.prototype.corner,Math.min(l.height,mxUtils.getValue(this.state.style,"height",R.prototype.height)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.width=Math.round(Math.max(R.prototype.corner,Math.min(l.width,x.x-l.x)));this.state.style.height=Math.round(Math.max(1.5*R.prototype.corner,Math.min(l.height,x.y-l.y)))},!1)]},process:function(c){var l=[gb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
-"size",ea.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},cross:function(c){return[gb(c,["size"],function(l){var x=Math.min(l.width,l.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ja=0;ja<A.length;ja++)A[ja]!=c.cell&&v.isSwimlane(A[ja])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ja]))==p&&B.push(A[ja]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return l},label:mb(),ext:mb(),rectangle:mb(),
+triangle:mb(),rhombus:mb(),umlLifeline:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},umlFrame:function(c){return[gb(c,["width","height"],function(l){var x=Math.max(S.prototype.corner,Math.min(l.width,mxUtils.getValue(this.state.style,"width",S.prototype.width))),
+p=Math.max(1.5*S.prototype.corner,Math.min(l.height,mxUtils.getValue(this.state.style,"height",S.prototype.height)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.width=Math.round(Math.max(S.prototype.corner,Math.min(l.width,x.x-l.x)));this.state.style.height=Math.round(Math.max(1.5*S.prototype.corner,Math.min(l.height,x.y-l.y)))},!1)]},process:function(c){var l=[gb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
+"size",fa.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},cross:function(c){return[gb(c,["size"],function(l){var x=Math.min(l.width,l.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"size",Fa.prototype.size)))*x/2;return new mxPoint(l.getCenterX()-x,l.getCenterY()-x)},function(l,x){var p=Math.min(l.width,l.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,l.getCenterY()-x.y)/p*2,Math.max(0,l.getCenterX()-x.x)/p*2)))})]},note:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},note2:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},manualInput:function(c){var l=[gb(c,["size"],function(x){var p=
-Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Ta.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},dataStorage:function(c){return[gb(c,["size"],function(l){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?L.prototype.fixedSize:
-L.prototype.size));return new mxPoint(l.x+l.width-p*(x?1:l.width),l.getCenterY())},function(l,x){l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(l.width,l.x+l.width-x.x)):Math.max(0,Math.min(1,(l.x+l.width-x.x)/l.width));this.state.style.size=l},!1)]},callout:function(c){var l=[gb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"position",ja.prototype.position)));mxUtils.getValue(this.state.style,"base",ja.prototype.base);return new mxPoint(x.x+v*x.width,x.y+x.height-p)},function(x,p){mxUtils.getValue(this.state.style,"base",ja.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(x.height,x.y+x.height-p.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["position2"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ja.prototype.position2)));
-return new mxPoint(x.x+p*x.width,x.y+x.height)},function(x,p){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["base"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position))),A=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"base",ja.prototype.base)));return new mxPoint(x.x+Math.min(x.width,
-v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},internalStorage:function(c){var l=[gb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Sa.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
-"dy",Sa.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},module:function(c){return[gb(c,["jettyWidth","jettyHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"jettyWidth",xa.prototype.jettyWidth))),p=Math.max(0,Math.min(l.height,
-mxUtils.getValue(this.state.style,"jettyHeight",xa.prototype.jettyHeight)));return new mxPoint(l.x+x/2,l.y+2*p)},function(l,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y))/2)})]},corner:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,
-"dy",$a.prototype.dy)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.dx=Math.round(Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},tee:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",eb.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"dy",eb.prototype.dy)));return new mxPoint(l.x+(l.width+x)/2,l.y+p)},function(l,
-x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:nb(1),doubleArrow:nb(.5),folder:function(c){return[gb(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
+Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Ta.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},dataStorage:function(c){return[gb(c,["size"],function(l){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?K.prototype.fixedSize:
+K.prototype.size));return new mxPoint(l.x+l.width-p*(x?1:l.width),l.getCenterY())},function(l,x){l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(l.width,l.x+l.width-x.x)):Math.max(0,Math.min(1,(l.x+l.width-x.x)/l.width));this.state.style.size=l},!1)]},callout:function(c){var l=[gb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ia.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+"position",ia.prototype.position)));mxUtils.getValue(this.state.style,"base",ia.prototype.base);return new mxPoint(x.x+v*x.width,x.y+x.height-p)},function(x,p){mxUtils.getValue(this.state.style,"base",ia.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(x.height,x.y+x.height-p.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["position2"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ia.prototype.position2)));
+return new mxPoint(x.x+p*x.width,x.y+x.height)},function(x,p){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["base"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ia.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ia.prototype.position))),A=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"base",ia.prototype.base)));return new mxPoint(x.x+Math.min(x.width,
+v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ia.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},internalStorage:function(c){var l=[gb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Oa.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
+"dy",Oa.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},module:function(c){return[gb(c,["jettyWidth","jettyHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"jettyWidth",xa.prototype.jettyWidth))),p=Math.max(0,Math.min(l.height,
+mxUtils.getValue(this.state.style,"jettyHeight",xa.prototype.jettyHeight)));return new mxPoint(l.x+x/2,l.y+2*p)},function(l,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y))/2)})]},corner:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",Xa.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,
+"dy",Xa.prototype.dy)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.dx=Math.round(Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},tee:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",eb.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"dy",eb.prototype.dy)));return new mxPoint(l.x+(l.width+x)/2,l.y+p)},function(l,
+x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:ob(1),doubleArrow:ob(.5),folder:function(c){return[gb(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=l.width-x);return new mxPoint(l.x+x,l.y+p)},function(l,x){var p=Math.max(0,Math.min(l.width,x.x-l.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=l.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},document:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
-"size",ca.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[gb(c,
-["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size))));
+"size",ca.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[gb(c,
+["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));
return new mxPoint(l.getCenterX(),l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},"mxgraph.basic.rect":function(c){var l=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
-["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Bb(V.prototype.size,!0,null,!0,V.prototype.fixedSize),hexagon:Bb(J.prototype.size,!0,.5,!0,J.prototype.fixedSize),curlyBracket:Bb(qa.prototype.size,!1),display:Bb(va.prototype.size,!1),cube:mb(1,
-n.prototype.size,!1),card:mb(.5,G.prototype.size,!0),loopLimit:mb(.5,X.prototype.size,!0),trapezoid:yb(.5,Z.prototype.size,Z.prototype.fixedSize),parallelogram:yb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=gb;Graph.handleFactory=rb;var tb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=tb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
+["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Bb(V.prototype.size,!0,null,!0,V.prototype.fixedSize),hexagon:Bb(L.prototype.size,!0,.5,!0,L.prototype.fixedSize),curlyBracket:Bb(qa.prototype.size,!1),display:Bb(va.prototype.size,!1),cube:nb(1,
+n.prototype.size,!1),card:nb(.5,G.prototype.size,!0),loopLimit:nb(.5,W.prototype.size,!0),trapezoid:yb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:yb(1,aa.prototype.size,aa.prototype.fixedSize)};Graph.createHandle=gb;Graph.handleFactory=rb;var tb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=tb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
null==mxStencilRegistry.getStencil(l)?l=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(l=mxConstants.SHAPE_SWIMLANE);l=rb[l];null==l&&null!=this.state.shape&&this.state.shape.isRoundable()&&(l=rb[mxConstants.SHAPE_RECTANGLE]);null!=l&&(l=l(this.state),null!=l&&(c=null==c?l:c.concat(l)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);
-c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var zb=new mxPoint(1,0),wb=new mxPoint(1,0),Ab=mxUtils.toRadians(-30);zb=mxUtils.getRotatedPoint(zb,Math.cos(Ab),Math.sin(Ab));var pb=mxUtils.toRadians(-150);wb=mxUtils.getRotatedPoint(wb,Math.cos(pb),Math.sin(pb));mxEdgeStyle.IsometricConnector=function(c,l,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ia=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
-null==ia&&null!=l&&(ia=new mxPoint(l.getCenterX(),l.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var K=zb.x,wa=zb.y,oa=wb.x,Za=wb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ia){c=function(Ea,Ka,Ia){Ea-=hb.x;var Ha=Ka-hb.y;Ka=(Za*Ea-oa*Ha)/(K*Za-wa*oa);Ea=(wa*Ea-K*Ha)/(wa*oa-K*Za);jb?(Ia&&(hb=new mxPoint(hb.x+K*Ka,hb.y+wa*Ka),v.push(hb)),hb=new mxPoint(hb.x+oa*Ea,hb.y+Za*Ea)):(Ia&&(hb=new mxPoint(hb.x+oa*Ea,hb.y+Za*Ea),v.push(hb)),
-hb=new mxPoint(hb.x+K*Ka,hb.y+wa*Ka));v.push(hb)};var hb=ia;null==p&&(p=new mxPoint(ia.x+(B.x-ia.x)/2,ia.y+(B.y-ia.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var xb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,l){if(l==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return xb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
+c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var zb=new mxPoint(1,0),wb=new mxPoint(1,0),Ab=mxUtils.toRadians(-30);zb=mxUtils.getRotatedPoint(zb,Math.cos(Ab),Math.sin(Ab));var lb=mxUtils.toRadians(-150);wb=mxUtils.getRotatedPoint(wb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,l,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ja=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
+null==ja&&null!=l&&(ja=new mxPoint(l.getCenterX(),l.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var J=zb.x,wa=zb.y,oa=wb.x,$a=wb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ja){c=function(Ea,Ka,Ia){Ea-=hb.x;var Ha=Ka-hb.y;Ka=($a*Ea-oa*Ha)/(J*$a-wa*oa);Ea=(wa*Ea-J*Ha)/(wa*oa-J*$a);jb?(Ia&&(hb=new mxPoint(hb.x+J*Ka,hb.y+wa*Ka),v.push(hb)),hb=new mxPoint(hb.x+oa*Ea,hb.y+$a*Ea)):(Ia&&(hb=new mxPoint(hb.x+oa*Ea,hb.y+$a*Ea),v.push(hb)),
+hb=new mxPoint(hb.x+J*Ka,hb.y+wa*Ka));v.push(hb)};var hb=ja;null==p&&(p=new mxPoint(ja.x+(B.x-ja.x)/2,ja.y+(B.y-ja.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var xb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,l){if(l==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return xb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.tan(mxUtils.toRadians(30)),v=(.5-p)/2;p=Math.min(l,x/(.5+p));l=(l-p)/2;x=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+p*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.75*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+(1-v)*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x+.75*p));return c};m.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;p=Math.min(l*Math.tan(p),.5*x);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(.5,
-1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ja.prototype.getConstraints=function(c,l,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=l*Math.max(0,
+1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ia.prototype.getConstraints=function(c,l,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=l*Math.max(0,
Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-p)));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),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(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(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0),new mxConnectionConstraint(new mxPoint(1,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))];La.prototype.constraints=mxRectangleShape.prototype.constraints;
-mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
+mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};G.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};n.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,
@@ -2898,27 +2899,27 @@ mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwim
function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};Sa.prototype.constraints=mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;na.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;
-pa.prototype.constraints=mxEllipse.prototype.constraints;Ua.prototype.constraints=mxEllipse.prototype.constraints;Ta.prototype.constraints=mxRectangleShape.prototype.constraints;Ra.prototype.constraints=mxRectangleShape.prototype.constraints;va.prototype.getConstraints=function(c,l,x){c=[];var p=Math.min(l,x/2),v=Math.min(l-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};Oa.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;na.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;
+pa.prototype.constraints=mxEllipse.prototype.constraints;Ua.prototype.constraints=mxEllipse.prototype.constraints;Ta.prototype.constraints=mxRectangleShape.prototype.constraints;Sa.prototype.constraints=mxRectangleShape.prototype.constraints;va.prototype.getConstraints=function(c,l,x){c=[];var p=Math.min(l,x/2),v=Math.min(l-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};xa.prototype.getConstraints=function(c,l,x){l=parseFloat(mxUtils.getValue(c,
"jettyWidth",xa.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",xa.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,l));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};X.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
-.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
+.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};W.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
+.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];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)];ta.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,
.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,
-.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];aa.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,
+.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)];Z.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)];V.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)];da.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)];ba.prototype.constraints=mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
+.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)];aa.prototype.constraints=mxRectangleShape.prototype.constraints;Y.prototype.constraints=mxRectangleShape.prototype.constraints;ca.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;eb.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*l+.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l+p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*l-.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};$a.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};Xa.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return c};Ga.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)];bb.prototype.getConstraints=
function(c,l,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-v),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,
@@ -2937,7 +2938,7 @@ window.openFile.setConsumer(mxUtils.bind(this,function(g,m){try{var q=mxUtils.pa
null,Editor.ctrlKey+"+Shift+S").isEnabled=E;this.addAction("export...",function(){n.showDialog((new ExportDialog(n)).container,300,340,!0,!0)});this.addAction("editDiagram...",function(){var g=new EditDiagramDialog(n);n.showDialog(g.container,620,420,!0,!1);g.init()});this.addAction("pageSetup...",function(){n.showDialog((new PageSetupDialog(n)).container,320,240,!0,!0)}).isEnabled=E;this.addAction("print...",function(){n.showDialog((new PrintDialog(n)).container,300,180,!0,!0)},null,"sprite-print",
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(t,null,10,10)});this.addAction("undo",function(){n.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){n.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var g=null;try{g=n.copyXml(),null!=g&&t.removeCells(g,!1)}catch(m){}null==g&&mxClipboard.cut(t)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{n.copyXml()}catch(g){}try{mxClipboard.copy(t)}catch(g){n.handleError(g)}},
null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(m){if(null!=m){t.getModel().beginUpdate();try{n.pasteXml(m,!0)}finally{t.getModel().endUpdate()}}else mxClipboard.paste(t)}),g=!0)}catch(m){}g||mxClipboard.paste(t)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(g){function m(y){if(null!=y){for(var F=!0,C=0;C<
-y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var I=t.view.translate;C=t.view.scale;var G=I.x,aa=I.y;I=null;if(1==y.length&&F){var ca=t.getCellGeometry(y[0]);null!=ca&&(I=ca.getTerminalPoint(!0))}I=null!=I?I:t.getBoundingBoxFromGeometry(y,F);null!=I&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-aa)),t.cellsMoved(y,F-I.x,C-I.y))}}function q(){t.getModel().beginUpdate();try{m(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
+y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var I=t.view.translate;C=t.view.scale;var G=I.x,Z=I.y;I=null;if(1==y.length&&F){var ca=t.getCellGeometry(y[0]);null!=ca&&(I=ca.getTerminalPoint(!0))}I=null!=I?I:t.getBoundingBoxFromGeometry(y,F);null!=I&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-Z)),t.cellsMoved(y,F-I.x,C-I.y))}}function q(){t.getModel().beginUpdate();try{m(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
!t.isCellLocked(t.getDefaultParent())){g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(y){if(null!=y){t.getModel().beginUpdate();try{m(n.pasteXml(y,!0))}finally{t.getModel().endUpdate()}}else q()}),g=!0)}catch(y){}g||q()}});this.addAction("copySize",function(){var g=t.getSelectionCell();t.isEnabled()&&null!=g&&t.getModel().isVertex(g)&&(g=t.getCellGeometry(g),null!=g&&(n.copiedSize=new mxRectangle(g.x,g.y,g.width,g.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedSize){t.getModel().beginUpdate();try{for(var g=t.getResizableCells(t.getSelectionCells()),m=0;m<g.length;m++)if(t.getModel().isVertex(g[m])){var q=t.getCellGeometry(g[m]);null!=q&&(q=q.clone(),q.width=n.copiedSize.width,q.height=n.copiedSize.height,t.getModel().setGeometry(g[m],q))}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var g=t.getSelectionCell()||t.getModel().getRoot();t.isEnabled()&&
null!=g&&(g=g.cloneValue(),null==g||isNaN(g.nodeType)||(n.copiedValue=g))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(g,m){function q(C,I){var G=y.getValue(C);I=C.cloneValue(I);I.removeAttribute("placeholders");null==G||isNaN(G.nodeType)||I.setAttribute("placeholders",G.getAttribute("placeholders"));null!=g&&mxEvent.isShiftDown(g)||I.setAttribute("label",t.convertValueToString(C));y.setValue(C,I)}g=null!=m?m:g;var y=t.getModel();if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedValue){y.beginUpdate();
@@ -2986,9 +2987,9 @@ null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function
t.getModel().getParent(g),C=t.getCellGeometry(g);F=Math.round(t.snap(t.popupMenuHandler.triggerX/y-F));y=Math.round(t.snap(t.popupMenuHandler.triggerY/y-q));m.addPointAt(m.state,F,y)}}});this.addAction("removeWaypoint",function(){var g=n.actions.get("removeWaypoint");null!=g.handler&&g.handler.removePoint(g.handler.state,g.index)});this.addAction("clearWaypoints",function(g,m){g=null!=m?m:g;var q=t.getSelectionCells();if(null!=q){q=t.getEditableCells(t.addAllEdges(q));t.getModel().beginUpdate();try{for(var y=
0;y<q.length;y++){var F=q[y];if(t.getModel().isEdge(F)){var C=t.getCellGeometry(F);null!=m&&mxEvent.isShiftDown(g)?(t.setCellStyles(mxConstants.STYLE_EXIT_X,null,[F]),t.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[F])):null!=C&&(C=C.clone(),C.points=null,C.x=0,C.y=0,C.offset=null,t.getModel().setGeometry(F,C))}}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",
mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=mxResources.get("image")+" ("+mxResources.get("url")+"):",m=t.getView().getState(t.getSelectionCell()),
-q="",y=null;null!=m&&(q=m.style[mxConstants.STYLE_IMAGE]||q,y=m.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,I,G,aa,ca,ba){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,I,G);else{var Z=t.getSelectionCells();if(null!=C&&(0<C.length||0<Z.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Z.length){Z=[t.insertVertex(t.getDefaultParent(),null,"",0,0,I,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-var N=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry(Z,!0));Z[0].geometry.x=N.x;Z[0].geometry.y=N.y;null!=aa&&k(Z[0],aa,ca,ba,t);qa=Z;t.fireEvent(new mxEventObject("cellsInserted","cells",qa))}t.setCellStyles(mxConstants.STYLE_IMAGE,0<C.length?C:null,Z);var Y=t.getCurrentCellStyle(Z[0]);"image"!=Y[mxConstants.STYLE_SHAPE]&&"label"!=Y[mxConstants.STYLE_SHAPE]?t.setCellStyles(mxConstants.STYLE_SHAPE,"image",Z):0==C.length&&t.setCellStyles(mxConstants.STYLE_SHAPE,null,Z);if(1==t.getSelectionCount()&&
-null!=I&&null!=G){var ea=Z[0],ka=t.getModel().getGeometry(ea);null!=ka&&(ka=ka.clone(),ka.width=I,ka.height=G,t.getModel().setGeometry(ea,ka));null!=aa?k(ea,aa,ca,ba,t):t.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,Z)}}finally{t.getModel().endUpdate()}null!=qa&&(t.setSelectionCells(qa),t.scrollCellToVisible(qa[0]))}}},t.cellEditor.isContentEditing(),!t.cellEditor.isContentEditing(),!0,y)}}).isEnabled=E;this.addAction("crop...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&
+q="",y=null;null!=m&&(q=m.style[mxConstants.STYLE_IMAGE]||q,y=m.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,I,G,Z,ca,aa){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,I,G);else{var Y=t.getSelectionCells();if(null!=C&&(0<C.length||0<Y.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Y.length){Y=[t.insertVertex(t.getDefaultParent(),null,"",0,0,I,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+var Q=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry(Y,!0));Y[0].geometry.x=Q.x;Y[0].geometry.y=Q.y;null!=Z&&k(Y[0],Z,ca,aa,t);qa=Y;t.fireEvent(new mxEventObject("cellsInserted","cells",qa))}t.setCellStyles(mxConstants.STYLE_IMAGE,0<C.length?C:null,Y);var X=t.getCurrentCellStyle(Y[0]);"image"!=X[mxConstants.STYLE_SHAPE]&&"label"!=X[mxConstants.STYLE_SHAPE]?t.setCellStyles(mxConstants.STYLE_SHAPE,"image",Y):0==C.length&&t.setCellStyles(mxConstants.STYLE_SHAPE,null,Y);if(1==t.getSelectionCount()&&
+null!=I&&null!=G){var fa=Y[0],ka=t.getModel().getGeometry(fa);null!=ka&&(ka=ka.clone(),ka.width=I,ka.height=G,t.getModel().setGeometry(fa,ka));null!=Z?k(fa,Z,ca,aa,t):t.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,Y)}}finally{t.getModel().endUpdate()}null!=qa&&(t.setSelectionCells(qa),t.scrollCellToVisible(qa[0]))}}},t.cellEditor.isContentEditing(),!t.cellEditor.isContentEditing(),!0,y)}}).isEnabled=E;this.addAction("crop...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&
null!=g){var m=t.getCurrentCellStyle(g),q=m[mxConstants.STYLE_IMAGE],y=m[mxConstants.STYLE_SHAPE];q&&"image"==y&&(m=new CropImageDialog(n,q,m[mxConstants.STYLE_CLIP_PATH],function(F,C,I){k(g,F,C,I,t)}),n.showDialog(m.container,300,390,!0,!0))}}).isEnabled=E;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(n,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("layers"))})),
this.layersWindow.window.addListener("hide",function(){n.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),n.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(){n.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return 0<n.formatWidth}));d=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(n,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("outline"))})),this.outlineWindow.window.addListener("hide",function(){n.fireEvent(new mxEventObject("outline"))}),
@@ -3004,7 +3005,7 @@ e))}catch(t){null!=e&&e(t)}}),e))};
DrawioFile.prototype.mergeFile=function(b,e,k,n){var D=!0;try{this.stats.fileMerged++;var t=this.getShadowPages(),E=b.getShadowPages();if(null!=E&&0<E.length){var d=[this.ui.diffPages(null!=n?n:t,E)],f=this.ignorePatches(d);this.setShadowPages(E);if(f)EditorUi.debug("File.mergeFile",[this],"file",[b],"ignored",f);else{null!=this.sync&&this.sync.sendLocalChanges();this.backupPatch=this.isModified()?this.ui.diffPages(t,this.ui.pages):null;n={};f={};var g=this.ui.patchPages(t,d[0]),m=this.ui.getHashValueForPages(g,
n),q=this.ui.getHashValueForPages(E,f);EditorUi.debug("File.mergeFile",[this],"file",[b],"shadow",t,"pages",this.ui.pages,"patches",d,"backup",this.backupPatch,"checksum",m,"current",q,"valid",m==q,"from",this.getCurrentRevisionId(),"to",b.getCurrentRevisionId(),"modified",this.isModified());if(null!=m&&m!=q){var y=this.compressReportData(this.getAnonymizedXmlForPages(E)),F=this.compressReportData(this.getAnonymizedXmlForPages(g)),C=this.ui.hashValue(b.getCurrentEtag()),I=this.ui.hashValue(this.getCurrentEtag());
this.checksumError(k,d,"Shadow Details: "+JSON.stringify(n)+"\nChecksum: "+m+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+C+"\nTo: "+I+"\n\nFile Data:\n"+y+"\nPatched Shadow:\n"+F,null,"mergeFile");return}if(null!=this.sync){var G=this.sync.patchRealtime(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null);null==G||mxUtils.isEmptyObject(G)||d.push(G)}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw D=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=
-this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=e&&e()}catch(ba){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=k&&k(ba);try{if(D)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,ba);else{var aa=this.getCurrentUser(),ca=null!=aa?aa.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),ca,ba)}}catch(Z){}}};
+this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=e&&e()}catch(aa){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=k&&k(aa);try{if(D)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,aa);else{var Z=this.getCurrentUser(),ca=null!=Z?Z.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),ca,aa)}}catch(Y){}}};
DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var e=new mxCodec(mxUtils.createXmlDocument()),k=e.document.createElement("mxfile");if(null!=b)for(var n=0;n<b.length;n++){var D=e.encode(new mxGraphModel(b[n].root));"1"!=urlParams.dev&&(D=this.ui.anonymizeNode(D,!0));D.setAttribute("id",b[n].getId());b[n].viewState&&this.ui.editor.graph.saveViewState(b[n].viewState,D,!0);k.appendChild(D)}return mxUtils.getPrettyXml(k)};
DrawioFile.prototype.compressReportData=function(b,e,k){e=null!=e?e:1E4;null!=k&&null!=b&&b.length>k?b=b.substring(0,k)+"[...]":null!=b&&b.length>e&&(b=Graph.compress(b)+"\n");return b};
DrawioFile.prototype.checksumError=function(b,e,k,n,D){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=e)for(b=0;b<e.length;b++)this.ui.anonymizePatch(e[b]);var t=mxUtils.bind(this,function(g){var m=this.compressReportData(JSON.stringify(e,null,2));g=null==g?"n/a":this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForXml(g.data)),
@@ -3121,103 +3122,103 @@ H){u=H.editorUi.editor.graph.getCellStyle(1==u.vertices.length&&0==u.edges.lengt
{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(u,H){return H.editorUi.editor.graph.isCellConnectable(0<u.vertices.length&&0==u.edges.length?u.vertices[0]:null)},isVisible:function(u,H){return 0<u.vertices.length&&0==u.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},
{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",
dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(u,
-H){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=u&&(H.isSwimlane(u)||0<H.model.getChildCount(u))},isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,H){var O=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=O&&(H.isContainer(O)&&"0"!=u.style.collapsible||!H.isContainer(O)&&"1"==u.style.collapsible)},
+H){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=u&&(H.isSwimlane(u)||0<H.model.getChildCount(u))},isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,H){var P=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=P&&(H.isContainer(P)&&"0"!=u.style.collapsible||!H.isContainer(P)&&"1"==u.style.collapsible)},
isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length&&!H.editorUi.editor.graph.isSwimlane(u.vertices[0])&&null==mxUtils.getValue(u.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(u,H){H=H.editorUi.editor.graph.model;return 0<u.vertices.length?
H.isVertex(H.getParent(u.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(u,H){u=0<u.vertices.length?H.editorUi.editor.graph.getCellGeometry(u.vertices[0]):null;return null!=u&&!u.relative}},
{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"fixedWidth",dispName:"Fixed Width",type:"bool",defVal:!1},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},
-{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,H){var O=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return H.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==O||O==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||
+{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,H){var P=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return H.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==P||P==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||
null!=u.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(u,H){return 0<u.vertices.length&&H.editorUi.editor.graph.isContainer(u.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
-Editor.createRoughCanvas=function(u){var H=rough.canvas({getContext:function(){return u}});H.draw=function(O){var T=O.sets||[];O=O.options||this.getDefaultOptions();for(var R=0;R<T.length;R++){var da=T[R];switch(da.type){case "path":null!=O.stroke&&this._drawToContext(u,da,O);break;case "fillPath":this._drawToContext(u,da,O);break;case "fillSketch":this.fillSketch(u,da,O)}}};H.fillSketch=function(O,T,R){var da=u.state.strokeColor,P=u.state.strokeWidth,ma=u.state.strokeAlpha,ra=u.state.dashed,xa=R.fillWeight;
-0>xa&&(xa=R.strokeWidth/2);u.setStrokeAlpha(u.state.fillAlpha);u.setStrokeColor(R.fill||"");u.setStrokeWidth(xa);u.setDashed(!1);this._drawToContext(O,T,R);u.setDashed(ra);u.setStrokeWidth(P);u.setStrokeColor(da);u.setStrokeAlpha(ma)};H._drawToContext=function(O,T,R){O.begin();for(var da=0;da<T.ops.length;da++){var P=T.ops[da],ma=P.data;switch(P.op){case "move":O.moveTo(ma[0],ma[1]);break;case "bcurveTo":O.curveTo(ma[0],ma[1],ma[2],ma[3],ma[4],ma[5]);break;case "lineTo":O.lineTo(ma[0],ma[1])}}O.end();
-"fillPath"===T.type&&R.filled?O.fill():O.stroke()};return H};(function(){function u(da,P,ma){this.canvas=da;this.rc=P;this.shape=ma;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,u.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,u.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,u.prototype.rect);this.originalRoundrect=this.canvas.roundrect;
+Editor.createRoughCanvas=function(u){var H=rough.canvas({getContext:function(){return u}});H.draw=function(P){var T=P.sets||[];P=P.options||this.getDefaultOptions();for(var S=0;S<T.length;S++){var da=T[S];switch(da.type){case "path":null!=P.stroke&&this._drawToContext(u,da,P);break;case "fillPath":this._drawToContext(u,da,P);break;case "fillSketch":this.fillSketch(u,da,P)}}};H.fillSketch=function(P,T,S){var da=u.state.strokeColor,R=u.state.strokeWidth,ma=u.state.strokeAlpha,ra=u.state.dashed,xa=S.fillWeight;
+0>xa&&(xa=S.strokeWidth/2);u.setStrokeAlpha(u.state.fillAlpha);u.setStrokeColor(S.fill||"");u.setStrokeWidth(xa);u.setDashed(!1);this._drawToContext(P,T,S);u.setDashed(ra);u.setStrokeWidth(R);u.setStrokeColor(da);u.setStrokeAlpha(ma)};H._drawToContext=function(P,T,S){P.begin();for(var da=0;da<T.ops.length;da++){var R=T.ops[da],ma=R.data;switch(R.op){case "move":P.moveTo(ma[0],ma[1]);break;case "bcurveTo":P.curveTo(ma[0],ma[1],ma[2],ma[3],ma[4],ma[5]);break;case "lineTo":P.lineTo(ma[0],ma[1])}}P.end();
+"fillPath"===T.type&&S.filled?P.fill():P.stroke()};return H};(function(){function u(da,R,ma){this.canvas=da;this.rc=R;this.shape=ma;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,u.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,u.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,u.prototype.rect);this.originalRoundrect=this.canvas.roundrect;
this.canvas.roundrect=mxUtils.bind(this,u.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,u.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,u.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,u.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,u.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=
mxUtils.bind(this,u.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,u.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,u.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,u.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,u.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,
-u.prototype.fillAndStroke);this.path=[];this.passThrough=!1}u.prototype.moveOp="M";u.prototype.lineOp="L";u.prototype.quadOp="Q";u.prototype.curveOp="C";u.prototype.closeOp="Z";u.prototype.getStyle=function(da,P){var ma=1;if(null!=this.shape.state){var ra=this.shape.state.cell.id;if(null!=ra)for(var xa=0;xa<ra.length;xa++)ma=(ma<<5)-ma+ra.charCodeAt(xa)<<0}ma={strokeWidth:this.canvas.state.strokeWidth,seed:ma,preserveVertices:!0};ra=this.rc.getDefaultOptions();ma.stroke=da?this.canvas.state.strokeColor===
-mxConstants.NONE?"transparent":this.canvas.state.strokeColor:mxConstants.NONE;da=null;(ma.filled=P)?(ma.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,da=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):ma.fill="";ma.bowing=mxUtils.getValue(this.shape.style,"bowing",ra.bowing);ma.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",ra.hachureAngle);ma.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",
-ra.curveFitting);ma.roughness=mxUtils.getValue(this.shape.style,"jiggle",ra.roughness);ma.simplification=mxUtils.getValue(this.shape.style,"simplification",ra.simplification);ma.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",ra.disableMultiStroke);ma.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",ra.disableMultiStrokeFill);P=mxUtils.getValue(this.shape.style,"hachureGap",-1);ma.hachureGap="auto"==P?-1:P;ma.dashGap=mxUtils.getValue(this.shape.style,
-"dashGap",P);ma.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",P);ma.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",P);P=mxUtils.getValue(this.shape.style,"fillWeight",-1);ma.fillWeight="auto"==P?-1:P;P=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==P&&(P=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),P=null!=ma.fill&&(null!=da||null!=P&&ma.fill==P)?"solid":ra.fillStyle);
-ma.fillStyle=P;return ma};u.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};u.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};u.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var da=2;da<arguments.length;da+=2)this.lastX=arguments[da-1],this.lastY=arguments[da],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};
-u.prototype.lineTo=function(da,P){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,da,P),this.lastX=da,this.lastY=P)};u.prototype.moveTo=function(da,P){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,da,P),this.lastX=da,this.lastY=P,this.firstX=da,this.firstY=P)};u.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};u.prototype.quadTo=function(da,P,ma,
-ra){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,da,P,ma,ra),this.lastX=ma,this.lastY=ra)};u.prototype.curveTo=function(da,P,ma,ra,xa,ta){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,da,P,ma,ra,xa,ta),this.lastX=xa,this.lastY=ta)};u.prototype.arcTo=function(da,P,ma,ra,xa,ta,Aa){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var Ca=mxUtils.arcToCurves(this.lastX,this.lastY,da,P,ma,
-ra,xa,ta,Aa);if(null!=Ca)for(var Ba=0;Ba<Ca.length;Ba+=6)this.curveTo(Ca[Ba],Ca[Ba+1],Ca[Ba+2],Ca[Ba+3],Ca[Ba+4],Ca[Ba+5]);this.lastX=ta;this.lastY=Aa}};u.prototype.rect=function(da,P,ma,ra){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(da,P,ma,ra,this.getStyle(!0,!0)))};u.prototype.ellipse=function(da,P,ma,ra){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(da+
-ma/2,P+ra/2,ma,ra,this.getStyle(!0,!0)))};u.prototype.roundrect=function(da,P,ma,ra,xa,ta){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(da+xa,P),this.lineTo(da+ma-xa,P),this.quadTo(da+ma,P,da+ma,P+ta),this.lineTo(da+ma,P+ra-ta),this.quadTo(da+ma,P+ra,da+ma-xa,P+ra),this.lineTo(da+xa,P+ra),this.quadTo(da,P+ra,da,P+ra-ta),this.lineTo(da,P+ta),this.quadTo(da,P,da+xa,P))};u.prototype.drawPath=function(da){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),
-da)}catch(ma){}this.passThrough=!1}else if(null!=this.nextShape){for(var P in da)this.nextShape.options[P]=da[P];da.stroke!=mxConstants.NONE&&null!=da.stroke||delete this.nextShape.options.stroke;da.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};u.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};u.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,
+u.prototype.fillAndStroke);this.path=[];this.passThrough=!1}u.prototype.moveOp="M";u.prototype.lineOp="L";u.prototype.quadOp="Q";u.prototype.curveOp="C";u.prototype.closeOp="Z";u.prototype.getStyle=function(da,R){var ma=1;if(null!=this.shape.state){var ra=this.shape.state.cell.id;if(null!=ra)for(var xa=0;xa<ra.length;xa++)ma=(ma<<5)-ma+ra.charCodeAt(xa)<<0}ma={strokeWidth:this.canvas.state.strokeWidth,seed:ma,preserveVertices:!0};ra=this.rc.getDefaultOptions();ma.stroke=da?this.canvas.state.strokeColor===
+mxConstants.NONE?"transparent":this.canvas.state.strokeColor:mxConstants.NONE;da=null;(ma.filled=R)?(ma.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,da=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):ma.fill="";ma.bowing=mxUtils.getValue(this.shape.style,"bowing",ra.bowing);ma.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",ra.hachureAngle);ma.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",
+ra.curveFitting);ma.roughness=mxUtils.getValue(this.shape.style,"jiggle",ra.roughness);ma.simplification=mxUtils.getValue(this.shape.style,"simplification",ra.simplification);ma.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",ra.disableMultiStroke);ma.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",ra.disableMultiStrokeFill);R=mxUtils.getValue(this.shape.style,"hachureGap",-1);ma.hachureGap="auto"==R?-1:R;ma.dashGap=mxUtils.getValue(this.shape.style,
+"dashGap",R);ma.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",R);ma.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",R);R=mxUtils.getValue(this.shape.style,"fillWeight",-1);ma.fillWeight="auto"==R?-1:R;R=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==R&&(R=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),R=null!=ma.fill&&(null!=da||null!=R&&ma.fill==R)?"solid":ra.fillStyle);
+ma.fillStyle=R;return ma};u.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};u.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};u.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var da=2;da<arguments.length;da+=2)this.lastX=arguments[da-1],this.lastY=arguments[da],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};
+u.prototype.lineTo=function(da,R){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,da,R),this.lastX=da,this.lastY=R)};u.prototype.moveTo=function(da,R){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,da,R),this.lastX=da,this.lastY=R,this.firstX=da,this.firstY=R)};u.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};u.prototype.quadTo=function(da,R,ma,
+ra){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,da,R,ma,ra),this.lastX=ma,this.lastY=ra)};u.prototype.curveTo=function(da,R,ma,ra,xa,ta){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,da,R,ma,ra,xa,ta),this.lastX=xa,this.lastY=ta)};u.prototype.arcTo=function(da,R,ma,ra,xa,ta,Aa){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var Ca=mxUtils.arcToCurves(this.lastX,this.lastY,da,R,ma,
+ra,xa,ta,Aa);if(null!=Ca)for(var Ba=0;Ba<Ca.length;Ba+=6)this.curveTo(Ca[Ba],Ca[Ba+1],Ca[Ba+2],Ca[Ba+3],Ca[Ba+4],Ca[Ba+5]);this.lastX=ta;this.lastY=Aa}};u.prototype.rect=function(da,R,ma,ra){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(da,R,ma,ra,this.getStyle(!0,!0)))};u.prototype.ellipse=function(da,R,ma,ra){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(da+
+ma/2,R+ra/2,ma,ra,this.getStyle(!0,!0)))};u.prototype.roundrect=function(da,R,ma,ra,xa,ta){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(da+xa,R),this.lineTo(da+ma-xa,R),this.quadTo(da+ma,R,da+ma,R+ta),this.lineTo(da+ma,R+ra-ta),this.quadTo(da+ma,R+ra,da+ma-xa,R+ra),this.lineTo(da+xa,R+ra),this.quadTo(da,R+ra,da,R+ra-ta),this.lineTo(da,R+ta),this.quadTo(da,R,da+xa,R))};u.prototype.drawPath=function(da){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),
+da)}catch(ma){}this.passThrough=!1}else if(null!=this.nextShape){for(var R in da)this.nextShape.options[R]=da[R];da.stroke!=mxConstants.NONE&&null!=da.stroke||delete this.nextShape.options.stroke;da.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};u.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};u.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,
arguments):this.drawPath(this.getStyle(!1,!0))};u.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};u.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;this.canvas.close=this.originalClose;this.canvas.fill=
this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(da){return new u(da,Editor.createRoughCanvas(da),this)};var H=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(da){return this.outline||
-null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?H.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(da):this.createRoughCanvas(da)};var O=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(da,P,ma,ra,xa){null!=da.handJiggle&&da.handJiggle.passThrough||O.apply(this,arguments)};var T=mxShape.prototype.paint;mxShape.prototype.paint=function(da){var P=da.addTolerance,ma=!0;null!=this.style&&(ma=
+null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?H.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(da):this.createRoughCanvas(da)};var P=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(da,R,ma,ra,xa){null!=da.handJiggle&&da.handJiggle.passThrough||P.apply(this,arguments)};var T=mxShape.prototype.paint;mxShape.prototype.paint=function(da){var R=da.addTolerance,ma=!0;null!=this.style&&(ma=
"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=da.handJiggle&&da.handJiggle.constructor==u&&!this.outline){da.save();var ra=this.fill,xa=this.stroke;this.stroke=this.fill=null;var ta=this.configurePointerEvents,Aa=da.setStrokeColor;da.setStrokeColor=function(){};var Ca=da.setFillColor;da.setFillColor=function(){};ma||null==ra||(this.configurePointerEvents=function(){});da.handJiggle.passThrough=!0;T.apply(this,arguments);da.handJiggle.passThrough=!1;da.setFillColor=
-Ca;da.setStrokeColor=Aa;this.configurePointerEvents=ta;this.stroke=xa;this.fill=ra;da.restore();ma&&null!=ra&&(da.addTolerance=function(){})}T.apply(this,arguments);da.addTolerance=P};var R=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(da,P,ma,ra,xa,ta){null!=da.handJiggle&&da.handJiggle.constructor==u?(da.handJiggle.passThrough=!0,R.apply(this,arguments),da.handJiggle.passThrough=!1):R.apply(this,arguments)}})();Editor.fastCompress=function(u){return null==u||0==
-u.length||"undefined"===typeof pako?u:Graph.arrayBufferToString(pako.deflateRaw(u))};Editor.fastDecompress=function(u){return null==u||0==u.length||"undefined"===typeof pako?u:pako.inflateRaw(Graph.stringToArrayBuffer(atob(u)),{to:"string"})};Editor.extractGraphModel=function(u,H,O){if(null!=u&&"undefined"!==typeof pako){var T=u.ownerDocument.getElementsByTagName("div"),R=[];if(null!=T&&0<T.length)for(var da=0;da<T.length;da++)if("mxgraph"==T[da].getAttribute("class")){R.push(T[da]);break}0<R.length&&
-(T=R[0].getAttribute("data-mxgraph"),null!=T?(R=JSON.parse(T),null!=R&&null!=R.xml&&(u=mxUtils.parseXml(R.xml),u=u.documentElement)):(R=R[0].getElementsByTagName("div"),0<R.length&&(T=mxUtils.getTextContent(R[0]),T=Graph.decompress(T,null,O),0<T.length&&(u=mxUtils.parseXml(T),u=u.documentElement))))}if(null!=u&&"svg"==u.nodeName)if(T=u.getAttribute("content"),null!=T&&"<"!=T.charAt(0)&&"%"!=T.charAt(0)&&(T=unescape(window.atob?atob(T):Base64.decode(cont,T))),null!=T&&"%"==T.charAt(0)&&(T=decodeURIComponent(T)),
-null!=T&&0<T.length)u=mxUtils.parseXml(T).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==u||H||(R=null,"diagram"==u.nodeName?R=u:"mxfile"==u.nodeName&&(T=u.getElementsByTagName("diagram"),0<T.length&&(R=T[Math.max(0,Math.min(T.length-1,urlParams.page||0))])),null!=R&&(u=Editor.parseDiagramNode(R,O)));null==u||"mxGraphModel"==u.nodeName||H&&"mxfile"==u.nodeName||(u=null);return u};Editor.parseDiagramNode=function(u,H){var O=mxUtils.trim(mxUtils.getTextContent(u)),T=null;
-0<O.length?(u=Graph.decompress(O,null,H),null!=u&&0<u.length&&(T=mxUtils.parseXml(u).documentElement)):(u=mxUtils.getChildNodes(u),0<u.length&&(T=mxUtils.createXmlDocument(),T.appendChild(T.importNode(u[0],!0)),T=T.documentElement));return T};Editor.getDiagramNodeXml=function(u){var H=mxUtils.getTextContent(u),O=null;0<H.length?O=Graph.decompress(H):null!=u.firstChild&&(O=mxUtils.getXml(u.firstChild));return O};Editor.extractGraphModelFromPdf=function(u){u=u.substring(u.indexOf(",")+1);u=window.atob&&
-!mxClient.IS_SF?atob(u):Base64.decode(u,!0);if("%PDF-1.7"==u.substring(0,8)){var H=u.indexOf("EmbeddedFile");if(-1<H){var O=u.indexOf("stream",H)+9;if(0<u.substring(H,O).indexOf("application#2Fvnd.jgraph.mxfile"))return H=u.indexOf("endstream",O-1),pako.inflateRaw(Graph.stringToArrayBuffer(u.substring(O,H)),{to:"string"})}return null}O=null;H="";for(var T=0,R=0,da=[],P=null;R<u.length;){var ma=u.charCodeAt(R);R+=1;10!=ma&&(H+=String.fromCharCode(ma));ma=="/Subject (%3Cmxfile".charCodeAt(T)?T++:T=
-0;if(19==T){var ra=u.indexOf("%3C%2Fmxfile%3E)",R)+15;R-=9;if(ra>R){O=u.substring(R,ra);break}}10==ma&&("endobj"==H?P=null:"obj"==H.substring(H.length-3,H.length)||"xref"==H||"trailer"==H?(P=[],da[H.split(" ")[0]]=P):null!=P&&P.push(H),H="")}null==O&&(O=Editor.extractGraphModelFromXref(da));null!=O&&(O=decodeURIComponent(O.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return O};Editor.extractGraphModelFromXref=function(u){var H=u.trailer,O=null;null!=H&&(H=/.* \/Info (\d+) (\d+) R/g.exec(H.join("\n")),
-null!=H&&0<H.length&&(H=u[H[1]],null!=H&&(H=/.* \/Subject (\d+) (\d+) R/g.exec(H.join("\n")),null!=H&&0<H.length&&(u=u[H[1]],null!=u&&(u=u.join("\n"),O=u.substring(1,u.length-1))))));return O};Editor.extractParserError=function(u,H){var O=null;u=null!=u?u.getElementsByTagName("parsererror"):null;null!=u&&0<u.length&&(O=H||mxResources.get("invalidChars"),H=u[0].getElementsByTagName("div"),0<H.length&&(O=mxUtils.getTextContent(H[0])));return null!=O?mxUtils.trim(O):O};Editor.addRetryToError=function(u,
+Ca;da.setStrokeColor=Aa;this.configurePointerEvents=ta;this.stroke=xa;this.fill=ra;da.restore();ma&&null!=ra&&(da.addTolerance=function(){})}T.apply(this,arguments);da.addTolerance=R};var S=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(da,R,ma,ra,xa,ta){null!=da.handJiggle&&da.handJiggle.constructor==u?(da.handJiggle.passThrough=!0,S.apply(this,arguments),da.handJiggle.passThrough=!1):S.apply(this,arguments)}})();Editor.fastCompress=function(u){return null==u||0==
+u.length||"undefined"===typeof pako?u:Graph.arrayBufferToString(pako.deflateRaw(u))};Editor.fastDecompress=function(u){return null==u||0==u.length||"undefined"===typeof pako?u:pako.inflateRaw(Graph.stringToArrayBuffer(atob(u)),{to:"string"})};Editor.extractGraphModel=function(u,H,P){if(null!=u&&"undefined"!==typeof pako){var T=u.ownerDocument.getElementsByTagName("div"),S=[];if(null!=T&&0<T.length)for(var da=0;da<T.length;da++)if("mxgraph"==T[da].getAttribute("class")){S.push(T[da]);break}0<S.length&&
+(T=S[0].getAttribute("data-mxgraph"),null!=T?(S=JSON.parse(T),null!=S&&null!=S.xml&&(u=mxUtils.parseXml(S.xml),u=u.documentElement)):(S=S[0].getElementsByTagName("div"),0<S.length&&(T=mxUtils.getTextContent(S[0]),T=Graph.decompress(T,null,P),0<T.length&&(u=mxUtils.parseXml(T),u=u.documentElement))))}if(null!=u&&"svg"==u.nodeName)if(T=u.getAttribute("content"),null!=T&&"<"!=T.charAt(0)&&"%"!=T.charAt(0)&&(T=unescape(window.atob?atob(T):Base64.decode(cont,T))),null!=T&&"%"==T.charAt(0)&&(T=decodeURIComponent(T)),
+null!=T&&0<T.length)u=mxUtils.parseXml(T).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==u||H||(S=null,"diagram"==u.nodeName?S=u:"mxfile"==u.nodeName&&(T=u.getElementsByTagName("diagram"),0<T.length&&(S=T[Math.max(0,Math.min(T.length-1,urlParams.page||0))])),null!=S&&(u=Editor.parseDiagramNode(S,P)));null==u||"mxGraphModel"==u.nodeName||H&&"mxfile"==u.nodeName||(u=null);return u};Editor.parseDiagramNode=function(u,H){var P=mxUtils.trim(mxUtils.getTextContent(u)),T=null;
+0<P.length?(u=Graph.decompress(P,null,H),null!=u&&0<u.length&&(T=mxUtils.parseXml(u).documentElement)):(u=mxUtils.getChildNodes(u),0<u.length&&(T=mxUtils.createXmlDocument(),T.appendChild(T.importNode(u[0],!0)),T=T.documentElement));return T};Editor.getDiagramNodeXml=function(u){var H=mxUtils.getTextContent(u),P=null;0<H.length?P=Graph.decompress(H):null!=u.firstChild&&(P=mxUtils.getXml(u.firstChild));return P};Editor.extractGraphModelFromPdf=function(u){u=u.substring(u.indexOf(",")+1);u=window.atob&&
+!mxClient.IS_SF?atob(u):Base64.decode(u,!0);if("%PDF-1.7"==u.substring(0,8)){var H=u.indexOf("EmbeddedFile");if(-1<H){var P=u.indexOf("stream",H)+9;if(0<u.substring(H,P).indexOf("application#2Fvnd.jgraph.mxfile"))return H=u.indexOf("endstream",P-1),pako.inflateRaw(Graph.stringToArrayBuffer(u.substring(P,H)),{to:"string"})}return null}P=null;H="";for(var T=0,S=0,da=[],R=null;S<u.length;){var ma=u.charCodeAt(S);S+=1;10!=ma&&(H+=String.fromCharCode(ma));ma=="/Subject (%3Cmxfile".charCodeAt(T)?T++:T=
+0;if(19==T){var ra=u.indexOf("%3C%2Fmxfile%3E)",S)+15;S-=9;if(ra>S){P=u.substring(S,ra);break}}10==ma&&("endobj"==H?R=null:"obj"==H.substring(H.length-3,H.length)||"xref"==H||"trailer"==H?(R=[],da[H.split(" ")[0]]=R):null!=R&&R.push(H),H="")}null==P&&(P=Editor.extractGraphModelFromXref(da));null!=P&&(P=decodeURIComponent(P.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return P};Editor.extractGraphModelFromXref=function(u){var H=u.trailer,P=null;null!=H&&(H=/.* \/Info (\d+) (\d+) R/g.exec(H.join("\n")),
+null!=H&&0<H.length&&(H=u[H[1]],null!=H&&(H=/.* \/Subject (\d+) (\d+) R/g.exec(H.join("\n")),null!=H&&0<H.length&&(u=u[H[1]],null!=u&&(u=u.join("\n"),P=u.substring(1,u.length-1))))));return P};Editor.extractParserError=function(u,H){var P=null;u=null!=u?u.getElementsByTagName("parsererror"):null;null!=u&&0<u.length&&(P=H||mxResources.get("invalidChars"),H=u[0].getElementsByTagName("div"),0<H.length&&(P=mxUtils.getTextContent(H[0])));return null!=P?mxUtils.trim(P):P};Editor.addRetryToError=function(u,
H){null!=u&&(u=null!=u.error?u.error:u,null==u.retry&&(u.retry=H))};Editor.configure=function(u,H){if(null!=u){Editor.config=u;Editor.configVersion=u.version;Menus.prototype.defaultFonts=u.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=u.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=u.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=u.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=
u.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=u.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=u.autosaveDelay||DrawioFile.prototype.autosaveDelay;u.debug&&(urlParams.test="1");null!=u.templateFile&&(EditorUi.templateFile=u.templateFile);null!=u.styles&&(Array.isArray(u.styles)?Editor.styles=u.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=u.globalVars&&(Editor.globalVars=
u.globalVars);null!=u.compressXml&&(Editor.compressXml=u.compressXml);null!=u.includeDiagram&&(Editor.defaultIncludeDiagram=u.includeDiagram);null!=u.simpleLabels&&(Editor.simpleLabels=u.simpleLabels);null!=u.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=u.oneDriveInlinePicker);null!=u.darkColor&&(Editor.darkColor=u.darkColor);null!=u.lightColor&&(Editor.lightColor=u.lightColor);null!=u.settingsName&&(Editor.configurationKey="."+u.settingsName+"-configuration",Editor.settingsKey="."+u.settingsName+
-"-config",mxSettings.key=Editor.settingsKey);u.customFonts&&(Menus.prototype.defaultFonts=u.customFonts.concat(Menus.prototype.defaultFonts));u.customPresetColors&&(ColorDialog.prototype.presetColors=u.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=u.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=u.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=u.css){var O=document.createElement("style");O.setAttribute("type","text/css");
-O.appendChild(document.createTextNode(u.css));var T=document.getElementsByTagName("script")[0];T.parentNode.insertBefore(O,T)}null!=u.libraries&&(Sidebar.prototype.customEntries=u.libraries);null!=u.enabledLibraries&&(Array.isArray(u.enabledLibraries)?Sidebar.prototype.enabledLibraries=u.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=u.defaultLibraries&&(Sidebar.prototype.defaultEntries=u.defaultLibraries);null!=u.defaultCustomLibraries&&(Editor.defaultCustomLibraries=
+"-config",mxSettings.key=Editor.settingsKey);u.customFonts&&(Menus.prototype.defaultFonts=u.customFonts.concat(Menus.prototype.defaultFonts));u.customPresetColors&&(ColorDialog.prototype.presetColors=u.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=u.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=u.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=u.css){var P=document.createElement("style");P.setAttribute("type","text/css");
+P.appendChild(document.createTextNode(u.css));var T=document.getElementsByTagName("script")[0];T.parentNode.insertBefore(P,T)}null!=u.libraries&&(Sidebar.prototype.customEntries=u.libraries);null!=u.enabledLibraries&&(Array.isArray(u.enabledLibraries)?Sidebar.prototype.enabledLibraries=u.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=u.defaultLibraries&&(Sidebar.prototype.defaultEntries=u.defaultLibraries);null!=u.defaultCustomLibraries&&(Editor.defaultCustomLibraries=
u.defaultCustomLibraries);null!=u.enableCustomLibraries&&(Editor.enableCustomLibraries=u.enableCustomLibraries);null!=u.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=u.defaultVertexStyle);null!=u.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=u.defaultEdgeStyle);null!=u.defaultPageVisible&&(Graph.prototype.defaultPageVisible=u.defaultPageVisible);null!=u.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=u.defaultGridEnabled);null!=u.zoomWheel&&(Graph.zoomWheel=u.zoomWheel);null!=
-u.zoomFactor&&(O=parseFloat(u.zoomFactor),!isNaN(O)&&1<O?Graph.prototype.zoomFactor=O:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=u.gridSteps&&(O=parseInt(u.gridSteps),!isNaN(O)&&0<O?mxGraphView.prototype.gridSteps=O:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=u.pageFormat&&(O=parseInt(u.pageFormat.width),T=parseInt(u.pageFormat.height),!isNaN(O)&&0<O&&!isNaN(T)&&0<T?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,O,T),
+u.zoomFactor&&(P=parseFloat(u.zoomFactor),!isNaN(P)&&1<P?Graph.prototype.zoomFactor=P:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=u.gridSteps&&(P=parseInt(u.gridSteps),!isNaN(P)&&0<P?mxGraphView.prototype.gridSteps=P:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=u.pageFormat&&(P=parseInt(u.pageFormat.width),T=parseInt(u.pageFormat.height),!isNaN(P)&&0<P&&!isNaN(T)&&0<T?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,P,T),
mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));u.thumbWidth&&(Sidebar.prototype.thumbWidth=u.thumbWidth);u.thumbHeight&&(Sidebar.prototype.thumbHeight=u.thumbHeight);u.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=u.emptyLibraryXml);u.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=u.emptyDiagramXml);u.sidebarWidth&&(EditorUi.prototype.hsplitPosition=u.sidebarWidth);u.sidebarTitles&&
-(Sidebar.prototype.sidebarTitles=u.sidebarTitles);u.sidebarTitleSize&&(O=parseInt(u.sidebarTitleSize),!isNaN(O)&&0<O?Sidebar.prototype.sidebarTitleSize=O:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));u.fontCss&&("string"===typeof u.fontCss?Editor.configureFontCss(u.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=u.autosaveDelay&&(O=parseInt(u.autosaveDelay),!isNaN(O)&&0<O?DrawioFile.prototype.autosaveDelay=O:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));
+(Sidebar.prototype.sidebarTitles=u.sidebarTitles);u.sidebarTitleSize&&(P=parseInt(u.sidebarTitleSize),!isNaN(P)&&0<P?Sidebar.prototype.sidebarTitleSize=P:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));u.fontCss&&("string"===typeof u.fontCss?Editor.configureFontCss(u.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=u.autosaveDelay&&(P=parseInt(u.autosaveDelay),!isNaN(P)&&0<P?DrawioFile.prototype.autosaveDelay=P:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));
if(null!=u.plugins&&!H)for(App.initPluginCallback(),H=0;H<u.plugins.length;H++)mxscript(u.plugins[H]);null!=u.maxImageBytes&&(EditorUi.prototype.maxImageBytes=u.maxImageBytes);null!=u.maxImageSize&&(EditorUi.prototype.maxImageSize=u.maxImageSize);null!=u.shareCursorPosition&&(EditorUi.prototype.shareCursorPosition=u.shareCursorPosition);null!=u.showRemoteCursors&&(EditorUi.prototype.showRemoteCursors=u.showRemoteCursors)}};Editor.configureFontCss=function(u){if(null!=u){Editor.prototype.fontCss=u;
-var H=document.getElementsByTagName("script")[0];if(null!=H&&null!=H.parentNode){var O=document.createElement("style");O.setAttribute("type","text/css");O.appendChild(document.createTextNode(u));H.parentNode.insertBefore(O,H);u=u.split("url(");for(O=1;O<u.length;O++){var T=u[O].indexOf(")");T=Editor.trimCssUrl(u[O].substring(0,T));var R=document.createElement("link");R.setAttribute("rel","preload");R.setAttribute("href",T);R.setAttribute("as","font");R.setAttribute("crossorigin","");H.parentNode.insertBefore(R,
-H)}}}};Editor.trimCssUrl=function(u){return u.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(u){u=null!=u?u:Editor.GUID_LENGTH;for(var H=[],O=0;O<u;O++)H.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return H.join("")};Editor.prototype.timeout=
+var H=document.getElementsByTagName("script")[0];if(null!=H&&null!=H.parentNode){var P=document.createElement("style");P.setAttribute("type","text/css");P.appendChild(document.createTextNode(u));H.parentNode.insertBefore(P,H);u=u.split("url(");for(P=1;P<u.length;P++){var T=u[P].indexOf(")");T=Editor.trimCssUrl(u[P].substring(0,T));var S=document.createElement("link");S.setAttribute("rel","preload");S.setAttribute("href",T);S.setAttribute("as","font");S.setAttribute("crossorigin","");H.parentNode.insertBefore(S,
+H)}}}};Editor.trimCssUrl=function(u){return u.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(u){u=null!=u?u:Editor.GUID_LENGTH;for(var H=[],P=0;P<u;P++)H.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return H.join("")};Editor.prototype.timeout=
25E3;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(u){u=null!=u&&"mxlibrary"!=u.nodeName?this.extractGraphModel(u):null;if(null!=u){var H=Editor.extractParserError(u,mxResources.get("invalidOrMissingFile"));if(H)throw EditorUi.debug("Editor.setGraphXml ParserError",[this],"node",[u],"cause",[H]),Error(mxResources.get("notADiagramFile")+
-" ("+H+")");if("mxGraphModel"==u.nodeName){H=u.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=H&&""!=H)H!=this.graph.currentStyle&&(O=null!=this.graph.themes?this.graph.themes[H]:mxUtils.load(STYLE_PATH+"/"+H+".xml").getDocumentElement(),null!=O&&(T=new mxCodec(O.ownerDocument),T.decode(O,this.graph.getStylesheet())));else{var O=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement();if(null!=O){var T=new mxCodec(O.ownerDocument);
-T.decode(O,this.graph.getStylesheet())}}this.graph.currentStyle=H;this.graph.mathEnabled="1"==urlParams.math||"1"==u.getAttribute("math");H=u.getAttribute("backgroundImage");null!=H?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(H)):this.graph.setBackgroundImage(null);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==u.getAttribute("shadow"),!1);if(H=u.getAttribute("extFonts"))try{for(H=
-H.split("|").map(function(R){R=R.split("^");return{name:R[0],url:R[1]}}),O=0;O<H.length;O++)this.graph.addExtFont(H[O].name,H[O].url)}catch(R){console.log("ExtFonts format error: "+R.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 e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(u,H){u=null!=
-u?u:!0;var O=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&O.setAttribute("style",this.graph.currentStyle);var T=this.graph.getBackgroundImageObject(this.graph.backgroundImage,H);null!=T&&O.setAttribute("backgroundImage",JSON.stringify(T));O.setAttribute("math",this.graph.mathEnabled?"1":"0");O.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(T=this.graph.extFonts.map(function(R){return R.name+
-"^"+R.url}),O.setAttribute("extFonts",T.join("|")));return O};Editor.prototype.isDataSvg=function(u){try{var H=mxUtils.parseXml(u).documentElement.getAttribute("content");if(null!=H&&(null!=H&&"<"!=H.charAt(0)&&"%"!=H.charAt(0)&&(H=unescape(window.atob?atob(H):Base64.decode(cont,H))),null!=H&&"%"==H.charAt(0)&&(H=decodeURIComponent(H)),null!=H&&0<H.length)){var O=mxUtils.parseXml(H).documentElement;return"mxfile"==O.nodeName||"mxGraphModel"==O.nodeName}}catch(T){}return!1};Editor.prototype.extractGraphModel=
-function(u,H,O){return Editor.extractGraphModel.apply(this,arguments)};var k=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();k.apply(this,arguments)};var n=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){n.apply(this,
-arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(u,H){if("undefined"===typeof window.MathJax){u=null!=u?u:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(R){try{MathJax.typesetClear([R]),MathJax.typeset([R])}catch(da){MathJax.typesetClear([R]),null!=da.retry?da.retry.then(function(){MathJax.typeset([R])}):null!=window.console&&console.log("Error in MathJax: "+
-da.toString())}};window.MathJax=null!=H?H:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var R=0;R<Editor.mathJaxQueue.length;R++)Editor.doMathJaxRender(Editor.mathJaxQueue[R])}}};Editor.MathJaxRender=function(R){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(R):Editor.mathJaxQueue.push(R)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var O=Editor.prototype.init;
-Editor.prototype.init=function(){O.apply(this,arguments);var R=mxUtils.bind(this,function(da,P){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,R);this.graph.addListener(mxEvent.REFRESH,R)};H=document.getElementsByTagName("script");if(null!=H&&0<H.length){var T=document.createElement("script");T.setAttribute("type","text/javascript");T.setAttribute("src",u);H[0].parentNode.appendChild(T)}}};
-Editor.prototype.csvToArray=function(u){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(u))return null;var H=[];u.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(O,T,R,da){void 0!==T?H.push(T.replace(/\\'/g,"'")):void 0!==R?H.push(R.replace(/\\"/g,
-'"')):void 0!==da&&H.push(da);return""});/,\s*$/.test(u)&&H.push("");return H};Editor.prototype.isCorsEnabledForUrl=function(u){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||u.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(u)||"https://raw.githubusercontent.com/"===u.substring(0,34)||"https://fonts.googleapis.com/"===
-u.substring(0,29)||"https://fonts.gstatic.com/"===u.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var u=new mxUrlConverter;u.updateBaseUrl();var H=u.convert,O=this;u.convert=function(T){if(null!=T){var R="http://"==T.substring(0,7)||"https://"==T.substring(0,8);R&&!navigator.onLine?T=Editor.svgBrokenImage.src:!R||T.substring(0,u.baseUrl.length)==u.baseUrl||O.crossOriginImages&&O.isCorsEnabledForUrl(T)?"chrome-extension://"==T.substring(0,19)||mxClient.IS_CHROMEAPP||(T=H.apply(this,
-arguments)):T=PROXY_URL+"?url="+encodeURIComponent(T)}return T};return u};Editor.createSvgDataUri=function(u){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(u)))};Editor.prototype.convertImageToDataUri=function(u,H){try{var O=!0,T=window.setTimeout(mxUtils.bind(this,function(){O=!1;H(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(u))mxUtils.get(u,mxUtils.bind(this,function(da){window.clearTimeout(T);O&&H(Editor.createSvgDataUri(da.getText()))}),function(){window.clearTimeout(T);
-O&&H(Editor.svgBrokenImage.src)});else{var R=new Image;this.crossOriginImages&&(R.crossOrigin="anonymous");R.onload=function(){window.clearTimeout(T);if(O)try{var da=document.createElement("canvas"),P=da.getContext("2d");da.height=R.height;da.width=R.width;P.drawImage(R,0,0);H(da.toDataURL())}catch(ma){H(Editor.svgBrokenImage.src)}};R.onerror=function(){window.clearTimeout(T);O&&H(Editor.svgBrokenImage.src)};R.src=u}}catch(da){H(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(u,
-H,O,T){null==T&&(T=this.createImageUrlConverter());var R=0,da=O||{};O=mxUtils.bind(this,function(P,ma){P=u.getElementsByTagName(P);for(var ra=0;ra<P.length;ra++)mxUtils.bind(this,function(xa){try{if(null!=xa){var ta=T.convert(xa.getAttribute(ma));if(null!=ta&&"data:"!=ta.substring(0,5)){var Aa=da[ta];null==Aa?(R++,this.convertImageToDataUri(ta,function(Ca){null!=Ca&&(da[ta]=Ca,xa.setAttribute(ma,Ca));R--;0==R&&H(u)})):xa.setAttribute(ma,Aa)}else null!=ta&&xa.setAttribute(ma,ta)}}catch(Ca){}})(P[ra])});
-O("image","xlink:href");O("img","src");0==R&&H(u)};Editor.base64Encode=function(u){for(var H="",O=0,T=u.length,R,da,P;O<T;){R=u.charCodeAt(O++)&255;if(O==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((R&3)<<4);H+="==";break}da=u.charCodeAt(O++);if(O==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((R&
-3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2);H+="=";break}P=u.charCodeAt(O++);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((R&3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2|(P&192)>>6);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P&
-63)}return H};Editor.prototype.loadUrl=function(u,H,O,T,R,da,P,ma){try{var ra=!P&&(T||/(\.png)($|\?)/i.test(u)||/(\.jpe?g)($|\?)/i.test(u)||/(\.gif)($|\?)/i.test(u)||/(\.pdf)($|\?)/i.test(u));R=null!=R?R:!0;var xa=mxUtils.bind(this,function(){mxUtils.get(u,mxUtils.bind(this,function(ta){if(200<=ta.getStatus()&&299>=ta.getStatus()){if(null!=H){var Aa=ta.getText();if(ra){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){ta=mxUtilsBinaryToArray(ta.request.responseBody).toArray();
-Aa=Array(ta.length);for(var Ca=0;Ca<ta.length;Ca++)Aa[Ca]=String.fromCharCode(ta[Ca]);Aa=Aa.join("")}da=null!=da?da:"data:image/png;base64,";Aa=da+Editor.base64Encode(Aa)}H(Aa)}}else null!=O&&(0==ta.getStatus()?O({message:mxResources.get("accessDenied")},ta):O({message:mxResources.get("error")+" "+ta.getStatus()},ta))}),function(ta){null!=O&&O({message:mxResources.get("error")+" "+ta.getStatus()})},ra,this.timeout,function(){R&&null!=O&&O({code:App.ERROR_TIMEOUT,retry:xa})},ma)});xa()}catch(ta){null!=
-O&&O(ta)}};Editor.prototype.absoluteCssFonts=function(u){var H=null;if(null!=u){var O=u.split("url(");if(0<O.length){H=[O[0]];u=window.location.pathname;var T=null!=u?u.lastIndexOf("/"):-1;0<=T&&(u=u.substring(0,T+1));T=document.getElementsByTagName("base");var R=null;null!=T&&0<T.length&&(R=T[0].getAttribute("href"));for(var da=1;da<O.length;da++)if(T=O[da].indexOf(")"),0<T){var P=Editor.trimCssUrl(O[da].substring(0,T));this.graph.isRelativeUrl(P)&&(P=null!=R?R+P:window.location.protocol+"//"+window.location.hostname+
-("/"==P.charAt(0)?"":u)+P);H.push('url("'+P+'"'+O[da].substring(T))}else H.push(O[da])}else H=[u]}return null!=H?H.join(""):null};Editor.prototype.mapFontUrl=function(u,H,O){/^https?:\/\//.test(H)&&!this.isCorsEnabledForUrl(H)&&(H=PROXY_URL+"?url="+encodeURIComponent(H));O(u,H)};Editor.prototype.embedCssFonts=function(u,H){var O=u.split("url("),T=0;null==this.cachedFonts&&(this.cachedFonts={});var R=mxUtils.bind(this,function(){if(0==T){for(var ra=[O[0]],xa=1;xa<O.length;xa++){var ta=O[xa].indexOf(")");
-ra.push('url("');ra.push(this.cachedFonts[Editor.trimCssUrl(O[xa].substring(0,ta))]);ra.push('"'+O[xa].substring(ta))}H(ra.join(""))}});if(0<O.length){for(u=1;u<O.length;u++){var da=O[u].indexOf(")"),P=null,ma=O[u].indexOf("format(",da);0<ma&&(P=Editor.trimCssUrl(O[u].substring(ma+7,O[u].indexOf(")",ma))));mxUtils.bind(this,function(ra){if(null==this.cachedFonts[ra]){this.cachedFonts[ra]=ra;T++;var xa="application/x-font-ttf";if("svg"==P||/(\.svg)($|\?)/i.test(ra))xa="image/svg+xml";else if("otf"==
-P||"embedded-opentype"==P||/(\.otf)($|\?)/i.test(ra))xa="application/x-font-opentype";else if("woff"==P||/(\.woff)($|\?)/i.test(ra))xa="application/font-woff";else if("woff2"==P||/(\.woff2)($|\?)/i.test(ra))xa="application/font-woff2";else if("eot"==P||/(\.eot)($|\?)/i.test(ra))xa="application/vnd.ms-fontobject";else if("sfnt"==P||/(\.sfnt)($|\?)/i.test(ra))xa="application/font-sfnt";this.mapFontUrl(xa,ra,mxUtils.bind(this,function(ta,Aa){this.loadUrl(Aa,mxUtils.bind(this,function(Ca){this.cachedFonts[ra]=
-Ca;T--;R()}),mxUtils.bind(this,function(Ca){T--;R()}),!0,null,"data:"+ta+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(O[u].substring(0,da)),P)}R()}else H(u)};Editor.prototype.loadFonts=function(u){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(H){this.resolvedFontCss=H;null!=u&&u()})):null!=u&&u()};Editor.prototype.createGoogleFontCache=function(){var u={},H;for(H in Graph.fontMapping)Graph.isCssFontUrl(H)&&(u[H]=Graph.fontMapping[H]);
-return u};Editor.prototype.embedExtFonts=function(u){var H=this.graph.getCustomFonts();if(0<H.length){var O=[],T=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var R=mxUtils.bind(this,function(){0==T&&this.embedCssFonts(O.join(""),u)}),da=0;da<H.length;da++)mxUtils.bind(this,function(P,ma){Graph.isCssFontUrl(ma)?null==this.cachedGoogleFonts[ma]?(T++,this.loadUrl(ma,mxUtils.bind(this,function(ra){this.cachedGoogleFonts[ma]=ra;O.push(ra+"\n");T--;R()}),mxUtils.bind(this,
-function(ra){T--;O.push("@import url("+ma+");\n");R()}))):O.push(this.cachedGoogleFonts[ma]+"\n"):O.push('@font-face {font-family: "'+P+'";src: url("'+ma+'")}\n')})(H[da].name,H[da].url);R()}else u()};Editor.prototype.addMathCss=function(u){u=u.getElementsByTagName("defs");if(null!=u&&0<u.length)for(var H=document.getElementsByTagName("style"),O=0;O<H.length;O++){var T=mxUtils.getTextContent(H[O]);0>T.indexOf("mxPageSelector")&&0<T.indexOf("MathJax")&&u[0].appendChild(H[O].cloneNode(!0))}};Editor.prototype.addFontCss=
-function(u,H){H=null!=H?H:this.absoluteCssFonts(this.fontCss);if(null!=H){var O=u.getElementsByTagName("defs"),T=u.ownerDocument;0==O.length?(O=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"defs"):T.createElement("defs"),null!=u.firstChild?u.insertBefore(O,u.firstChild):u.appendChild(O)):O=O[0];u=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"style"):T.createElement("style");u.setAttribute("type","text/css");mxUtils.setTextContent(u,H);O.appendChild(u)}};Editor.prototype.isExportToCanvas=
-function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(u,H,O){var T=mxClient.IS_FF?8192:16384;return Math.min(O,Math.min(T/u,T/H))};Editor.prototype.exportToCanvas=function(u,H,O,T,R,da,P,ma,ra,xa,ta,Aa,Ca,Ba,sa,Oa,Ta,Sa){try{da=null!=da?da:!0;P=null!=P?P:!0;Aa=null!=Aa?Aa:this.graph;Ca=null!=Ca?Ca:0;var $a=ra?null:Aa.background;$a==mxConstants.NONE&&($a=null);null==$a&&($a=T);null==$a&&0==ra&&($a=Oa?this.graph.defaultPageBackgroundColor:"#ffffff");
-this.convertImages(Aa.getSvg(null,null,Ca,Ba,null,P,null,null,null,xa,null,Oa,Ta,Sa),mxUtils.bind(this,function(Ga){try{var eb=new Image;eb.onload=mxUtils.bind(this,function(){try{var z=function(){mxClient.IS_SF?window.setTimeout(function(){X.drawImage(eb,0,0);u(L,Ga)},0):(X.drawImage(eb,0,0),u(L,Ga))},L=document.createElement("canvas"),M=parseInt(Ga.getAttribute("width")),U=parseInt(Ga.getAttribute("height"));ma=null!=ma?ma:1;null!=H&&(ma=da?Math.min(1,Math.min(3*H/(4*U),H/M)):H/M);ma=this.getMaxCanvasScale(M,
-U,ma);M=Math.ceil(ma*M);U=Math.ceil(ma*U);L.setAttribute("width",M);L.setAttribute("height",U);var X=L.getContext("2d");null!=$a&&(X.beginPath(),X.rect(0,0,M,U),X.fillStyle=$a,X.fill());1!=ma&&X.scale(ma,ma);if(sa){var fa=Aa.view,na=fa.scale;fa.scale=1;var ua=btoa(unescape(encodeURIComponent(fa.createSvgGrid(fa.gridColor))));fa.scale=na;ua="data:image/svg+xml;base64,"+ua;var pa=Aa.gridSize*fa.gridSteps*ma,za=Aa.getGraphBounds(),Da=fa.translate.x*na,Ma=fa.translate.y*na,La=Da+(za.x-Da)/na-Ca,Ua=Ma+
-(za.y-Ma)/na-Ca,Ra=new Image;Ra.onload=function(){try{for(var Fa=-Math.round(pa-mxUtils.mod((Da-La)*ma,pa)),va=-Math.round(pa-mxUtils.mod((Ma-Ua)*ma,pa));Fa<M;Fa+=pa)for(var ya=va;ya<U;ya+=pa)X.drawImage(Ra,Fa/ma,ya/ma);z()}catch(Na){null!=R&&R(Na)}};Ra.onerror=function(Fa){null!=R&&R(Fa)};Ra.src=ua}else z()}catch(Fa){null!=R&&R(Fa)}});eb.onerror=function(z){null!=R&&R(z)};xa&&this.graph.addSvgShadow(Ga);this.graph.mathEnabled&&this.addMathCss(Ga);var bb=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&
-this.addFontCss(Ga,this.resolvedFontCss),eb.src=Editor.createSvgDataUri(mxUtils.getXml(Ga))}catch(z){null!=R&&R(z)}});this.embedExtFonts(mxUtils.bind(this,function(z){try{null!=z&&this.addFontCss(Ga,z),this.loadFonts(bb)}catch(L){null!=R&&R(L)}}))}catch(z){null!=R&&R(z)}}),O,ta)}catch(Ga){null!=R&&R(Ga)}};Editor.crcTable=[];for(var D=0;256>D;D++)for(var t=D,E=0;8>E;E++)t=1==(t&1)?3988292384^t>>>1:t>>>1,Editor.crcTable[D]=t;Editor.updateCRC=function(u,H,O,T){for(var R=0;R<T;R++)u=Editor.crcTable[(u^
-H.charCodeAt(O+R))&255]^u>>>8;return u};Editor.crc32=function(u){for(var H=-1,O=0;O<u.length;O++)H=H>>>8^Editor.crcTable[(H^u.charCodeAt(O))&255];return(H^-1)>>>0};Editor.writeGraphModelToPng=function(u,H,O,T,R){function da(ta,Aa){var Ca=ra;ra+=Aa;return ta.substring(Ca,ra)}function P(ta){ta=da(ta,4);return ta.charCodeAt(3)+(ta.charCodeAt(2)<<8)+(ta.charCodeAt(1)<<16)+(ta.charCodeAt(0)<<24)}function ma(ta){return String.fromCharCode(ta>>24&255,ta>>16&255,ta>>8&255,ta&255)}u=u.substring(u.indexOf(",")+
-1);u=window.atob?atob(u):Base64.decode(u,!0);var ra=0;if(da(u,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=R&&R();else if(da(u,4),"IHDR"!=da(u,4))null!=R&&R();else{da(u,17);R=u.substring(0,ra);do{var xa=P(u);if("IDAT"==da(u,4)){R=u.substring(0,ra-8);"pHYs"==H&&"dpi"==O?(O=Math.round(T/.0254),O=ma(O)+ma(O)+String.fromCharCode(1)):O=O+String.fromCharCode(0)+("zTXt"==H?String.fromCharCode(0):"")+T;T=4294967295;T=Editor.updateCRC(T,H,0,4);T=Editor.updateCRC(T,O,0,O.length);
-R+=ma(O.length)+H+O+ma(T^4294967295);R+=u.substring(ra-8,u.length);break}R+=u.substring(ra-8,ra-4+xa);da(u,xa);da(u,4)}while(xa);return"data:image/png;base64,"+(window.btoa?btoa(R):Base64.encode(R,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(u,H){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var f=ColorDialog.resetRecentColors;
-ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(u,H){var O=null;null!=u.editor.graph.getModel().getParent(H)?O=H.getId():null!=u.currentPage&&(O=u.currentPage.getId());return O});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",
-this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=u&&u.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(u){return!1};var q=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
-function(u){u=q.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var H=this.editorUi,O=H.editor.graph,T=this.createOption(mxResources.get("shadow"),function(){return O.shadowVisible},function(R){var da=new ChangePageSetup(H);da.ignoreColor=!0;da.ignoreImage=!0;da.shadowVisible=R;O.model.execute(da)},{install:function(R){this.listener=function(){R(O.shadowVisible)};H.addListener("shadowVisibleChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});
-Editor.enableShadowOption||(T.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(T,60));u.appendChild(T)}return u};var y=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(u){u=y.apply(this,arguments);var H=this.editorUi,O=H.editor.graph;if(O.isEnabled()){var T=H.getCurrentFile();if(null!=T&&T.isAutosaveOptional()){var R=this.createOption(mxResources.get("autosave"),function(){return H.editor.autosave},function(P){H.editor.setAutosave(P);
-H.editor.autosave&&T.isModified()&&T.fileChanged()},{install:function(P){this.listener=function(){P(H.editor.autosave)};H.editor.addListener("autosaveChanged",this.listener)},destroy:function(){H.editor.removeListener(this.listener)}});u.appendChild(R)}}if(this.isMathOptionVisible()&&O.isEnabled()&&"undefined"!==typeof MathJax){R=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return O.mathEnabled},function(P){H.actions.get("mathematicalTypesetting").funct()},{install:function(P){this.listener=
-function(){P(O.mathEnabled)};H.addListener("mathEnabledChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});R.style.paddingTop="5px";u.appendChild(R);var da=H.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");da.style.position="relative";da.style.marginLeft="6px";da.style.top="2px";R.appendChild(da)}return u};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=
-[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",
-type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",
-type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",
-type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},
-{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=[{name:"size",dispName:"Fold Size",
-type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"base",dispName:"Callout Width",
-type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",type:"enum",enumList:[{val:"left",
-dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];
-mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
+" ("+H+")");if("mxGraphModel"==u.nodeName){H=u.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=H&&""!=H)H!=this.graph.currentStyle&&(P=null!=this.graph.themes?this.graph.themes[H]:mxUtils.load(STYLE_PATH+"/"+H+".xml").getDocumentElement(),null!=P&&(T=new mxCodec(P.ownerDocument),T.decode(P,this.graph.getStylesheet())));else{var P=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement();if(null!=P){var T=new mxCodec(P.ownerDocument);
+T.decode(P,this.graph.getStylesheet())}}this.graph.currentStyle=H;this.graph.mathEnabled="1"==urlParams.math||"1"==u.getAttribute("math");H=u.getAttribute("backgroundImage");null!=H?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(H)):this.graph.setBackgroundImage(null);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==u.getAttribute("shadow"),!1);if(H=u.getAttribute("extFonts"))try{for(H=
+H.split("|").map(function(S){S=S.split("^");return{name:S[0],url:S[1]}}),P=0;P<H.length;P++)this.graph.addExtFont(H[P].name,H[P].url)}catch(S){console.log("ExtFonts format error: "+S.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 e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(u,H){u=null!=
+u?u:!0;var P=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&P.setAttribute("style",this.graph.currentStyle);var T=this.graph.getBackgroundImageObject(this.graph.backgroundImage,H);null!=T&&P.setAttribute("backgroundImage",JSON.stringify(T));P.setAttribute("math",this.graph.mathEnabled?"1":"0");P.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(T=this.graph.extFonts.map(function(S){return S.name+
+"^"+S.url}),P.setAttribute("extFonts",T.join("|")));return P};Editor.prototype.isDataSvg=function(u){try{var H=mxUtils.parseXml(u).documentElement.getAttribute("content");if(null!=H&&(null!=H&&"<"!=H.charAt(0)&&"%"!=H.charAt(0)&&(H=unescape(window.atob?atob(H):Base64.decode(cont,H))),null!=H&&"%"==H.charAt(0)&&(H=decodeURIComponent(H)),null!=H&&0<H.length)){var P=mxUtils.parseXml(H).documentElement;return"mxfile"==P.nodeName||"mxGraphModel"==P.nodeName}}catch(T){}return!1};Editor.prototype.extractGraphModel=
+function(u,H,P){return Editor.extractGraphModel.apply(this,arguments)};var k=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();k.apply(this,arguments)};var n=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){n.apply(this,
+arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(u,H){if("undefined"===typeof window.MathJax&&!mxClient.IS_IE&&!mxClient.IS_IE11){u=null!=u?u:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(S){try{MathJax.typesetClear([S]),MathJax.typeset([S]),Editor.onMathJaxDone()}catch(da){MathJax.typesetClear([S]),null!=da.retry?da.retry.then(function(){MathJax.typesetPromise([S]).then(Editor.onMathJaxDone)}):
+null!=window.console&&console.log("Error in MathJax: "+da.toString())}};window.MathJax=null!=H?H:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var S=0;S<Editor.mathJaxQueue.length;S++)Editor.doMathJaxRender(Editor.mathJaxQueue[S])}}};Editor.MathJaxRender=function(S){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(S):Editor.mathJaxQueue.push(S)};Editor.MathJaxClear=
+function(){Editor.mathJaxQueue=[]};Editor.onMathJaxDone=function(){};var P=Editor.prototype.init;Editor.prototype.init=function(){P.apply(this,arguments);var S=mxUtils.bind(this,function(da,R){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,S);this.graph.addListener(mxEvent.REFRESH,S)};H=document.getElementsByTagName("script");if(null!=H&&0<H.length){var T=document.createElement("script");
+T.setAttribute("type","text/javascript");T.setAttribute("src",u);H[0].parentNode.appendChild(T)}}};Editor.prototype.csvToArray=function(u){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(u))return null;var H=[];u.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,
+function(P,T,S,da){void 0!==T?H.push(T.replace(/\\'/g,"'")):void 0!==S?H.push(S.replace(/\\"/g,'"')):void 0!==da&&H.push(da);return""});/,\s*$/.test(u)&&H.push("");return H};Editor.prototype.isCorsEnabledForUrl=function(u){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||u.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(u)||
+"https://raw.githubusercontent.com/"===u.substring(0,34)||"https://fonts.googleapis.com/"===u.substring(0,29)||"https://fonts.gstatic.com/"===u.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var u=new mxUrlConverter;u.updateBaseUrl();var H=u.convert,P=this;u.convert=function(T){if(null!=T){var S="http://"==T.substring(0,7)||"https://"==T.substring(0,8);S&&!navigator.onLine?T=Editor.svgBrokenImage.src:!S||T.substring(0,u.baseUrl.length)==u.baseUrl||P.crossOriginImages&&P.isCorsEnabledForUrl(T)?
+"chrome-extension://"==T.substring(0,19)||mxClient.IS_CHROMEAPP||(T=H.apply(this,arguments)):T=PROXY_URL+"?url="+encodeURIComponent(T)}return T};return u};Editor.createSvgDataUri=function(u){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(u)))};Editor.prototype.convertImageToDataUri=function(u,H){try{var P=!0,T=window.setTimeout(mxUtils.bind(this,function(){P=!1;H(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(u))mxUtils.get(u,mxUtils.bind(this,function(da){window.clearTimeout(T);
+P&&H(Editor.createSvgDataUri(da.getText()))}),function(){window.clearTimeout(T);P&&H(Editor.svgBrokenImage.src)});else{var S=new Image;this.crossOriginImages&&(S.crossOrigin="anonymous");S.onload=function(){window.clearTimeout(T);if(P)try{var da=document.createElement("canvas"),R=da.getContext("2d");da.height=S.height;da.width=S.width;R.drawImage(S,0,0);H(da.toDataURL())}catch(ma){H(Editor.svgBrokenImage.src)}};S.onerror=function(){window.clearTimeout(T);P&&H(Editor.svgBrokenImage.src)};S.src=u}}catch(da){H(Editor.svgBrokenImage.src)}};
+Editor.prototype.convertImages=function(u,H,P,T){null==T&&(T=this.createImageUrlConverter());var S=0,da=P||{};P=mxUtils.bind(this,function(R,ma){R=u.getElementsByTagName(R);for(var ra=0;ra<R.length;ra++)mxUtils.bind(this,function(xa){try{if(null!=xa){var ta=T.convert(xa.getAttribute(ma));if(null!=ta&&"data:"!=ta.substring(0,5)){var Aa=da[ta];null==Aa?(S++,this.convertImageToDataUri(ta,function(Ca){null!=Ca&&(da[ta]=Ca,xa.setAttribute(ma,Ca));S--;0==S&&H(u)})):xa.setAttribute(ma,Aa)}else null!=ta&&
+xa.setAttribute(ma,ta)}}catch(Ca){}})(R[ra])});P("image","xlink:href");P("img","src");0==S&&H(u)};Editor.base64Encode=function(u){for(var H="",P=0,T=u.length,S,da,R;P<T;){S=u.charCodeAt(P++)&255;if(P==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(S>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((S&3)<<4);H+="==";break}da=u.charCodeAt(P++);if(P==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(S>>2);
+H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((S&3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2);H+="=";break}R=u.charCodeAt(P++);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(S>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((S&3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2|(R&192)>>6);
+H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R&63)}return H};Editor.prototype.loadUrl=function(u,H,P,T,S,da,R,ma){try{var ra=!R&&(T||/(\.png)($|\?)/i.test(u)||/(\.jpe?g)($|\?)/i.test(u)||/(\.gif)($|\?)/i.test(u)||/(\.pdf)($|\?)/i.test(u));S=null!=S?S:!0;var xa=mxUtils.bind(this,function(){mxUtils.get(u,mxUtils.bind(this,function(ta){if(200<=ta.getStatus()&&299>=ta.getStatus()){if(null!=H){var Aa=ta.getText();if(ra){if((9==document.documentMode||10==document.documentMode)&&
+"undefined"!==typeof window.mxUtilsBinaryToArray){ta=mxUtilsBinaryToArray(ta.request.responseBody).toArray();Aa=Array(ta.length);for(var Ca=0;Ca<ta.length;Ca++)Aa[Ca]=String.fromCharCode(ta[Ca]);Aa=Aa.join("")}da=null!=da?da:"data:image/png;base64,";Aa=da+Editor.base64Encode(Aa)}H(Aa)}}else null!=P&&(0==ta.getStatus()?P({message:mxResources.get("accessDenied")},ta):P({message:mxResources.get("error")+" "+ta.getStatus()},ta))}),function(ta){null!=P&&P({message:mxResources.get("error")+" "+ta.getStatus()})},
+ra,this.timeout,function(){S&&null!=P&&P({code:App.ERROR_TIMEOUT,retry:xa})},ma)});xa()}catch(ta){null!=P&&P(ta)}};Editor.prototype.absoluteCssFonts=function(u){var H=null;if(null!=u){var P=u.split("url(");if(0<P.length){H=[P[0]];u=window.location.pathname;var T=null!=u?u.lastIndexOf("/"):-1;0<=T&&(u=u.substring(0,T+1));T=document.getElementsByTagName("base");var S=null;null!=T&&0<T.length&&(S=T[0].getAttribute("href"));for(var da=1;da<P.length;da++)if(T=P[da].indexOf(")"),0<T){var R=Editor.trimCssUrl(P[da].substring(0,
+T));this.graph.isRelativeUrl(R)&&(R=null!=S?S+R:window.location.protocol+"//"+window.location.hostname+("/"==R.charAt(0)?"":u)+R);H.push('url("'+R+'"'+P[da].substring(T))}else H.push(P[da])}else H=[u]}return null!=H?H.join(""):null};Editor.prototype.mapFontUrl=function(u,H,P){/^https?:\/\//.test(H)&&!this.isCorsEnabledForUrl(H)&&(H=PROXY_URL+"?url="+encodeURIComponent(H));P(u,H)};Editor.prototype.embedCssFonts=function(u,H){var P=u.split("url("),T=0;null==this.cachedFonts&&(this.cachedFonts={});var S=
+mxUtils.bind(this,function(){if(0==T){for(var ra=[P[0]],xa=1;xa<P.length;xa++){var ta=P[xa].indexOf(")");ra.push('url("');ra.push(this.cachedFonts[Editor.trimCssUrl(P[xa].substring(0,ta))]);ra.push('"'+P[xa].substring(ta))}H(ra.join(""))}});if(0<P.length){for(u=1;u<P.length;u++){var da=P[u].indexOf(")"),R=null,ma=P[u].indexOf("format(",da);0<ma&&(R=Editor.trimCssUrl(P[u].substring(ma+7,P[u].indexOf(")",ma))));mxUtils.bind(this,function(ra){if(null==this.cachedFonts[ra]){this.cachedFonts[ra]=ra;T++;
+var xa="application/x-font-ttf";if("svg"==R||/(\.svg)($|\?)/i.test(ra))xa="image/svg+xml";else if("otf"==R||"embedded-opentype"==R||/(\.otf)($|\?)/i.test(ra))xa="application/x-font-opentype";else if("woff"==R||/(\.woff)($|\?)/i.test(ra))xa="application/font-woff";else if("woff2"==R||/(\.woff2)($|\?)/i.test(ra))xa="application/font-woff2";else if("eot"==R||/(\.eot)($|\?)/i.test(ra))xa="application/vnd.ms-fontobject";else if("sfnt"==R||/(\.sfnt)($|\?)/i.test(ra))xa="application/font-sfnt";this.mapFontUrl(xa,
+ra,mxUtils.bind(this,function(ta,Aa){this.loadUrl(Aa,mxUtils.bind(this,function(Ca){this.cachedFonts[ra]=Ca;T--;S()}),mxUtils.bind(this,function(Ca){T--;S()}),!0,null,"data:"+ta+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(P[u].substring(0,da)),R)}S()}else H(u)};Editor.prototype.loadFonts=function(u){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(H){this.resolvedFontCss=H;null!=u&&u()})):null!=u&&u()};Editor.prototype.createGoogleFontCache=
+function(){var u={},H;for(H in Graph.fontMapping)Graph.isCssFontUrl(H)&&(u[H]=Graph.fontMapping[H]);return u};Editor.prototype.embedExtFonts=function(u){var H=this.graph.getCustomFonts();if(0<H.length){var P=[],T=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var S=mxUtils.bind(this,function(){0==T&&this.embedCssFonts(P.join(""),u)}),da=0;da<H.length;da++)mxUtils.bind(this,function(R,ma){Graph.isCssFontUrl(ma)?null==this.cachedGoogleFonts[ma]?(T++,this.loadUrl(ma,
+mxUtils.bind(this,function(ra){this.cachedGoogleFonts[ma]=ra;P.push(ra+"\n");T--;S()}),mxUtils.bind(this,function(ra){T--;P.push("@import url("+ma+");\n");S()}))):P.push(this.cachedGoogleFonts[ma]+"\n"):P.push('@font-face {font-family: "'+R+'";src: url("'+ma+'")}\n')})(H[da].name,H[da].url);S()}else u()};Editor.prototype.addMathCss=function(u){u=u.getElementsByTagName("defs");if(null!=u&&0<u.length)for(var H=document.getElementsByTagName("style"),P=0;P<H.length;P++){var T=mxUtils.getTextContent(H[P]);
+0>T.indexOf("mxPageSelector")&&0<T.indexOf("MathJax")&&u[0].appendChild(H[P].cloneNode(!0))}};Editor.prototype.addFontCss=function(u,H){H=null!=H?H:this.absoluteCssFonts(this.fontCss);if(null!=H){var P=u.getElementsByTagName("defs"),T=u.ownerDocument;0==P.length?(P=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"defs"):T.createElement("defs"),null!=u.firstChild?u.insertBefore(P,u.firstChild):u.appendChild(P)):P=P[0];u=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"style"):
+T.createElement("style");u.setAttribute("type","text/css");mxUtils.setTextContent(u,H);P.appendChild(u)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(u,H,P){var T=mxClient.IS_FF?8192:16384;return Math.min(P,Math.min(T/u,T/H))};Editor.prototype.exportToCanvas=function(u,H,P,T,S,da,R,ma,ra,xa,ta,Aa,Ca,Ba,sa,Pa,Ta,Oa){try{da=null!=da?da:!0;R=null!=R?R:!0;Aa=null!=Aa?Aa:this.graph;Ca=null!=Ca?Ca:0;var Xa=
+ra?null:Aa.background;Xa==mxConstants.NONE&&(Xa=null);null==Xa&&(Xa=T);null==Xa&&0==ra&&(Xa=Pa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(Aa.getSvg(null,null,Ca,Ba,null,R,null,null,null,xa,null,Pa,Ta,Oa),mxUtils.bind(this,function(Ga){try{var eb=new Image;eb.onload=mxUtils.bind(this,function(){try{var z=function(){mxClient.IS_SF?window.setTimeout(function(){W.drawImage(eb,0,0);u(K,Ga)},0):(W.drawImage(eb,0,0),u(K,Ga))},K=document.createElement("canvas"),M=parseInt(Ga.getAttribute("width")),
+U=parseInt(Ga.getAttribute("height"));ma=null!=ma?ma:1;null!=H&&(ma=da?Math.min(1,Math.min(3*H/(4*U),H/M)):H/M);ma=this.getMaxCanvasScale(M,U,ma);M=Math.ceil(ma*M);U=Math.ceil(ma*U);K.setAttribute("width",M);K.setAttribute("height",U);var W=K.getContext("2d");null!=Xa&&(W.beginPath(),W.rect(0,0,M,U),W.fillStyle=Xa,W.fill());1!=ma&&W.scale(ma,ma);if(sa){var ha=Aa.view,na=ha.scale;ha.scale=1;var ua=btoa(unescape(encodeURIComponent(ha.createSvgGrid(ha.gridColor))));ha.scale=na;ua="data:image/svg+xml;base64,"+
+ua;var pa=Aa.gridSize*ha.gridSteps*ma,za=Aa.getGraphBounds(),Da=ha.translate.x*na,Ma=ha.translate.y*na,La=Da+(za.x-Da)/na-Ca,Ua=Ma+(za.y-Ma)/na-Ca,Sa=new Image;Sa.onload=function(){try{for(var Fa=-Math.round(pa-mxUtils.mod((Da-La)*ma,pa)),va=-Math.round(pa-mxUtils.mod((Ma-Ua)*ma,pa));Fa<M;Fa+=pa)for(var ya=va;ya<U;ya+=pa)W.drawImage(Sa,Fa/ma,ya/ma);z()}catch(Na){null!=S&&S(Na)}};Sa.onerror=function(Fa){null!=S&&S(Fa)};Sa.src=ua}else z()}catch(Fa){null!=S&&S(Fa)}});eb.onerror=function(z){null!=S&&
+S(z)};xa&&this.graph.addSvgShadow(Ga);this.graph.mathEnabled&&this.addMathCss(Ga);var bb=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(Ga,this.resolvedFontCss),eb.src=Editor.createSvgDataUri(mxUtils.getXml(Ga))}catch(z){null!=S&&S(z)}});this.embedExtFonts(mxUtils.bind(this,function(z){try{null!=z&&this.addFontCss(Ga,z),this.loadFonts(bb)}catch(K){null!=S&&S(K)}}))}catch(z){null!=S&&S(z)}}),P,ta)}catch(Ga){null!=S&&S(Ga)}};Editor.crcTable=[];for(var D=0;256>D;D++)for(var t=
+D,E=0;8>E;E++)t=1==(t&1)?3988292384^t>>>1:t>>>1,Editor.crcTable[D]=t;Editor.updateCRC=function(u,H,P,T){for(var S=0;S<T;S++)u=Editor.crcTable[(u^H.charCodeAt(P+S))&255]^u>>>8;return u};Editor.crc32=function(u){for(var H=-1,P=0;P<u.length;P++)H=H>>>8^Editor.crcTable[(H^u.charCodeAt(P))&255];return(H^-1)>>>0};Editor.writeGraphModelToPng=function(u,H,P,T,S){function da(ta,Aa){var Ca=ra;ra+=Aa;return ta.substring(Ca,ra)}function R(ta){ta=da(ta,4);return ta.charCodeAt(3)+(ta.charCodeAt(2)<<8)+(ta.charCodeAt(1)<<
+16)+(ta.charCodeAt(0)<<24)}function ma(ta){return String.fromCharCode(ta>>24&255,ta>>16&255,ta>>8&255,ta&255)}u=u.substring(u.indexOf(",")+1);u=window.atob?atob(u):Base64.decode(u,!0);var ra=0;if(da(u,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=S&&S();else if(da(u,4),"IHDR"!=da(u,4))null!=S&&S();else{da(u,17);S=u.substring(0,ra);do{var xa=R(u);if("IDAT"==da(u,4)){S=u.substring(0,ra-8);"pHYs"==H&&"dpi"==P?(P=Math.round(T/.0254),P=ma(P)+ma(P)+String.fromCharCode(1)):P=
+P+String.fromCharCode(0)+("zTXt"==H?String.fromCharCode(0):"")+T;T=4294967295;T=Editor.updateCRC(T,H,0,4);T=Editor.updateCRC(T,P,0,P.length);S+=ma(P.length)+H+P+ma(T^4294967295);S+=u.substring(ra-8,u.length);break}S+=u.substring(ra-8,ra-4+xa);da(u,xa);da(u,4)}while(xa);return"data:image/png;base64,"+(window.btoa?btoa(S):Base64.encode(S,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=
+function(u,H){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var f=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(u,H){var P=null;null!=u.editor.graph.getModel().getParent(H)?P=H.getId():null!=u.currentPage&&(P=u.currentPage.getId());return P});if(null!=window.StyleFormatPanel){var g=
+Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=u&&u.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=
+function(u){return!1};var q=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(u){u=q.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var H=this.editorUi,P=H.editor.graph,T=this.createOption(mxResources.get("shadow"),function(){return P.shadowVisible},function(S){var da=new ChangePageSetup(H);da.ignoreColor=!0;da.ignoreImage=!0;da.shadowVisible=S;P.model.execute(da)},{install:function(S){this.listener=function(){S(P.shadowVisible)};
+H.addListener("shadowVisibleChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});Editor.enableShadowOption||(T.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(T,60));u.appendChild(T)}return u};var y=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(u){u=y.apply(this,arguments);var H=this.editorUi,P=H.editor.graph;if(P.isEnabled()){var T=H.getCurrentFile();if(null!=T&&T.isAutosaveOptional()){var S=
+this.createOption(mxResources.get("autosave"),function(){return H.editor.autosave},function(R){H.editor.setAutosave(R);H.editor.autosave&&T.isModified()&&T.fileChanged()},{install:function(R){this.listener=function(){R(H.editor.autosave)};H.editor.addListener("autosaveChanged",this.listener)},destroy:function(){H.editor.removeListener(this.listener)}});u.appendChild(S)}}if(this.isMathOptionVisible()&&P.isEnabled()&&"undefined"!==typeof MathJax){S=this.createOption(mxResources.get("mathematicalTypesetting"),
+function(){return P.mathEnabled},function(R){H.actions.get("mathematicalTypesetting").funct()},{install:function(R){this.listener=function(){R(P.mathEnabled)};H.addListener("mathEnabledChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});S.style.paddingTop="5px";u.appendChild(S);var da=H.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");da.style.position="relative";da.style.marginLeft="6px";da.style.top="2px";S.appendChild(da)}return u};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",
+dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",
+type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",
+dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=
+[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=
+[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
+{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",
+type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",
+type:"color",defVal:null}];mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
mxCellRenderer.defaultShapes.tableRow.prototype.customProperties=mxCellRenderer.defaultShapes.swimlane.prototype.customProperties.concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",
type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",
type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",
@@ -3230,93 +3231,93 @@ defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName
stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#000000"},{fill:"#f0a30a",stroke:"#BD7000",font:"#000000"},{fill:"#e3c800",stroke:"#B09500",font:"#000000"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",
font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},
{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=
-function(u,H,O){if(null!=H){var T=function(da){if(null!=da)if(O)for(var P=0;P<da.length;P++)H[da[P].name]=da[P];else for(var ma in H){var ra=!1;for(P=0;P<da.length;P++)if(da[P].name==ma&&da[P].type==H[ma].type){ra=!0;break}ra||delete H[ma]}},R=this.editorUi.editor.graph.view.getState(u);null!=R&&null!=R.shape&&(R.shape.commonCustomPropAdded||(R.shape.commonCustomPropAdded=!0,R.shape.customProperties=R.shape.customProperties||[],R.cell.vertex?Array.prototype.push.apply(R.shape.customProperties,Editor.commonVertexProperties):
-Array.prototype.push.apply(R.shape.customProperties,Editor.commonEdgeProperties)),T(R.shape.customProperties));u=u.getAttribute("customProperties");if(null!=u)try{T(JSON.parse(u))}catch(da){}}};var F=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var u=this.editorUi.getSelectionState();"image"!=u.style.shape&&!u.containsLabel&&0<u.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));F.apply(this,arguments);if(Editor.enableCustomProperties){for(var H=
-{},O=u.vertices,T=u.edges,R=0;R<O.length;R++)this.findCommonProperties(O[R],H,0==R);for(R=0;R<T.length;R++)this.findCommonProperties(T[R],H,0==O.length&&0==R);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(H).length&&this.container.appendChild(this.addProperties(this.createPanel(),H,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
-!0;StyleFormatPanel.prototype.addProperties=function(u,H,O){function T(X,fa,na,ua){Aa.getModel().beginUpdate();try{var pa=[],za=[];if(null!=na.index){for(var Da=[],Ma=na.parentRow.nextSibling;Ma&&Ma.getAttribute("data-pName")==X;)Da.push(Ma.getAttribute("data-pValue")),Ma=Ma.nextSibling;na.index<Da.length?null!=ua?Da.splice(ua,1):Da[na.index]=fa:Da.push(fa);null!=na.size&&Da.length>na.size&&(Da=Da.slice(0,na.size));fa=Da.join(",");null!=na.countProperty&&(Aa.setCellStyles(na.countProperty,Da.length,
-Aa.getSelectionCells()),pa.push(na.countProperty),za.push(Da.length))}Aa.setCellStyles(X,fa,Aa.getSelectionCells());pa.push(X);za.push(fa);if(null!=na.dependentProps)for(X=0;X<na.dependentProps.length;X++){var La=na.dependentPropsDefVal[X],Ua=na.dependentPropsVals[X];if(Ua.length>fa)Ua=Ua.slice(0,fa);else for(var Ra=Ua.length;Ra<fa;Ra++)Ua.push(La);Ua=Ua.join(",");Aa.setCellStyles(na.dependentProps[X],Ua,Aa.getSelectionCells());pa.push(na.dependentProps[X]);za.push(Ua)}if("function"==typeof na.onChange)na.onChange(Aa,
-fa);ta.editorUi.fireEvent(new mxEventObject("styleChanged","keys",pa,"values",za,"cells",Aa.getSelectionCells()))}finally{Aa.getModel().endUpdate()}}function R(X,fa,na){var ua=mxUtils.getOffset(u,!0),pa=mxUtils.getOffset(X,!0);fa.style.position="absolute";fa.style.left=pa.x-ua.x+"px";fa.style.top=pa.y-ua.y+"px";fa.style.width=X.offsetWidth+"px";fa.style.height=X.offsetHeight-(na?4:0)+"px";fa.style.zIndex=5}function da(X,fa,na){var ua=document.createElement("div");ua.style.width="32px";ua.style.height=
-"4px";ua.style.margin="2px";ua.style.border="1px solid black";ua.style.background=fa&&"none"!=fa?fa:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(ta,function(pa){this.editorUi.pickColor(fa,function(za){ua.style.background="none"==za?"url('"+Dialog.prototype.noColorImage+"')":za;T(X,za,na)});mxEvent.consume(pa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(ua);return btn}function P(X,fa,na,ua,pa,za,Da){null!=fa&&(fa=fa.split(","),
-Ca.push({name:X,values:fa,type:na,defVal:ua,countProperty:pa,parentRow:za,isDeletable:!0,flipBkg:Da}));btn=mxUtils.button("+",mxUtils.bind(ta,function(Ma){for(var La=za,Ua=0;null!=La.nextSibling;)if(La.nextSibling.getAttribute("data-pName")==X)La=La.nextSibling,Ua++;else break;var Ra={type:na,parentRow:za,index:Ua,isDeletable:!0,defVal:ua,countProperty:pa};Ua=xa(X,"",Ra,0==Ua%2,Da);T(X,ua,Ra);La.parentNode.insertBefore(Ua,La.nextSibling);mxEvent.consume(Ma)}));btn.style.height="16px";btn.style.width=
-"25px";btn.className="geColorBtn";return btn}function ma(X,fa,na,ua,pa,za,Da){if(0<pa){var Ma=Array(pa);fa=null!=fa?fa.split(","):[];for(var La=0;La<pa;La++)Ma[La]=null!=fa[La]?fa[La]:null!=ua?ua:"";Ca.push({name:X,values:Ma,type:na,defVal:ua,parentRow:za,flipBkg:Da,size:pa})}return document.createElement("div")}function ra(X,fa,na){var ua=document.createElement("input");ua.type="checkbox";ua.checked="1"==fa;mxEvent.addListener(ua,"change",function(){T(X,ua.checked?"1":"0",na)});return ua}function xa(X,
-fa,na,ua,pa){var za=na.dispName,Da=na.type,Ma=document.createElement("tr");Ma.className="gePropRow"+(pa?"Dark":"")+(ua?"Alt":"")+" gePropNonHeaderRow";Ma.setAttribute("data-pName",X);Ma.setAttribute("data-pValue",fa);ua=!1;null!=na.index&&(Ma.setAttribute("data-index",na.index),za=(null!=za?za:"")+"["+na.index+"]",ua=!0);var La=document.createElement("td");La.className="gePropRowCell";za=mxResources.get(za,null,za);mxUtils.write(La,za);La.setAttribute("title",za);ua&&(La.style.textAlign="right");
-Ma.appendChild(La);La=document.createElement("td");La.className="gePropRowCell";if("color"==Da)La.appendChild(da(X,fa,na));else if("bool"==Da||"boolean"==Da)La.appendChild(ra(X,fa,na));else if("enum"==Da){var Ua=na.enumList;for(pa=0;pa<Ua.length;pa++)if(za=Ua[pa],za.val==fa){mxUtils.write(La,mxResources.get(za.dispName,null,za.dispName));break}mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){var Ra=document.createElement("select");R(La,Ra);for(var Fa=0;Fa<Ua.length;Fa++){var va=Ua[Fa],ya=
-document.createElement("option");ya.value=mxUtils.htmlEntities(va.val);mxUtils.write(ya,mxResources.get(va.dispName,null,va.dispName));Ra.appendChild(ya)}Ra.value=fa;u.appendChild(Ra);mxEvent.addListener(Ra,"change",function(){var Na=mxUtils.htmlEntities(Ra.value);T(X,Na,na)});Ra.focus();mxEvent.addListener(Ra,"blur",function(){u.removeChild(Ra)})}))}else"dynamicArr"==Da?La.appendChild(P(X,fa,na.subType,na.subDefVal,na.countProperty,Ma,pa)):"staticArr"==Da?La.appendChild(ma(X,fa,na.subType,na.subDefVal,
-na.size,Ma,pa)):"readOnly"==Da?(pa=document.createElement("input"),pa.setAttribute("readonly",""),pa.value=fa,pa.style.width="96px",pa.style.borderWidth="0px",La.appendChild(pa)):(La.innerHTML=mxUtils.htmlEntities(decodeURIComponent(fa)),mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){function Ra(){var va=Fa.value;va=0==va.length&&"string"!=Da?0:va;na.allowAuto&&(null!=va.trim&&"auto"==va.trim().toLowerCase()?(va="auto",Da="string"):(va=parseFloat(va),va=isNaN(va)?0:va));null!=na.min&&va<
-na.min?va=na.min:null!=na.max&&va>na.max&&(va=na.max);va=encodeURIComponent(("int"==Da?parseInt(va):va)+"");T(X,va,na)}var Fa=document.createElement("input");R(La,Fa,!0);Fa.value=decodeURIComponent(fa);Fa.className="gePropEditor";"int"!=Da&&"float"!=Da||na.allowAuto||(Fa.type="number",Fa.step="int"==Da?"1":"any",null!=na.min&&(Fa.min=parseFloat(na.min)),null!=na.max&&(Fa.max=parseFloat(na.max)));u.appendChild(Fa);mxEvent.addListener(Fa,"keypress",function(va){13==va.keyCode&&Ra()});Fa.focus();mxEvent.addListener(Fa,
-"blur",function(){Ra()})})));na.isDeletable&&(pa=mxUtils.button("-",mxUtils.bind(ta,function(Ra){T(X,"",na,na.index);mxEvent.consume(Ra)})),pa.style.height="16px",pa.style.width="25px",pa.style.float="right",pa.className="geColorBtn",La.appendChild(pa));Ma.appendChild(La);return Ma}var ta=this,Aa=this.editorUi.editor.graph,Ca=[];u.style.position="relative";u.style.padding="0";var Ba=document.createElement("table");Ba.className="geProperties";Ba.style.whiteSpace="nowrap";Ba.style.width="100%";var sa=
-document.createElement("tr");sa.className="gePropHeader";var Oa=document.createElement("th");Oa.className="gePropHeaderCell";var Ta=document.createElement("img");Ta.src=Sidebar.prototype.expandedImage;Ta.style.verticalAlign="middle";Oa.appendChild(Ta);mxUtils.write(Oa,mxResources.get("property"));sa.style.cursor="pointer";var Sa=function(){var X=Ba.querySelectorAll(".gePropNonHeaderRow");if(ta.editorUi.propertiesCollapsed){Ta.src=Sidebar.prototype.collapsedImage;var fa="none";for(var na=u.childNodes.length-
-1;0<=na;na--)try{var ua=u.childNodes[na],pa=ua.nodeName.toUpperCase();"INPUT"!=pa&&"SELECT"!=pa||u.removeChild(ua)}catch(za){}}else Ta.src=Sidebar.prototype.expandedImage,fa="";for(na=0;na<X.length;na++)X[na].style.display=fa};mxEvent.addListener(sa,"click",function(){ta.editorUi.propertiesCollapsed=!ta.editorUi.propertiesCollapsed;Sa()});sa.appendChild(Oa);Oa=document.createElement("th");Oa.className="gePropHeaderCell";Oa.innerHTML=mxResources.get("value");sa.appendChild(Oa);Ba.appendChild(sa);var $a=
-!1,Ga=!1;sa=null;1==O.vertices.length&&0==O.edges.length?sa=O.vertices[0].id:0==O.vertices.length&&1==O.edges.length&&(sa=O.edges[0].id);null!=sa&&Ba.appendChild(xa("id",mxUtils.htmlEntities(sa),{dispName:"ID",type:"readOnly"},!0,!1));for(var eb in H)if(sa=H[eb],"function"!=typeof sa.isVisible||sa.isVisible(O,this)){var bb=null!=O.style[eb]?mxUtils.htmlEntities(O.style[eb]+""):null!=sa.getDefaultValue?sa.getDefaultValue(O,this):sa.defVal;if("separator"==sa.type)Ga=!Ga;else{if("staticArr"==sa.type)sa.size=
-parseInt(O.style[sa.sizeProperty]||H[sa.sizeProperty].defVal)||0;else if(null!=sa.dependentProps){var z=sa.dependentProps,L=[],M=[];for(Oa=0;Oa<z.length;Oa++){var U=O.style[z[Oa]];M.push(H[z[Oa]].subDefVal);L.push(null!=U?U.split(","):[])}sa.dependentPropsDefVal=M;sa.dependentPropsVals=L}Ba.appendChild(xa(eb,bb,sa,$a,Ga));$a=!$a}}for(Oa=0;Oa<Ca.length;Oa++)for(sa=Ca[Oa],H=sa.parentRow,O=0;O<sa.values.length;O++)eb=xa(sa.name,sa.values[O],{type:sa.type,parentRow:sa.parentRow,isDeletable:sa.isDeletable,
-index:O,defVal:sa.defVal,countProperty:sa.countProperty,size:sa.size},0==O%2,sa.flipBkg),H.parentNode.insertBefore(eb,H.nextSibling),H=eb;u.appendChild(Ba);Sa();return u};StyleFormatPanel.prototype.addStyles=function(u){function H(sa){mxEvent.addListener(sa,"mouseenter",function(){sa.style.opacity="1"});mxEvent.addListener(sa,"mouseleave",function(){sa.style.opacity="0.5"})}var O=this.editorUi,T=O.editor.graph,R=document.createElement("div");R.style.whiteSpace="nowrap";R.style.paddingLeft="24px";
-R.style.paddingRight="20px";u.style.paddingLeft="16px";u.style.paddingBottom="6px";u.style.position="relative";u.appendChild(R);var da="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(" "),P=document.createElement("div");P.style.whiteSpace="nowrap";P.style.position="relative";P.style.textAlign="center";P.style.width="210px";for(var ma=[],ra=0;ra<this.defaultColorSchemes.length;ra++){var xa=
-document.createElement("div");xa.style.display="inline-block";xa.style.width="6px";xa.style.height="6px";xa.style.marginLeft="4px";xa.style.marginRight="3px";xa.style.borderRadius="3px";xa.style.cursor="pointer";xa.style.background="transparent";xa.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(sa){mxEvent.addListener(xa,"click",mxUtils.bind(this,function(){ta(sa)}))})(ra);ma.push(xa);P.appendChild(xa)}var ta=mxUtils.bind(this,function(sa){null!=ma[sa]&&(null!=this.format.currentScheme&&
-null!=ma[this.format.currentScheme]&&(ma[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=sa,Aa(this.defaultColorSchemes[this.format.currentScheme]),ma[this.format.currentScheme].style.background="#84d7ff")}),Aa=mxUtils.bind(this,function(sa){var Oa=mxUtils.bind(this,function(Sa){var $a=mxUtils.button("",mxUtils.bind(this,function(bb){T.getModel().beginUpdate();try{for(var z=O.getSelectionState().cells,L=0;L<z.length;L++){for(var M=T.getModel().getStyle(z[L]),U=
-0;U<da.length;U++)M=mxUtils.removeStylename(M,da[U]);var X=T.getModel().isVertex(z[L])?T.defaultVertexStyle:T.defaultEdgeStyle;null!=Sa?(mxEvent.isShiftDown(bb)||(M=""==Sa.fill?mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,Sa.fill||mxUtils.getValue(X,mxConstants.STYLE_FILLCOLOR,null)),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,Sa.gradient||mxUtils.getValue(X,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(bb)||mxClient.IS_MAC&&
-mxEvent.isMetaDown(bb)||!T.getModel().isVertex(z[L])||(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,Sa.font||mxUtils.getValue(X,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(bb)||(M=""==Sa.stroke?mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,Sa.stroke||mxUtils.getValue(X,mxConstants.STYLE_STROKECOLOR,null)))):(M=mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(X,mxConstants.STYLE_FILLCOLOR,"#ffffff")),M=mxUtils.setStyle(M,
-mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(X,mxConstants.STYLE_STROKECOLOR,"#000000")),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(X,mxConstants.STYLE_GRADIENTCOLOR,null)),T.getModel().isVertex(z[L])&&(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(X,mxConstants.STYLE_FONTCOLOR,null))));T.getModel().setStyle(z[L],M)}}finally{T.getModel().endUpdate()}}));$a.className="geStyleButton";$a.style.width="36px";$a.style.height=10>=this.defaultColorSchemes.length?
-"24px":"30px";$a.style.margin="0px 6px 6px 0px";if(null!=Sa){var Ga="1"==urlParams.sketch?"2px solid":"1px solid";null!=Sa.gradient?mxClient.IS_IE&&10>document.documentMode?$a.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+Sa.fill+"', EndColorStr='"+Sa.gradient+"', GradientType=0)":$a.style.backgroundImage="linear-gradient("+Sa.fill+" 0px,"+Sa.gradient+" 100%)":Sa.fill==mxConstants.NONE?$a.style.background="url('"+Dialog.prototype.noColorImage+"')":$a.style.backgroundColor=
-""==Sa.fill?mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):Sa.fill||mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");$a.style.border=Sa.stroke==mxConstants.NONE?Ga+" transparent":""==Sa.stroke?Ga+" "+mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):Ga+" "+(Sa.stroke||mxUtils.getValue(T.defaultVertexStyle,
-mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=Sa.title&&$a.setAttribute("title",Sa.title)}else{Ga=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var eb=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");$a.style.backgroundColor=Ga;$a.style.border="1px solid "+eb}$a.style.borderRadius="0";R.appendChild($a)});R.innerText="";for(var Ta=0;Ta<sa.length;Ta++)0<Ta&&0==mxUtils.mod(Ta,4)&&mxUtils.br(R),Oa(sa[Ta])});
+function(u,H,P){if(null!=H){var T=function(da){if(null!=da)if(P)for(var R=0;R<da.length;R++)H[da[R].name]=da[R];else for(var ma in H){var ra=!1;for(R=0;R<da.length;R++)if(da[R].name==ma&&da[R].type==H[ma].type){ra=!0;break}ra||delete H[ma]}},S=this.editorUi.editor.graph.view.getState(u);null!=S&&null!=S.shape&&(S.shape.commonCustomPropAdded||(S.shape.commonCustomPropAdded=!0,S.shape.customProperties=S.shape.customProperties||[],S.cell.vertex?Array.prototype.push.apply(S.shape.customProperties,Editor.commonVertexProperties):
+Array.prototype.push.apply(S.shape.customProperties,Editor.commonEdgeProperties)),T(S.shape.customProperties));u=u.getAttribute("customProperties");if(null!=u)try{T(JSON.parse(u))}catch(da){}}};var F=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var u=this.editorUi.getSelectionState();"image"!=u.style.shape&&!u.containsLabel&&0<u.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));F.apply(this,arguments);if(Editor.enableCustomProperties){for(var H=
+{},P=u.vertices,T=u.edges,S=0;S<P.length;S++)this.findCommonProperties(P[S],H,0==S);for(S=0;S<T.length;S++)this.findCommonProperties(T[S],H,0==P.length&&0==S);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(H).length&&this.container.appendChild(this.addProperties(this.createPanel(),H,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
+!0;StyleFormatPanel.prototype.addProperties=function(u,H,P){function T(W,ha,na,ua){Aa.getModel().beginUpdate();try{var pa=[],za=[];if(null!=na.index){for(var Da=[],Ma=na.parentRow.nextSibling;Ma&&Ma.getAttribute("data-pName")==W;)Da.push(Ma.getAttribute("data-pValue")),Ma=Ma.nextSibling;na.index<Da.length?null!=ua?Da.splice(ua,1):Da[na.index]=ha:Da.push(ha);null!=na.size&&Da.length>na.size&&(Da=Da.slice(0,na.size));ha=Da.join(",");null!=na.countProperty&&(Aa.setCellStyles(na.countProperty,Da.length,
+Aa.getSelectionCells()),pa.push(na.countProperty),za.push(Da.length))}Aa.setCellStyles(W,ha,Aa.getSelectionCells());pa.push(W);za.push(ha);if(null!=na.dependentProps)for(W=0;W<na.dependentProps.length;W++){var La=na.dependentPropsDefVal[W],Ua=na.dependentPropsVals[W];if(Ua.length>ha)Ua=Ua.slice(0,ha);else for(var Sa=Ua.length;Sa<ha;Sa++)Ua.push(La);Ua=Ua.join(",");Aa.setCellStyles(na.dependentProps[W],Ua,Aa.getSelectionCells());pa.push(na.dependentProps[W]);za.push(Ua)}if("function"==typeof na.onChange)na.onChange(Aa,
+ha);ta.editorUi.fireEvent(new mxEventObject("styleChanged","keys",pa,"values",za,"cells",Aa.getSelectionCells()))}finally{Aa.getModel().endUpdate()}}function S(W,ha,na){var ua=mxUtils.getOffset(u,!0),pa=mxUtils.getOffset(W,!0);ha.style.position="absolute";ha.style.left=pa.x-ua.x+"px";ha.style.top=pa.y-ua.y+"px";ha.style.width=W.offsetWidth+"px";ha.style.height=W.offsetHeight-(na?4:0)+"px";ha.style.zIndex=5}function da(W,ha,na){var ua=document.createElement("div");ua.style.width="32px";ua.style.height=
+"4px";ua.style.margin="2px";ua.style.border="1px solid black";ua.style.background=ha&&"none"!=ha?ha:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(ta,function(pa){this.editorUi.pickColor(ha,function(za){ua.style.background="none"==za?"url('"+Dialog.prototype.noColorImage+"')":za;T(W,za,na)});mxEvent.consume(pa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(ua);return btn}function R(W,ha,na,ua,pa,za,Da){null!=ha&&(ha=ha.split(","),
+Ca.push({name:W,values:ha,type:na,defVal:ua,countProperty:pa,parentRow:za,isDeletable:!0,flipBkg:Da}));btn=mxUtils.button("+",mxUtils.bind(ta,function(Ma){for(var La=za,Ua=0;null!=La.nextSibling;)if(La.nextSibling.getAttribute("data-pName")==W)La=La.nextSibling,Ua++;else break;var Sa={type:na,parentRow:za,index:Ua,isDeletable:!0,defVal:ua,countProperty:pa};Ua=xa(W,"",Sa,0==Ua%2,Da);T(W,ua,Sa);La.parentNode.insertBefore(Ua,La.nextSibling);mxEvent.consume(Ma)}));btn.style.height="16px";btn.style.width=
+"25px";btn.className="geColorBtn";return btn}function ma(W,ha,na,ua,pa,za,Da){if(0<pa){var Ma=Array(pa);ha=null!=ha?ha.split(","):[];for(var La=0;La<pa;La++)Ma[La]=null!=ha[La]?ha[La]:null!=ua?ua:"";Ca.push({name:W,values:Ma,type:na,defVal:ua,parentRow:za,flipBkg:Da,size:pa})}return document.createElement("div")}function ra(W,ha,na){var ua=document.createElement("input");ua.type="checkbox";ua.checked="1"==ha;mxEvent.addListener(ua,"change",function(){T(W,ua.checked?"1":"0",na)});return ua}function xa(W,
+ha,na,ua,pa){var za=na.dispName,Da=na.type,Ma=document.createElement("tr");Ma.className="gePropRow"+(pa?"Dark":"")+(ua?"Alt":"")+" gePropNonHeaderRow";Ma.setAttribute("data-pName",W);Ma.setAttribute("data-pValue",ha);ua=!1;null!=na.index&&(Ma.setAttribute("data-index",na.index),za=(null!=za?za:"")+"["+na.index+"]",ua=!0);var La=document.createElement("td");La.className="gePropRowCell";za=mxResources.get(za,null,za);mxUtils.write(La,za);La.setAttribute("title",za);ua&&(La.style.textAlign="right");
+Ma.appendChild(La);La=document.createElement("td");La.className="gePropRowCell";if("color"==Da)La.appendChild(da(W,ha,na));else if("bool"==Da||"boolean"==Da)La.appendChild(ra(W,ha,na));else if("enum"==Da){var Ua=na.enumList;for(pa=0;pa<Ua.length;pa++)if(za=Ua[pa],za.val==ha){mxUtils.write(La,mxResources.get(za.dispName,null,za.dispName));break}mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){var Sa=document.createElement("select");S(La,Sa);for(var Fa=0;Fa<Ua.length;Fa++){var va=Ua[Fa],ya=
+document.createElement("option");ya.value=mxUtils.htmlEntities(va.val);mxUtils.write(ya,mxResources.get(va.dispName,null,va.dispName));Sa.appendChild(ya)}Sa.value=ha;u.appendChild(Sa);mxEvent.addListener(Sa,"change",function(){var Na=mxUtils.htmlEntities(Sa.value);T(W,Na,na)});Sa.focus();mxEvent.addListener(Sa,"blur",function(){u.removeChild(Sa)})}))}else"dynamicArr"==Da?La.appendChild(R(W,ha,na.subType,na.subDefVal,na.countProperty,Ma,pa)):"staticArr"==Da?La.appendChild(ma(W,ha,na.subType,na.subDefVal,
+na.size,Ma,pa)):"readOnly"==Da?(pa=document.createElement("input"),pa.setAttribute("readonly",""),pa.value=ha,pa.style.width="96px",pa.style.borderWidth="0px",La.appendChild(pa)):(La.innerHTML=mxUtils.htmlEntities(decodeURIComponent(ha)),mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){function Sa(){var va=Fa.value;va=0==va.length&&"string"!=Da?0:va;na.allowAuto&&(null!=va.trim&&"auto"==va.trim().toLowerCase()?(va="auto",Da="string"):(va=parseFloat(va),va=isNaN(va)?0:va));null!=na.min&&va<
+na.min?va=na.min:null!=na.max&&va>na.max&&(va=na.max);va=encodeURIComponent(("int"==Da?parseInt(va):va)+"");T(W,va,na)}var Fa=document.createElement("input");S(La,Fa,!0);Fa.value=decodeURIComponent(ha);Fa.className="gePropEditor";"int"!=Da&&"float"!=Da||na.allowAuto||(Fa.type="number",Fa.step="int"==Da?"1":"any",null!=na.min&&(Fa.min=parseFloat(na.min)),null!=na.max&&(Fa.max=parseFloat(na.max)));u.appendChild(Fa);mxEvent.addListener(Fa,"keypress",function(va){13==va.keyCode&&Sa()});Fa.focus();mxEvent.addListener(Fa,
+"blur",function(){Sa()})})));na.isDeletable&&(pa=mxUtils.button("-",mxUtils.bind(ta,function(Sa){T(W,"",na,na.index);mxEvent.consume(Sa)})),pa.style.height="16px",pa.style.width="25px",pa.style.float="right",pa.className="geColorBtn",La.appendChild(pa));Ma.appendChild(La);return Ma}var ta=this,Aa=this.editorUi.editor.graph,Ca=[];u.style.position="relative";u.style.padding="0";var Ba=document.createElement("table");Ba.className="geProperties";Ba.style.whiteSpace="nowrap";Ba.style.width="100%";var sa=
+document.createElement("tr");sa.className="gePropHeader";var Pa=document.createElement("th");Pa.className="gePropHeaderCell";var Ta=document.createElement("img");Ta.src=Sidebar.prototype.expandedImage;Ta.style.verticalAlign="middle";Pa.appendChild(Ta);mxUtils.write(Pa,mxResources.get("property"));sa.style.cursor="pointer";var Oa=function(){var W=Ba.querySelectorAll(".gePropNonHeaderRow");if(ta.editorUi.propertiesCollapsed){Ta.src=Sidebar.prototype.collapsedImage;var ha="none";for(var na=u.childNodes.length-
+1;0<=na;na--)try{var ua=u.childNodes[na],pa=ua.nodeName.toUpperCase();"INPUT"!=pa&&"SELECT"!=pa||u.removeChild(ua)}catch(za){}}else Ta.src=Sidebar.prototype.expandedImage,ha="";for(na=0;na<W.length;na++)W[na].style.display=ha};mxEvent.addListener(sa,"click",function(){ta.editorUi.propertiesCollapsed=!ta.editorUi.propertiesCollapsed;Oa()});sa.appendChild(Pa);Pa=document.createElement("th");Pa.className="gePropHeaderCell";Pa.innerHTML=mxResources.get("value");sa.appendChild(Pa);Ba.appendChild(sa);var Xa=
+!1,Ga=!1;sa=null;1==P.vertices.length&&0==P.edges.length?sa=P.vertices[0].id:0==P.vertices.length&&1==P.edges.length&&(sa=P.edges[0].id);null!=sa&&Ba.appendChild(xa("id",mxUtils.htmlEntities(sa),{dispName:"ID",type:"readOnly"},!0,!1));for(var eb in H)if(sa=H[eb],"function"!=typeof sa.isVisible||sa.isVisible(P,this)){var bb=null!=P.style[eb]?mxUtils.htmlEntities(P.style[eb]+""):null!=sa.getDefaultValue?sa.getDefaultValue(P,this):sa.defVal;if("separator"==sa.type)Ga=!Ga;else{if("staticArr"==sa.type)sa.size=
+parseInt(P.style[sa.sizeProperty]||H[sa.sizeProperty].defVal)||0;else if(null!=sa.dependentProps){var z=sa.dependentProps,K=[],M=[];for(Pa=0;Pa<z.length;Pa++){var U=P.style[z[Pa]];M.push(H[z[Pa]].subDefVal);K.push(null!=U?U.split(","):[])}sa.dependentPropsDefVal=M;sa.dependentPropsVals=K}Ba.appendChild(xa(eb,bb,sa,Xa,Ga));Xa=!Xa}}for(Pa=0;Pa<Ca.length;Pa++)for(sa=Ca[Pa],H=sa.parentRow,P=0;P<sa.values.length;P++)eb=xa(sa.name,sa.values[P],{type:sa.type,parentRow:sa.parentRow,isDeletable:sa.isDeletable,
+index:P,defVal:sa.defVal,countProperty:sa.countProperty,size:sa.size},0==P%2,sa.flipBkg),H.parentNode.insertBefore(eb,H.nextSibling),H=eb;u.appendChild(Ba);Oa();return u};StyleFormatPanel.prototype.addStyles=function(u){function H(sa){mxEvent.addListener(sa,"mouseenter",function(){sa.style.opacity="1"});mxEvent.addListener(sa,"mouseleave",function(){sa.style.opacity="0.5"})}var P=this.editorUi,T=P.editor.graph,S=document.createElement("div");S.style.whiteSpace="nowrap";S.style.paddingLeft="24px";
+S.style.paddingRight="20px";u.style.paddingLeft="16px";u.style.paddingBottom="6px";u.style.position="relative";u.appendChild(S);var da="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(" "),R=document.createElement("div");R.style.whiteSpace="nowrap";R.style.position="relative";R.style.textAlign="center";R.style.width="210px";for(var ma=[],ra=0;ra<this.defaultColorSchemes.length;ra++){var xa=
+document.createElement("div");xa.style.display="inline-block";xa.style.width="6px";xa.style.height="6px";xa.style.marginLeft="4px";xa.style.marginRight="3px";xa.style.borderRadius="3px";xa.style.cursor="pointer";xa.style.background="transparent";xa.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(sa){mxEvent.addListener(xa,"click",mxUtils.bind(this,function(){ta(sa)}))})(ra);ma.push(xa);R.appendChild(xa)}var ta=mxUtils.bind(this,function(sa){null!=ma[sa]&&(null!=this.format.currentScheme&&
+null!=ma[this.format.currentScheme]&&(ma[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=sa,Aa(this.defaultColorSchemes[this.format.currentScheme]),ma[this.format.currentScheme].style.background="#84d7ff")}),Aa=mxUtils.bind(this,function(sa){var Pa=mxUtils.bind(this,function(Oa){var Xa=mxUtils.button("",mxUtils.bind(this,function(bb){T.getModel().beginUpdate();try{for(var z=P.getSelectionState().cells,K=0;K<z.length;K++){for(var M=T.getModel().getStyle(z[K]),U=
+0;U<da.length;U++)M=mxUtils.removeStylename(M,da[U]);var W=T.getModel().isVertex(z[K])?T.defaultVertexStyle:T.defaultEdgeStyle;null!=Oa?(mxEvent.isShiftDown(bb)||(M=""==Oa.fill?mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,Oa.fill||mxUtils.getValue(W,mxConstants.STYLE_FILLCOLOR,null)),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,Oa.gradient||mxUtils.getValue(W,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(bb)||mxClient.IS_MAC&&
+mxEvent.isMetaDown(bb)||!T.getModel().isVertex(z[K])||(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,Oa.font||mxUtils.getValue(W,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(bb)||(M=""==Oa.stroke?mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,Oa.stroke||mxUtils.getValue(W,mxConstants.STYLE_STROKECOLOR,null)))):(M=mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(W,mxConstants.STYLE_FILLCOLOR,"#ffffff")),M=mxUtils.setStyle(M,
+mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(W,mxConstants.STYLE_STROKECOLOR,"#000000")),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(W,mxConstants.STYLE_GRADIENTCOLOR,null)),T.getModel().isVertex(z[K])&&(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(W,mxConstants.STYLE_FONTCOLOR,null))));T.getModel().setStyle(z[K],M)}}finally{T.getModel().endUpdate()}}));Xa.className="geStyleButton";Xa.style.width="36px";Xa.style.height=10>=this.defaultColorSchemes.length?
+"24px":"30px";Xa.style.margin="0px 6px 6px 0px";if(null!=Oa){var Ga="1"==urlParams.sketch?"2px solid":"1px solid";null!=Oa.gradient?mxClient.IS_IE&&10>document.documentMode?Xa.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+Oa.fill+"', EndColorStr='"+Oa.gradient+"', GradientType=0)":Xa.style.backgroundImage="linear-gradient("+Oa.fill+" 0px,"+Oa.gradient+" 100%)":Oa.fill==mxConstants.NONE?Xa.style.background="url('"+Dialog.prototype.noColorImage+"')":Xa.style.backgroundColor=
+""==Oa.fill?mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):Oa.fill||mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");Xa.style.border=Oa.stroke==mxConstants.NONE?Ga+" transparent":""==Oa.stroke?Ga+" "+mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):Ga+" "+(Oa.stroke||mxUtils.getValue(T.defaultVertexStyle,
+mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=Oa.title&&Xa.setAttribute("title",Oa.title)}else{Ga=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var eb=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");Xa.style.backgroundColor=Ga;Xa.style.border="1px solid "+eb}Xa.style.borderRadius="0";S.appendChild(Xa)});S.innerText="";for(var Ta=0;Ta<sa.length;Ta++)0<Ta&&0==mxUtils.mod(Ta,4)&&mxUtils.br(S),Pa(sa[Ta])});
null==this.format.currentScheme?ta(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):ta(this.format.currentScheme);ra=10>=this.defaultColorSchemes.length?28:8;var Ca=document.createElement("div");Ca.style.cssText="position:absolute;left:10px;top:8px;bottom:"+ra+"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(Ca,"click",mxUtils.bind(this,function(){ta(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var Ba=document.createElement("div");Ba.style.cssText="position:absolute;left:202px;top:8px;bottom:"+ra+"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&&(u.appendChild(Ca),u.appendChild(Ba));mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){ta(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));H(Ca);H(Ba);Aa(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&u.appendChild(P);return u};StyleFormatPanel.prototype.addEditOps=function(u){var H=this.editorUi.getSelectionState(),O=this.editorUi.editor.graph,T=null;1==H.cells.length&&(T=mxUtils.button(mxResources.get("editStyle"),
-mxUtils.bind(this,function(R){this.editorUi.actions.get("editStyle").funct()})),T.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),T.style.width="210px",T.style.marginBottom="2px",u.appendChild(T));O=1==H.cells.length?O.view.getState(H.cells[0]):null;null!=O&&null!=O.shape&&null!=O.shape.stencil?(H=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(R){this.editorUi.actions.get("editShape").funct()})),H.setAttribute("title",
-mxResources.get("editShape")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),u.appendChild(H)):H.image&&0<H.cells.length&&(H=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(R){this.editorUi.actions.get("image").funct()})),H.setAttribute("title",mxResources.get("editImage")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),
+1<this.defaultColorSchemes.length&&(u.appendChild(Ca),u.appendChild(Ba));mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){ta(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));H(Ca);H(Ba);Aa(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&u.appendChild(R);return u};StyleFormatPanel.prototype.addEditOps=function(u){var H=this.editorUi.getSelectionState(),P=this.editorUi.editor.graph,T=null;1==H.cells.length&&(T=mxUtils.button(mxResources.get("editStyle"),
+mxUtils.bind(this,function(S){this.editorUi.actions.get("editStyle").funct()})),T.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),T.style.width="210px",T.style.marginBottom="2px",u.appendChild(T));P=1==H.cells.length?P.view.getState(H.cells[0]):null;null!=P&&null!=P.shape&&null!=P.shape.stencil?(H=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(S){this.editorUi.actions.get("editShape").funct()})),H.setAttribute("title",
+mxResources.get("editShape")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),u.appendChild(H)):H.image&&0<H.cells.length&&(H=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(S){this.editorUi.actions.get("image").funct()})),H.setAttribute("title",mxResources.get("editImage")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),
u.appendChild(H));return u}}Graph.fontMapping={"https://fonts.googleapis.com/css?family=Architects+Daughter":'@font-face { font-family: "Architects Daughter"; src: url('+STYLE_PATH+'/fonts/ArchitectsDaughter-Regular.ttf) format("truetype"); }'};Graph.customFontElements={};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(u){return u.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(u){return Graph.isGoogleFontUrl(u)};Graph.createFontElement=function(u,
-H){var O=Graph.fontMapping[H];null==O&&Graph.isCssFontUrl(H)?(u=document.createElement("link"),u.setAttribute("rel","stylesheet"),u.setAttribute("type","text/css"),u.setAttribute("charset","UTF-8"),u.setAttribute("href",H)):(null==O&&(O='@font-face {\nfont-family: "'+u+'";\nsrc: url("'+H+'");\n}'),u=document.createElement("style"),mxUtils.write(u,O));return u};Graph.addFont=function(u,H,O){if(null!=u&&0<u.length&&null!=H&&0<H.length){var T=u.toLowerCase();if("helvetica"!=T&&"arial"!=u&&"sans-serif"!=
-T){var R=Graph.customFontElements[T];null!=R&&R.url!=H&&(R.elt.parentNode.removeChild(R.elt),R=null);null==R?(R=H,"http:"==H.substring(0,5)&&(R=PROXY_URL+"?url="+encodeURIComponent(H)),R={name:u,url:H,elt:Graph.createFontElement(u,R)},Graph.customFontElements[T]=R,Graph.recentCustomFonts[T]=R,H=document.getElementsByTagName("head")[0],null!=O&&("link"==R.elt.nodeName.toLowerCase()?(R.elt.onload=O,R.elt.onerror=O):O()),null!=H&&H.appendChild(R.elt)):null!=O&&O()}else null!=O&&O()}else null!=O&&O();
-return u};Graph.getFontUrl=function(u,H){u=Graph.customFontElements[u.toLowerCase()];null!=u&&(H=u.url);return H};Graph.processFontAttributes=function(u){u=u.getElementsByTagName("*");for(var H=0;H<u.length;H++){var O=u[H].getAttribute("data-font-src");if(null!=O){var T="FONT"==u[H].nodeName?u[H].getAttribute("face"):u[H].style.fontFamily;null!=T&&Graph.addFont(T,O)}}};Graph.processFontStyle=function(u){if(null!=u){var H=mxUtils.getValue(u,"fontSource",null);if(null!=H){var O=mxUtils.getValue(u,mxConstants.STYLE_FONTFAMILY,
-null);null!=O&&Graph.addFont(O,decodeURIComponent(H))}}return u};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=
-urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var I=Graph.prototype.init;Graph.prototype.init=function(){function u(R){H=R}I.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var H=null;mxEvent.addListener(this.container,"mouseenter",u);mxEvent.addListener(this.container,"mousemove",u);mxEvent.addListener(this.container,"mouseleave",function(R){H=null});this.isMouseInsertPoint=function(){return null!=H};var O=this.getInsertPoint;
-this.getInsertPoint=function(){return null!=H?this.getPointForEvent(H):O.apply(this,arguments)};var T=this.layoutManager.getLayout;this.layoutManager.getLayout=function(R){var da=this.graph.getCellStyle(R);if(null!=da&&"rack"==da.childLayout){var P=new mxStackLayout(this.graph,!1);P.gridSize=null!=da.rackUnitSize?parseFloat(da.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;P.marginLeft=da.marginLeft||0;P.marginRight=da.marginRight||0;P.marginTop=da.marginTop||0;P.marginBottom=
-da.marginBottom||0;P.allowGaps=da.allowGaps||0;P.horizontal="1"==mxUtils.getValue(da,"horizontalRack","0");P.resizeParent=!1;P.fill=!0;return P}return T.apply(this,arguments)};this.updateGlobalUrlVariables()};var G=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(u,H){return Graph.processFontStyle(G.apply(this,arguments))};var aa=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(u,H,O,T,R,da,P,ma,ra,xa,ta){aa.apply(this,arguments);
-Graph.processFontAttributes(ta)};var ca=mxText.prototype.redraw;mxText.prototype.redraw=function(){ca.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(u,H,O){function T(){for(var sa=P.getSelectionCells(),Oa=[],Ta=0;Ta<sa.length;Ta++)P.isCellVisible(sa[Ta])&&Oa.push(sa[Ta]);P.setSelectionCells(Oa)}function R(sa){P.setHiddenTags(sa?[]:ma.slice());T();P.refresh()}function da(sa,Oa){xa.innerText="";if(0<
-sa.length){var Ta=document.createElement("table");Ta.setAttribute("cellpadding","2");Ta.style.boxSizing="border-box";Ta.style.tableLayout="fixed";Ta.style.width="100%";var Sa=document.createElement("tbody");if(null!=sa&&0<sa.length)for(var $a=0;$a<sa.length;$a++)(function(Ga){var eb=0>mxUtils.indexOf(P.hiddenTags,Ga),bb=document.createElement("tr"),z=document.createElement("td");z.style.align="center";z.style.width="16px";var L=document.createElement("img");L.setAttribute("src",eb?Editor.visibleImage:
-Editor.hiddenImage);L.setAttribute("title",mxResources.get(eb?"hideIt":"show",[Ga]));mxUtils.setOpacity(L,eb?75:25);L.style.verticalAlign="middle";L.style.cursor="pointer";L.style.width="16px";if(H||Editor.isDarkMode())L.style.filter="invert(100%)";z.appendChild(L);mxEvent.addListener(L,"click",function(U){mxEvent.isShiftDown(U)?R(0<=mxUtils.indexOf(P.hiddenTags,Ga)):(P.toggleHiddenTag(Ga),T(),P.refresh());mxEvent.consume(U)});bb.appendChild(z);z=document.createElement("td");z.style.overflow="hidden";
-z.style.whiteSpace="nowrap";z.style.textOverflow="ellipsis";z.style.verticalAlign="middle";z.style.cursor="pointer";z.setAttribute("title",Ga);a=document.createElement("a");mxUtils.write(a,Ga);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,eb?100:40);z.appendChild(a);mxEvent.addListener(z,"click",function(U){if(mxEvent.isShiftDown(U)){R(!0);var X=P.getCellsForTags([Ga],null,null,!0);P.isEnabled()?P.setSelectionCells(X):P.highlightCells(X)}else if(eb&&0<P.hiddenTags.length)R(!0);
-else{X=ma.slice();var fa=mxUtils.indexOf(X,Ga);X.splice(fa,1);P.setHiddenTags(X);T();P.refresh()}mxEvent.consume(U)});bb.appendChild(z);if(P.isEnabled()){z=document.createElement("td");z.style.verticalAlign="middle";z.style.textAlign="center";z.style.width="18px";if(null==Oa){z.style.align="center";z.style.width="16px";L=document.createElement("img");L.setAttribute("src",Editor.crossImage);L.setAttribute("title",mxResources.get("removeIt",[Ga]));mxUtils.setOpacity(L,eb?75:25);L.style.verticalAlign=
-"middle";L.style.cursor="pointer";L.style.width="16px";if(H||Editor.isDarkMode())L.style.filter="invert(100%)";mxEvent.addListener(L,"click",function(U){var X=mxUtils.indexOf(ma,Ga);0<=X&&ma.splice(X,1);P.removeTagsForCells(P.model.getDescendants(P.model.getRoot()),[Ga]);P.refresh();mxEvent.consume(U)});z.appendChild(L)}else{var M=document.createElement("input");M.setAttribute("type","checkbox");M.style.margin="0px";M.defaultChecked=null!=Oa&&0<=mxUtils.indexOf(Oa,Ga);M.checked=M.defaultChecked;M.style.background=
-"transparent";M.setAttribute("title",mxResources.get(M.defaultChecked?"removeIt":"add",[Ga]));mxEvent.addListener(M,"change",function(U){M.checked?P.addTagsForCells(P.getSelectionCells(),[Ga]):P.removeTagsForCells(P.getSelectionCells(),[Ga]);mxEvent.consume(U)});z.appendChild(M)}bb.appendChild(z)}Sa.appendChild(bb)})(sa[$a]);Ta.appendChild(Sa);xa.appendChild(Ta)}}var P=this,ma=P.hiddenTags.slice(),ra=document.createElement("div");ra.style.userSelect="none";ra.style.overflow="hidden";ra.style.padding=
-"10px";ra.style.height="100%";var xa=document.createElement("div");xa.style.boxSizing="border-box";xa.style.borderRadius="4px";xa.style.userSelect="none";xa.style.overflow="auto";xa.style.position="absolute";xa.style.left="10px";xa.style.right="10px";xa.style.top="10px";xa.style.border=P.isEnabled()?"1px solid #808080":"none";xa.style.bottom=P.isEnabled()?"48px":"10px";ra.appendChild(xa);var ta=mxUtils.button(mxResources.get("reset"),function(sa){P.setHiddenTags([]);mxEvent.isShiftDown(sa)||(ma=P.hiddenTags.slice());
-T();P.refresh()});ta.setAttribute("title",mxResources.get("reset"));ta.className="geBtn";ta.style.margin="0 4px 0 0";var Aa=mxUtils.button(mxResources.get("add"),function(){null!=O&&O(ma,function(sa){ma=sa;Ca()})});Aa.setAttribute("title",mxResources.get("add"));Aa.className="geBtn";Aa.style.margin="0";P.addListener(mxEvent.ROOT,function(){ma=P.hiddenTags.slice()});var Ca=mxUtils.bind(this,function(sa,Oa){if(u()){sa=P.getAllTags();for(Oa=0;Oa<sa.length;Oa++)0>mxUtils.indexOf(ma,sa[Oa])&&ma.push(sa[Oa]);
-ma.sort();P.isSelectionEmpty()?da(ma):da(ma,P.getCommonTagsForCells(P.getSelectionCells()))}});P.selectionModel.addListener(mxEvent.CHANGE,Ca);P.model.addListener(mxEvent.CHANGE,Ca);P.addListener(mxEvent.REFRESH,Ca);var Ba=document.createElement("div");Ba.style.boxSizing="border-box";Ba.style.whiteSpace="nowrap";Ba.style.position="absolute";Ba.style.overflow="hidden";Ba.style.bottom="0px";Ba.style.height="42px";Ba.style.right="10px";Ba.style.left="10px";P.isEnabled()&&(Ba.appendChild(ta),Ba.appendChild(Aa),
-ra.appendChild(Ba));return{div:ra,refresh:Ca}};Graph.prototype.getCustomFonts=function(){var u=this.extFonts;u=null!=u?u.slice():[];for(var H in Graph.customFontElements){var O=Graph.customFontElements[H];u.push({name:O.name,url:O.url})}return u};Graph.prototype.setFont=function(u,H){Graph.addFont(u,H);document.execCommand("fontname",!1,u);if(null!=H){var O=this.cellEditor.textarea.getElementsByTagName("font");H=Graph.getFontUrl(u,H);for(var T=0;T<O.length;T++)O[T].getAttribute("face")==u&&O[T].getAttribute("data-font-src")!=
-H&&O[T].setAttribute("data-font-src",H)}};var ba=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return ba.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 u=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=u)for(var H in u)this.globalVars[H]=u[H]}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 Z=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(u){var H=Z.apply(this,arguments);null==H&&null!=this.globalVars&&(H=this.globalVars[u]);return H};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var u=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(u.ownerDocument)).decode(u)}return this.defaultStylesheet};
-Graph.prototype.isViewer=function(){return urlParams.viewer};var qa=Graph.prototype.getSvg;Graph.prototype.getSvg=function(u,H,O,T,R,da,P,ma,ra,xa,ta,Aa,Ca,Ba){var sa=null,Oa=null,Ta=null;Aa||null==this.themes||"darkTheme"!=this.defaultThemeName||(sa=this.stylesheet,Oa=this.shapeForegroundColor,Ta=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 Sa=qa.apply(this,arguments),$a=this.getCustomFonts();if(ta&&0<$a.length){var Ga=Sa.ownerDocument,eb=null!=Ga.createElementNS?Ga.createElementNS(mxConstants.NS_SVG,"style"):Ga.createElement("style");null!=Ga.setAttributeNS?eb.setAttributeNS("type","text/css"):eb.setAttribute("type","text/css");for(var bb="",z="",L=0;L<$a.length;L++){var M=$a[L].name,U=$a[L].url;Graph.isCssFontUrl(U)?bb+="@import url("+U+");\n":z+='@font-face {\nfont-family: "'+
-M+'";\nsrc: url("'+U+'");\n}\n'}eb.appendChild(Ga.createTextNode(bb+z));Sa.getElementsByTagName("defs")[0].appendChild(eb)}this.mathEnabled&&(document.body.appendChild(Sa),Editor.MathJaxRender(Sa),Sa.parentNode.removeChild(Sa));null!=sa&&(this.shapeBackgroundColor=Ta,this.shapeForegroundColor=Oa,this.stylesheet=sa,this.refresh());return Sa};var N=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(u){N.apply(this,arguments);null!=u.secondLabel&&(u.secondLabel.destroy(),u.secondLabel=
-null)};mxCellRenderer.prototype.getShapesForState=function(u){return[u.shape,u.text,u.secondLabel,u.control]};var Y=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){Y.apply(this,arguments);this.enumerationState=0};var ea=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(u){null!=u.shape&&this.redrawEnumerationState(u);return ea.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(u){u=decodeURIComponent(mxUtils.getValue(u.style,
+H){var P=Graph.fontMapping[H];null==P&&Graph.isCssFontUrl(H)?(u=document.createElement("link"),u.setAttribute("rel","stylesheet"),u.setAttribute("type","text/css"),u.setAttribute("charset","UTF-8"),u.setAttribute("href",H)):(null==P&&(P='@font-face {\nfont-family: "'+u+'";\nsrc: url("'+H+'");\n}'),u=document.createElement("style"),mxUtils.write(u,P));return u};Graph.addFont=function(u,H,P){if(null!=u&&0<u.length&&null!=H&&0<H.length){var T=u.toLowerCase();if("helvetica"!=T&&"arial"!=u&&"sans-serif"!=
+T){var S=Graph.customFontElements[T];null!=S&&S.url!=H&&(S.elt.parentNode.removeChild(S.elt),S=null);null==S?(S=H,"http:"==H.substring(0,5)&&(S=PROXY_URL+"?url="+encodeURIComponent(H)),S={name:u,url:H,elt:Graph.createFontElement(u,S)},Graph.customFontElements[T]=S,Graph.recentCustomFonts[T]=S,H=document.getElementsByTagName("head")[0],null!=P&&("link"==S.elt.nodeName.toLowerCase()?(S.elt.onload=P,S.elt.onerror=P):P()),null!=H&&H.appendChild(S.elt)):null!=P&&P()}else null!=P&&P()}else null!=P&&P();
+return u};Graph.getFontUrl=function(u,H){u=Graph.customFontElements[u.toLowerCase()];null!=u&&(H=u.url);return H};Graph.processFontAttributes=function(u){u=u.getElementsByTagName("*");for(var H=0;H<u.length;H++){var P=u[H].getAttribute("data-font-src");if(null!=P){var T="FONT"==u[H].nodeName?u[H].getAttribute("face"):u[H].style.fontFamily;null!=T&&Graph.addFont(T,P)}}};Graph.processFontStyle=function(u){if(null!=u){var H=mxUtils.getValue(u,"fontSource",null);if(null!=H){var P=mxUtils.getValue(u,mxConstants.STYLE_FONTFAMILY,
+null);null!=P&&Graph.addFont(P,decodeURIComponent(H))}}return u};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=
+urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var I=Graph.prototype.init;Graph.prototype.init=function(){function u(S){H=S}I.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var H=null;mxEvent.addListener(this.container,"mouseenter",u);mxEvent.addListener(this.container,"mousemove",u);mxEvent.addListener(this.container,"mouseleave",function(S){H=null});this.isMouseInsertPoint=function(){return null!=H};var P=this.getInsertPoint;
+this.getInsertPoint=function(){return null!=H?this.getPointForEvent(H):P.apply(this,arguments)};var T=this.layoutManager.getLayout;this.layoutManager.getLayout=function(S){var da=this.graph.getCellStyle(S);if(null!=da&&"rack"==da.childLayout){var R=new mxStackLayout(this.graph,!1);R.gridSize=null!=da.rackUnitSize?parseFloat(da.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;R.marginLeft=da.marginLeft||0;R.marginRight=da.marginRight||0;R.marginTop=da.marginTop||0;R.marginBottom=
+da.marginBottom||0;R.allowGaps=da.allowGaps||0;R.horizontal="1"==mxUtils.getValue(da,"horizontalRack","0");R.resizeParent=!1;R.fill=!0;return R}return T.apply(this,arguments)};this.updateGlobalUrlVariables()};var G=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(u,H){return Graph.processFontStyle(G.apply(this,arguments))};var Z=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(u,H,P,T,S,da,R,ma,ra,xa,ta){Z.apply(this,arguments);
+Graph.processFontAttributes(ta)};var ca=mxText.prototype.redraw;mxText.prototype.redraw=function(){ca.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(u,H,P){function T(){for(var sa=R.getSelectionCells(),Pa=[],Ta=0;Ta<sa.length;Ta++)R.isCellVisible(sa[Ta])&&Pa.push(sa[Ta]);R.setSelectionCells(Pa)}function S(sa){R.setHiddenTags(sa?[]:ma.slice());T();R.refresh()}function da(sa,Pa){xa.innerText="";if(0<
+sa.length){var Ta=document.createElement("table");Ta.setAttribute("cellpadding","2");Ta.style.boxSizing="border-box";Ta.style.tableLayout="fixed";Ta.style.width="100%";var Oa=document.createElement("tbody");if(null!=sa&&0<sa.length)for(var Xa=0;Xa<sa.length;Xa++)(function(Ga){var eb=0>mxUtils.indexOf(R.hiddenTags,Ga),bb=document.createElement("tr"),z=document.createElement("td");z.style.align="center";z.style.width="16px";var K=document.createElement("img");K.setAttribute("src",eb?Editor.visibleImage:
+Editor.hiddenImage);K.setAttribute("title",mxResources.get(eb?"hideIt":"show",[Ga]));mxUtils.setOpacity(K,eb?75:25);K.style.verticalAlign="middle";K.style.cursor="pointer";K.style.width="16px";if(H||Editor.isDarkMode())K.style.filter="invert(100%)";z.appendChild(K);mxEvent.addListener(K,"click",function(U){mxEvent.isShiftDown(U)?S(0<=mxUtils.indexOf(R.hiddenTags,Ga)):(R.toggleHiddenTag(Ga),T(),R.refresh());mxEvent.consume(U)});bb.appendChild(z);z=document.createElement("td");z.style.overflow="hidden";
+z.style.whiteSpace="nowrap";z.style.textOverflow="ellipsis";z.style.verticalAlign="middle";z.style.cursor="pointer";z.setAttribute("title",Ga);a=document.createElement("a");mxUtils.write(a,Ga);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,eb?100:40);z.appendChild(a);mxEvent.addListener(z,"click",function(U){if(mxEvent.isShiftDown(U)){S(!0);var W=R.getCellsForTags([Ga],null,null,!0);R.isEnabled()?R.setSelectionCells(W):R.highlightCells(W)}else if(eb&&0<R.hiddenTags.length)S(!0);
+else{W=ma.slice();var ha=mxUtils.indexOf(W,Ga);W.splice(ha,1);R.setHiddenTags(W);T();R.refresh()}mxEvent.consume(U)});bb.appendChild(z);if(R.isEnabled()){z=document.createElement("td");z.style.verticalAlign="middle";z.style.textAlign="center";z.style.width="18px";if(null==Pa){z.style.align="center";z.style.width="16px";K=document.createElement("img");K.setAttribute("src",Editor.crossImage);K.setAttribute("title",mxResources.get("removeIt",[Ga]));mxUtils.setOpacity(K,eb?75:25);K.style.verticalAlign=
+"middle";K.style.cursor="pointer";K.style.width="16px";if(H||Editor.isDarkMode())K.style.filter="invert(100%)";mxEvent.addListener(K,"click",function(U){var W=mxUtils.indexOf(ma,Ga);0<=W&&ma.splice(W,1);R.removeTagsForCells(R.model.getDescendants(R.model.getRoot()),[Ga]);R.refresh();mxEvent.consume(U)});z.appendChild(K)}else{var M=document.createElement("input");M.setAttribute("type","checkbox");M.style.margin="0px";M.defaultChecked=null!=Pa&&0<=mxUtils.indexOf(Pa,Ga);M.checked=M.defaultChecked;M.style.background=
+"transparent";M.setAttribute("title",mxResources.get(M.defaultChecked?"removeIt":"add",[Ga]));mxEvent.addListener(M,"change",function(U){M.checked?R.addTagsForCells(R.getSelectionCells(),[Ga]):R.removeTagsForCells(R.getSelectionCells(),[Ga]);mxEvent.consume(U)});z.appendChild(M)}bb.appendChild(z)}Oa.appendChild(bb)})(sa[Xa]);Ta.appendChild(Oa);xa.appendChild(Ta)}}var R=this,ma=R.hiddenTags.slice(),ra=document.createElement("div");ra.style.userSelect="none";ra.style.overflow="hidden";ra.style.padding=
+"10px";ra.style.height="100%";var xa=document.createElement("div");xa.style.boxSizing="border-box";xa.style.borderRadius="4px";xa.style.userSelect="none";xa.style.overflow="auto";xa.style.position="absolute";xa.style.left="10px";xa.style.right="10px";xa.style.top="10px";xa.style.border=R.isEnabled()?"1px solid #808080":"none";xa.style.bottom=R.isEnabled()?"48px":"10px";ra.appendChild(xa);var ta=mxUtils.button(mxResources.get("reset"),function(sa){R.setHiddenTags([]);mxEvent.isShiftDown(sa)||(ma=R.hiddenTags.slice());
+T();R.refresh()});ta.setAttribute("title",mxResources.get("reset"));ta.className="geBtn";ta.style.margin="0 4px 0 0";var Aa=mxUtils.button(mxResources.get("add"),function(){null!=P&&P(ma,function(sa){ma=sa;Ca()})});Aa.setAttribute("title",mxResources.get("add"));Aa.className="geBtn";Aa.style.margin="0";R.addListener(mxEvent.ROOT,function(){ma=R.hiddenTags.slice()});var Ca=mxUtils.bind(this,function(sa,Pa){if(u()){sa=R.getAllTags();for(Pa=0;Pa<sa.length;Pa++)0>mxUtils.indexOf(ma,sa[Pa])&&ma.push(sa[Pa]);
+ma.sort();R.isSelectionEmpty()?da(ma):da(ma,R.getCommonTagsForCells(R.getSelectionCells()))}});R.selectionModel.addListener(mxEvent.CHANGE,Ca);R.model.addListener(mxEvent.CHANGE,Ca);R.addListener(mxEvent.REFRESH,Ca);var Ba=document.createElement("div");Ba.style.boxSizing="border-box";Ba.style.whiteSpace="nowrap";Ba.style.position="absolute";Ba.style.overflow="hidden";Ba.style.bottom="0px";Ba.style.height="42px";Ba.style.right="10px";Ba.style.left="10px";R.isEnabled()&&(Ba.appendChild(ta),Ba.appendChild(Aa),
+ra.appendChild(Ba));return{div:ra,refresh:Ca}};Graph.prototype.getCustomFonts=function(){var u=this.extFonts;u=null!=u?u.slice():[];for(var H in Graph.customFontElements){var P=Graph.customFontElements[H];u.push({name:P.name,url:P.url})}return u};Graph.prototype.setFont=function(u,H){Graph.addFont(u,H);document.execCommand("fontname",!1,u);if(null!=H){var P=this.cellEditor.textarea.getElementsByTagName("font");H=Graph.getFontUrl(u,H);for(var T=0;T<P.length;T++)P[T].getAttribute("face")==u&&P[T].getAttribute("data-font-src")!=
+H&&P[T].setAttribute("data-font-src",H)}};var aa=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return aa.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 u=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=u)for(var H in u)this.globalVars[H]=u[H]}catch(P){null!=
+window.console&&console.log("Error in vars URL parameter: "+P)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var Y=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(u){var H=Y.apply(this,arguments);null==H&&null!=this.globalVars&&(H=this.globalVars[u]);return H};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var u=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(u.ownerDocument)).decode(u)}return this.defaultStylesheet};
+Graph.prototype.isViewer=function(){return urlParams.viewer};var qa=Graph.prototype.getSvg;Graph.prototype.getSvg=function(u,H,P,T,S,da,R,ma,ra,xa,ta,Aa,Ca,Ba){var sa=null,Pa=null,Ta=null;Aa||null==this.themes||"darkTheme"!=this.defaultThemeName||(sa=this.stylesheet,Pa=this.shapeForegroundColor,Ta=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 Oa=qa.apply(this,arguments),Xa=this.getCustomFonts();if(ta&&0<Xa.length){var Ga=Oa.ownerDocument,eb=null!=Ga.createElementNS?Ga.createElementNS(mxConstants.NS_SVG,"style"):Ga.createElement("style");null!=Ga.setAttributeNS?eb.setAttributeNS("type","text/css"):eb.setAttribute("type","text/css");for(var bb="",z="",K=0;K<Xa.length;K++){var M=Xa[K].name,U=Xa[K].url;Graph.isCssFontUrl(U)?bb+="@import url("+U+");\n":z+='@font-face {\nfont-family: "'+
+M+'";\nsrc: url("'+U+'");\n}\n'}eb.appendChild(Ga.createTextNode(bb+z));Oa.getElementsByTagName("defs")[0].appendChild(eb)}this.mathEnabled&&(document.body.appendChild(Oa),Editor.MathJaxRender(Oa),Oa.parentNode.removeChild(Oa));null!=sa&&(this.shapeBackgroundColor=Ta,this.shapeForegroundColor=Pa,this.stylesheet=sa,this.refresh());return Oa};var Q=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(u){Q.apply(this,arguments);null!=u.secondLabel&&(u.secondLabel.destroy(),u.secondLabel=
+null)};mxCellRenderer.prototype.getShapesForState=function(u){return[u.shape,u.text,u.secondLabel,u.control]};var X=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){X.apply(this,arguments);this.enumerationState=0};var fa=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(u){null!=u.shape&&this.redrawEnumerationState(u);return fa.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(u){u=decodeURIComponent(mxUtils.getValue(u.style,
"enumerateValue",""));""==u&&(u=++this.enumerationState);return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(u)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(u){var H="1"==mxUtils.getValue(u.style,"enumerate",0);H&&null==u.secondLabel?(u.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),u.secondLabel.size=12,u.secondLabel.state=u,u.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,
-this.graph.cellRenderer.initializeLabel(u,u.secondLabel)):H||null==u.secondLabel||(u.secondLabel.destroy(),u.secondLabel=null);H=u.secondLabel;if(null!=H){var O=u.view.scale,T=this.createEnumerationValue(u);u=this.graph.model.isVertex(u.cell)?new mxRectangle(u.x+u.width-4*O,u.y+4*O,0,0):mxRectangle.fromPoint(u.view.getPoint(u));H.bounds.equals(u)&&H.value==T&&H.scale==O||(H.bounds=u,H.value=T,H.scale=O,H.redraw())}};var ka=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=
+this.graph.cellRenderer.initializeLabel(u,u.secondLabel)):H||null==u.secondLabel||(u.secondLabel.destroy(),u.secondLabel=null);H=u.secondLabel;if(null!=H){var P=u.view.scale,T=this.createEnumerationValue(u);u=this.graph.model.isVertex(u.cell)?new mxRectangle(u.x+u.width-4*P,u.y+4*P,0,0):mxRectangle.fromPoint(u.view.getPoint(u));H.bounds.equals(u)&&H.value==T&&H.scale==P||(H.bounds=u,H.value=T,H.scale=P,H.redraw())}};var ka=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=
function(){ka.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var u=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;",u.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,u.ownerSVGElement))}};var ja=Graph.prototype.refresh;Graph.prototype.refresh=function(){ja.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=
+this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",u.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,u.ownerSVGElement))}};var ia=Graph.prototype.refresh;Graph.prototype.refresh=function(){ia.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=
this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var V=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){V.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(u){"data:action/json,"==u.substring(0,17)&&(u=JSON.parse(u.substring(17)),null!=u.actions&&this.executeCustomActions(u.actions))};Graph.prototype.executeCustomActions=function(u,
-H){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 O=!1,T=0,R=0,da=mxUtils.bind(this,function(){O||(O=!0,this.model.beginUpdate())}),P=mxUtils.bind(this,function(){O&&(O=!1,this.model.endUpdate())}),ma=mxUtils.bind(this,function(){0<T&&T--;0==
-T&&ra()}),ra=mxUtils.bind(this,function(){if(R<u.length){var xa=this.stoppingCustomActions,ta=u[R++],Aa=[];if(null!=ta.open)if(P(),this.isCustomLink(ta.open)){if(!this.customLinkClicked(ta.open))return}else this.openLink(ta.open);null==ta.wait||xa||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;ma()}),T++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=ta.wait?parseInt(ta.wait):1E3),P());null!=ta.opacity&&
+H){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 P=!1,T=0,S=0,da=mxUtils.bind(this,function(){P||(P=!0,this.model.beginUpdate())}),R=mxUtils.bind(this,function(){P&&(P=!1,this.model.endUpdate())}),ma=mxUtils.bind(this,function(){0<T&&T--;0==
+T&&ra()}),ra=mxUtils.bind(this,function(){if(S<u.length){var xa=this.stoppingCustomActions,ta=u[S++],Aa=[];if(null!=ta.open)if(R(),this.isCustomLink(ta.open)){if(!this.customLinkClicked(ta.open))return}else this.openLink(ta.open);null==ta.wait||xa||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;ma()}),T++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=ta.wait?parseInt(ta.wait):1E3),R());null!=ta.opacity&&
null!=ta.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(ta.opacity,!0)),ta.opacity.value);null!=ta.fadeIn&&(T++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(ta.fadeIn,!0)),0,1,ma,xa?0:ta.fadeIn.delay));null!=ta.fadeOut&&(T++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(ta.fadeOut,!0)),1,0,ma,xa?0:ta.fadeOut.delay));null!=ta.wipeIn&&(Aa=Aa.concat(this.createWipeAnimations(this.getCellsForAction(ta.wipeIn,!0),!0)));null!=ta.wipeOut&&
(Aa=Aa.concat(this.createWipeAnimations(this.getCellsForAction(ta.wipeOut,!0),!1)));null!=ta.toggle&&(da(),this.toggleCells(this.getCellsForAction(ta.toggle,!0)));if(null!=ta.show){da();var Ca=this.getCellsForAction(ta.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(Ca),1);this.setCellsVisible(Ca,!0)}null!=ta.hide&&(da(),Ca=this.getCellsForAction(ta.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(Ca),0),this.setCellsVisible(Ca,!1));null!=ta.toggleStyle&&null!=ta.toggleStyle.key&&(da(),
this.toggleCellStyles(ta.toggleStyle.key,null!=ta.toggleStyle.defaultValue?ta.toggleStyle.defaultValue:"0",this.getCellsForAction(ta.toggleStyle,!0)));null!=ta.style&&null!=ta.style.key&&(da(),this.setCellStyles(ta.style.key,ta.style.value,this.getCellsForAction(ta.style,!0)));Ca=[];null!=ta.select&&this.isEnabled()&&(Ca=this.getCellsForAction(ta.select),this.setSelectionCells(Ca));null!=ta.highlight&&(Ca=this.getCellsForAction(ta.highlight),this.highlightCells(Ca,ta.highlight.color,ta.highlight.duration,
ta.highlight.opacity));null!=ta.scroll&&(Ca=this.getCellsForAction(ta.scroll));null!=ta.viewbox&&this.fitWindow(ta.viewbox,ta.viewbox.border);0<Ca.length&&this.scrollCellToVisible(Ca[0]);if(null!=ta.tags){Ca=[];null!=ta.tags.hidden&&(Ca=Ca.concat(ta.tags.hidden));if(null!=ta.tags.visible)for(var Ba=this.getAllTags(),sa=0;sa<Ba.length;sa++)0>mxUtils.indexOf(ta.tags.visible,Ba[sa])&&0>mxUtils.indexOf(Ca,Ba[sa])&&Ca.push(Ba[sa]);this.setHiddenTags(Ca);this.refresh()}0<Aa.length&&(T++,this.executeAnimations(Aa,
-ma,xa?1:ta.steps,xa?0:ta.delay));0==T?ra():P()}else this.stoppingCustomActions=this.executingCustomActions=!1,P(),null!=H&&H()});ra()}};Graph.prototype.doUpdateCustomLinksForCell=function(u,H){var O=this.getLinkForCell(H);null!=O&&"data:action/json,"==O.substring(0,17)&&this.setLinkForCell(H,this.updateCustomLink(u,O));if(this.isHtmlLabel(H)){var T=document.createElement("div");T.innerHTML=this.sanitizeHtml(this.getLabel(H));for(var R=T.getElementsByTagName("a"),da=!1,P=0;P<R.length;P++)O=R[P].getAttribute("href"),
-null!=O&&"data:action/json,"==O.substring(0,17)&&(R[P].setAttribute("href",this.updateCustomLink(u,O)),da=!0);da&&this.labelChanged(H,T.innerHTML)}};Graph.prototype.updateCustomLink=function(u,H){if("data:action/json,"==H.substring(0,17))try{var O=JSON.parse(H.substring(17));null!=O.actions&&(this.updateCustomLinkActions(u,O.actions),H="data:action/json,"+JSON.stringify(O))}catch(T){}return H};Graph.prototype.updateCustomLinkActions=function(u,H){for(var O=0;O<H.length;O++){var T=H[O],R;for(R in T)this.updateCustomLinkAction(u,
-T[R],"cells"),this.updateCustomLinkAction(u,T[R],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(u,H,O){if(null!=H&&null!=H[O]){for(var T=[],R=0;R<H[O].length;R++)if("*"==H[O][R])T.push(H[O][R]);else{var da=u[H[O][R]];null!=da?""!=da&&T.push(da):T.push(H[O][R])}H[O]=T}};Graph.prototype.getCellsForAction=function(u,H){H=this.getCellsById(u.cells).concat(this.getCellsForTags(u.tags,null,H));if(null!=u.excludeCells){for(var O=[],T=0;T<H.length;T++)0>u.excludeCells.indexOf(H[T].id)&&
-O.push(H[T]);H=O}return H};Graph.prototype.getCellsById=function(u){var H=[];if(null!=u)for(var O=0;O<u.length;O++)if("*"==u[O]){var T=this.model.getRoot();H=H.concat(this.model.filterDescendants(function(da){return da!=T},T))}else{var R=this.model.getCell(u[O]);null!=R&&H.push(R)}return H};var J=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(u){return J.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(u))};Graph.prototype.setHiddenTags=function(u){this.hiddenTags=
+ma,xa?1:ta.steps,xa?0:ta.delay));0==T?ra():R()}else this.stoppingCustomActions=this.executingCustomActions=!1,R(),null!=H&&H()});ra()}};Graph.prototype.doUpdateCustomLinksForCell=function(u,H){var P=this.getLinkForCell(H);null!=P&&"data:action/json,"==P.substring(0,17)&&this.setLinkForCell(H,this.updateCustomLink(u,P));if(this.isHtmlLabel(H)){var T=document.createElement("div");T.innerHTML=this.sanitizeHtml(this.getLabel(H));for(var S=T.getElementsByTagName("a"),da=!1,R=0;R<S.length;R++)P=S[R].getAttribute("href"),
+null!=P&&"data:action/json,"==P.substring(0,17)&&(S[R].setAttribute("href",this.updateCustomLink(u,P)),da=!0);da&&this.labelChanged(H,T.innerHTML)}};Graph.prototype.updateCustomLink=function(u,H){if("data:action/json,"==H.substring(0,17))try{var P=JSON.parse(H.substring(17));null!=P.actions&&(this.updateCustomLinkActions(u,P.actions),H="data:action/json,"+JSON.stringify(P))}catch(T){}return H};Graph.prototype.updateCustomLinkActions=function(u,H){for(var P=0;P<H.length;P++){var T=H[P],S;for(S in T)this.updateCustomLinkAction(u,
+T[S],"cells"),this.updateCustomLinkAction(u,T[S],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(u,H,P){if(null!=H&&null!=H[P]){for(var T=[],S=0;S<H[P].length;S++)if("*"==H[P][S])T.push(H[P][S]);else{var da=u[H[P][S]];null!=da?""!=da&&T.push(da):T.push(H[P][S])}H[P]=T}};Graph.prototype.getCellsForAction=function(u,H){H=this.getCellsById(u.cells).concat(this.getCellsForTags(u.tags,null,H));if(null!=u.excludeCells){for(var P=[],T=0;T<H.length;T++)0>u.excludeCells.indexOf(H[T].id)&&
+P.push(H[T]);H=P}return H};Graph.prototype.getCellsById=function(u){var H=[];if(null!=u)for(var P=0;P<u.length;P++)if("*"==u[P]){var T=this.model.getRoot();H=H.concat(this.model.filterDescendants(function(da){return da!=T},T))}else{var S=this.model.getCell(u[P]);null!=S&&H.push(S)}return H};var L=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(u){return L.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(u))};Graph.prototype.setHiddenTags=function(u){this.hiddenTags=
u;this.fireEvent(new mxEventObject("hiddenTagsChanged"))};Graph.prototype.toggleHiddenTag=function(u){var H=mxUtils.indexOf(this.hiddenTags,u);0>H?this.hiddenTags.push(u):0<=H&&this.hiddenTags.splice(H,1);this.fireEvent(new mxEventObject("hiddenTagsChanged"))};Graph.prototype.isAllTagsHidden=function(u){if(null==u||0==u.length||0==this.hiddenTags.length)return!1;u=u.split(" ");if(u.length>this.hiddenTags.length)return!1;for(var H=0;H<u.length;H++)if(0>mxUtils.indexOf(this.hiddenTags,u[H]))return!1;
-return!0};Graph.prototype.getCellsForTags=function(u,H,O,T){var R=[];if(null!=u){H=null!=H?H:this.model.getDescendants(this.model.getRoot());for(var da=0,P={},ma=0;ma<u.length;ma++)0<u[ma].length&&(P[u[ma]]=!0,da++);for(ma=0;ma<H.length;ma++)if(O&&this.model.getParent(H[ma])==this.model.root||this.model.isVertex(H[ma])||this.model.isEdge(H[ma])){var ra=this.getTagsForCell(H[ma]),xa=!1;if(0<ra.length&&(ra=ra.split(" "),ra.length>=u.length)){for(var ta=xa=0;ta<ra.length&&xa<da;ta++)null!=P[ra[ta]]&&
-xa++;xa=xa==da}xa&&(1!=T||this.isCellVisible(H[ma]))&&R.push(H[ma])}}return R};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(u){for(var H=null,O=[],T=0;T<u.length;T++){var R=this.getTagsForCell(u[T]);O=[];if(0<R.length){R=R.split(" ");for(var da={},P=0;P<R.length;P++)if(null==H||null!=H[R[P]])da[R[P]]=!0,O.push(R[P]);H=da}else return[]}return O};Graph.prototype.getTagsForCells=function(u){for(var H=
-[],O={},T=0;T<u.length;T++){var R=this.getTagsForCell(u[T]);if(0<R.length){R=R.split(" ");for(var da=0;da<R.length;da++)null==O[R[da]]&&(O[R[da]]=!0,H.push(R[da]))}}return H};Graph.prototype.getTagsForCell=function(u){return this.getAttributeForCell(u,"tags","")};Graph.prototype.addTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var O=0;O<u.length;O++){for(var T=this.getTagsForCell(u[O]),R=T.split(" "),da=!1,P=0;P<H.length;P++){var ma=mxUtils.trim(H[P]);""!=
-ma&&0>mxUtils.indexOf(R,ma)&&(T=0<T.length?T+" "+ma:ma,da=!0)}da&&this.setAttributeForCell(u[O],"tags",T)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var O=0;O<u.length;O++){var T=this.getTagsForCell(u[O]);if(0<T.length){for(var R=T.split(" "),da=!1,P=0;P<H.length;P++){var ma=mxUtils.indexOf(R,H[P]);0<=ma&&(R.splice(ma,1),da=!0)}da&&this.setAttributeForCell(u[O],"tags",R.join(" "))}}}finally{this.model.endUpdate()}}};
-Graph.prototype.toggleCells=function(u){this.model.beginUpdate();try{for(var H=0;H<u.length;H++)this.model.setVisible(u[H],!this.model.isVisible(u[H]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(u,H){this.model.beginUpdate();try{for(var O=0;O<u.length;O++)this.model.setVisible(u[O],H)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(u,H,O,T){for(var R=0;R<u.length;R++)this.highlightCell(u[R],H,O,T)};Graph.prototype.highlightCell=function(u,H,
-O,T,R){H=null!=H?H:mxConstants.DEFAULT_VALID_COLOR;O=null!=O?O:1E3;u=this.view.getState(u);var da=null;null!=u&&(R=null!=R?R:4,R=Math.max(R+1,mxUtils.getValue(u.style,mxConstants.STYLE_STROKEWIDTH,1)+R),da=new mxCellHighlight(this,H,R,!1),null!=T&&(da.opacity=T),da.highlight(u),window.setTimeout(function(){null!=da.shape&&(mxUtils.setPrefixedStyle(da.shape.node.style,"transition","all 1200ms ease-in-out"),da.shape.node.style.opacity=0);window.setTimeout(function(){da.destroy()},1200)},O));return da};
-Graph.prototype.addSvgShadow=function(u,H,O,T){O=null!=O?O:!1;T=null!=T?T:!0;var R=u.ownerDocument,da=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"filter"):R.createElement("filter");da.setAttribute("id",this.shadowId);var P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):R.createElement("feGaussianBlur");P.setAttribute("in","SourceAlpha");P.setAttribute("stdDeviation",this.svgShadowBlur);P.setAttribute("result","blur");da.appendChild(P);P=null!=R.createElementNS?
-R.createElementNS(mxConstants.NS_SVG,"feOffset"):R.createElement("feOffset");P.setAttribute("in","blur");P.setAttribute("dx",this.svgShadowSize);P.setAttribute("dy",this.svgShadowSize);P.setAttribute("result","offsetBlur");da.appendChild(P);P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feFlood"):R.createElement("feFlood");P.setAttribute("flood-color",this.svgShadowColor);P.setAttribute("flood-opacity",this.svgShadowOpacity);P.setAttribute("result","offsetColor");da.appendChild(P);
-P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feComposite"):R.createElement("feComposite");P.setAttribute("in","offsetColor");P.setAttribute("in2","offsetBlur");P.setAttribute("operator","in");P.setAttribute("result","offsetBlur");da.appendChild(P);P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feBlend"):R.createElement("feBlend");P.setAttribute("in","SourceGraphic");P.setAttribute("in2","offsetBlur");da.appendChild(P);P=u.getElementsByTagName("defs");0==P.length?
-(R=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"defs"):R.createElement("defs"),null!=u.firstChild?u.insertBefore(R,u.firstChild):u.appendChild(R)):R=P[0];R.appendChild(da);O||(H=null!=H?H:u.getElementsByTagName("g")[0],null!=H&&(H.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(u.getAttribute("width")))&&T&&(u.setAttribute("width",parseInt(u.getAttribute("width"))+6),u.setAttribute("height",parseInt(u.getAttribute("height"))+6),H=u.getAttribute("viewBox"),null!=H&&
+return!0};Graph.prototype.getCellsForTags=function(u,H,P,T){var S=[];if(null!=u){H=null!=H?H:this.model.getDescendants(this.model.getRoot());for(var da=0,R={},ma=0;ma<u.length;ma++)0<u[ma].length&&(R[u[ma]]=!0,da++);for(ma=0;ma<H.length;ma++)if(P&&this.model.getParent(H[ma])==this.model.root||this.model.isVertex(H[ma])||this.model.isEdge(H[ma])){var ra=this.getTagsForCell(H[ma]),xa=!1;if(0<ra.length&&(ra=ra.split(" "),ra.length>=u.length)){for(var ta=xa=0;ta<ra.length&&xa<da;ta++)null!=R[ra[ta]]&&
+xa++;xa=xa==da}xa&&(1!=T||this.isCellVisible(H[ma]))&&S.push(H[ma])}}return S};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(u){for(var H=null,P=[],T=0;T<u.length;T++){var S=this.getTagsForCell(u[T]);P=[];if(0<S.length){S=S.split(" ");for(var da={},R=0;R<S.length;R++)if(null==H||null!=H[S[R]])da[S[R]]=!0,P.push(S[R]);H=da}else return[]}return P};Graph.prototype.getTagsForCells=function(u){for(var H=
+[],P={},T=0;T<u.length;T++){var S=this.getTagsForCell(u[T]);if(0<S.length){S=S.split(" ");for(var da=0;da<S.length;da++)null==P[S[da]]&&(P[S[da]]=!0,H.push(S[da]))}}return H};Graph.prototype.getTagsForCell=function(u){return this.getAttributeForCell(u,"tags","")};Graph.prototype.addTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var P=0;P<u.length;P++){for(var T=this.getTagsForCell(u[P]),S=T.split(" "),da=!1,R=0;R<H.length;R++){var ma=mxUtils.trim(H[R]);""!=
+ma&&0>mxUtils.indexOf(S,ma)&&(T=0<T.length?T+" "+ma:ma,da=!0)}da&&this.setAttributeForCell(u[P],"tags",T)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var P=0;P<u.length;P++){var T=this.getTagsForCell(u[P]);if(0<T.length){for(var S=T.split(" "),da=!1,R=0;R<H.length;R++){var ma=mxUtils.indexOf(S,H[R]);0<=ma&&(S.splice(ma,1),da=!0)}da&&this.setAttributeForCell(u[P],"tags",S.join(" "))}}}finally{this.model.endUpdate()}}};
+Graph.prototype.toggleCells=function(u){this.model.beginUpdate();try{for(var H=0;H<u.length;H++)this.model.setVisible(u[H],!this.model.isVisible(u[H]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(u,H){this.model.beginUpdate();try{for(var P=0;P<u.length;P++)this.model.setVisible(u[P],H)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(u,H,P,T){for(var S=0;S<u.length;S++)this.highlightCell(u[S],H,P,T)};Graph.prototype.highlightCell=function(u,H,
+P,T,S){H=null!=H?H:mxConstants.DEFAULT_VALID_COLOR;P=null!=P?P:1E3;u=this.view.getState(u);var da=null;null!=u&&(S=null!=S?S:4,S=Math.max(S+1,mxUtils.getValue(u.style,mxConstants.STYLE_STROKEWIDTH,1)+S),da=new mxCellHighlight(this,H,S,!1),null!=T&&(da.opacity=T),da.highlight(u),window.setTimeout(function(){null!=da.shape&&(mxUtils.setPrefixedStyle(da.shape.node.style,"transition","all 1200ms ease-in-out"),da.shape.node.style.opacity=0);window.setTimeout(function(){da.destroy()},1200)},P));return da};
+Graph.prototype.addSvgShadow=function(u,H,P,T){P=null!=P?P:!1;T=null!=T?T:!0;var S=u.ownerDocument,da=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"filter"):S.createElement("filter");da.setAttribute("id",this.shadowId);var R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):S.createElement("feGaussianBlur");R.setAttribute("in","SourceAlpha");R.setAttribute("stdDeviation",this.svgShadowBlur);R.setAttribute("result","blur");da.appendChild(R);R=null!=S.createElementNS?
+S.createElementNS(mxConstants.NS_SVG,"feOffset"):S.createElement("feOffset");R.setAttribute("in","blur");R.setAttribute("dx",this.svgShadowSize);R.setAttribute("dy",this.svgShadowSize);R.setAttribute("result","offsetBlur");da.appendChild(R);R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feFlood"):S.createElement("feFlood");R.setAttribute("flood-color",this.svgShadowColor);R.setAttribute("flood-opacity",this.svgShadowOpacity);R.setAttribute("result","offsetColor");da.appendChild(R);
+R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feComposite"):S.createElement("feComposite");R.setAttribute("in","offsetColor");R.setAttribute("in2","offsetBlur");R.setAttribute("operator","in");R.setAttribute("result","offsetBlur");da.appendChild(R);R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feBlend"):S.createElement("feBlend");R.setAttribute("in","SourceGraphic");R.setAttribute("in2","offsetBlur");da.appendChild(R);R=u.getElementsByTagName("defs");0==R.length?
+(S=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"defs"):S.createElement("defs"),null!=u.firstChild?u.insertBefore(S,u.firstChild):u.appendChild(S)):S=R[0];S.appendChild(da);P||(H=null!=H?H:u.getElementsByTagName("g")[0],null!=H&&(H.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(u.getAttribute("width")))&&T&&(u.setAttribute("width",parseInt(u.getAttribute("width"))+6),u.setAttribute("height",parseInt(u.getAttribute("height"))+6),H=u.getAttribute("viewBox"),null!=H&&
0<H.length&&(H=H.split(" "),3<H.length&&(w=parseFloat(H[2])+6,h=parseFloat(H[3])+6,u.setAttribute("viewBox",H[0]+" "+H[1]+" "+w+" "+h))))));return da};Graph.prototype.setShadowVisible=function(u,H){mxClient.IS_SVG&&!mxClient.IS_SF&&(H=null!=H?H:!0,(this.shadowVisible=u)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),H&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==
-this.defaultParent){var u=this.model.getChildCount(this.model.root),H=0;do var O=this.model.getChildAt(this.model.root,H);while(H++<u&&"1"==mxUtils.getValue(this.getCellStyle(O),"locked","0"));null!=O&&this.setDefaultParent(O)}};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=
+this.defaultParent){var u=this.model.getChildCount(this.model.root),H=0;do var P=this.model.getChildAt(this.model.root,H);while(H++<u&&"1"==mxUtils.getValue(this.getCellStyle(P),"locked","0"));null!=P&&this.setDefaultParent(P)}};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=
@@ -3327,35 +3328,36 @@ STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[S
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(u){var H=null;null!=u&&0<u.length&&("ER"==u.substring(0,2)?H="mxgraph.er":"sysML"==u.substring(0,5)&&(H="mxgraph.sysml"));return H};var W=mxMarker.createMarker;mxMarker.createMarker=
-function(u,H,O,T,R,da,P,ma,ra,xa){if(null!=O&&null==mxMarker.markers[O]){var ta=this.getPackageForType(O);null!=ta&&mxStencilRegistry.getStencil(ta)}return W.apply(this,arguments)};var Q=mxStencil.prototype.drawShape;mxStencil.prototype.drawShape=function(u,H,O,T,R,da){"1"==mxUtils.getValue(H.style,"lineShape",null)&&u.setFillColor(mxUtils.getValue(H.style,mxConstants.STYLE_STROKECOLOR,this.stroke));return Q.apply(this,arguments)};PrintDialog.prototype.create=function(u,H){function O(){Ca.value=Math.max(1,
-Math.min(ma,Math.max(parseInt(Ca.value),parseInt(Aa.value))));Aa.value=Math.max(1,Math.min(ma,Math.min(parseInt(Ca.value),parseInt(Aa.value))))}function T(za){function Da(ab,db,kb){var ib=ab.useCssTransforms,nb=ab.currentTranslate,vb=ab.currentScale,mb=ab.view.translate,Bb=ab.view.scale;ab.useCssTransforms&&(ab.useCssTransforms=!1,ab.currentTranslate=new mxPoint(0,0),ab.currentScale=1,ab.view.translate=new mxPoint(0,0),ab.view.scale=1);var yb=ab.getGraphBounds(),lb=0,ob=0,gb=ua.get(),rb=1/ab.pageScale,
-tb=Sa.checked;if(tb){rb=parseInt(fa.value);var zb=parseInt(na.value);rb=Math.min(gb.height*zb/(yb.height/ab.view.scale),gb.width*rb/(yb.width/ab.view.scale))}else rb=parseInt(Ta.value)/(100*ab.pageScale),isNaN(rb)&&(Ma=1/ab.pageScale,Ta.value="100 %");gb=mxRectangle.fromRectangle(gb);gb.width=Math.ceil(gb.width*Ma);gb.height=Math.ceil(gb.height*Ma);rb*=Ma;!tb&&ab.pageVisible?(yb=ab.getPageLayout(),lb-=yb.x*gb.width,ob-=yb.y*gb.height):tb=!0;if(null==db){db=PrintDialog.createPrintPreview(ab,rb,gb,
-0,lb,ob,tb);db.pageSelector=!1;db.mathEnabled=!1;Ba.checked&&(db.isCellVisible=function(pb){return ab.isCellSelected(pb)});lb=u.getCurrentFile();null!=lb&&(db.title=lb.getTitle());var wb=db.writeHead;db.writeHead=function(pb){wb.apply(this,arguments);null!=u.editor.fontCss&&(pb.writeln('<style type="text/css">'),pb.writeln(u.editor.fontCss),pb.writeln("</style>"));for(var xb=ab.getCustomFonts(),c=0;c<xb.length;c++){var l=xb[c].name,x=xb[c].url;Graph.isCssFontUrl(x)?pb.writeln('<link rel="stylesheet" href="'+
-mxUtils.htmlEntities(x)+'" charset="UTF-8" type="text/css">'):(pb.writeln('<style type="text/css">'),pb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),pb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var Ab=db.renderPage;db.renderPage=function(pb,xb,c,l,x,p){var v=mxClient.NO_FO,A=Ab.apply(this,arguments);mxClient.NO_FO=v;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:A.className="geDisableMathJax";return A}}lb=
-null;ob=R.shapeForegroundColor;tb=R.shapeBackgroundColor;gb=R.enableFlowAnimation;R.enableFlowAnimation=!1;null!=R.themes&&"darkTheme"==R.defaultThemeName&&(lb=R.stylesheet,R.stylesheet=R.getDefaultStylesheet(),R.shapeForegroundColor="#000000",R.shapeBackgroundColor="#ffffff",R.refresh());db.open(null,null,kb,!0);R.enableFlowAnimation=gb;null!=lb&&(R.shapeForegroundColor=ob,R.shapeBackgroundColor=tb,R.stylesheet=lb,R.refresh())}else{gb=ab.background;if(null==gb||""==gb||gb==mxConstants.NONE)gb="#ffffff";
-db.backgroundColor=gb;db.autoOrigin=tb;db.appendGraph(ab,rb,lb,ob,kb,!0);kb=ab.getCustomFonts();if(null!=db.wnd)for(lb=0;lb<kb.length;lb++)ob=kb[lb].name,tb=kb[lb].url,Graph.isCssFontUrl(tb)?db.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(tb)+'" charset="UTF-8" type="text/css">'):(db.wnd.document.writeln('<style type="text/css">'),db.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(ob)+'";\nsrc: url("'+mxUtils.htmlEntities(tb)+'");\n}'),db.wnd.document.writeln("</style>"))}ib&&
-(ab.useCssTransforms=ib,ab.currentTranslate=nb,ab.currentScale=vb,ab.view.translate=mb,ab.view.scale=Bb);return db}var Ma=parseInt(pa.value)/100;isNaN(Ma)&&(Ma=1,pa.value="100 %");Ma*=.75;var La=null,Ua=R.shapeForegroundColor,Ra=R.shapeBackgroundColor;null!=R.themes&&"darkTheme"==R.defaultThemeName&&(La=R.stylesheet,R.stylesheet=R.getDefaultStylesheet(),R.shapeForegroundColor="#000000",R.shapeBackgroundColor="#ffffff",R.refresh());var Fa=Aa.value,va=Ca.value,ya=!xa.checked,Na=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(u,
-xa.checked,Fa,va,Sa.checked,fa.value,na.value,parseInt(Ta.value)/100,parseInt(pa.value)/100,ua.get());else{ya&&(ya=Ba.checked||Fa==ra&&va==ra);if(!ya&&null!=u.pages&&u.pages.length){var Ja=0;ya=u.pages.length-1;xa.checked||(Ja=parseInt(Fa)-1,ya=parseInt(va)-1);for(var Pa=Ja;Pa<=ya;Pa++){var Ya=u.pages[Pa];Fa=Ya==u.currentPage?R:null;if(null==Fa){Fa=u.createTemporaryGraph(R.stylesheet);Fa.shapeForegroundColor=R.shapeForegroundColor;Fa.shapeBackgroundColor=R.shapeBackgroundColor;va=!0;Ja=!1;var cb=
-null,fb=null;null==Ya.viewState&&null==Ya.root&&u.updatePageRoot(Ya);null!=Ya.viewState&&(va=Ya.viewState.pageVisible,Ja=Ya.viewState.mathEnabled,cb=Ya.viewState.background,fb=Ya.viewState.backgroundImage,Fa.extFonts=Ya.viewState.extFonts);null!=fb&&null!=fb.originalSrc&&(fb=u.createImageForPageLink(fb.originalSrc,Ya));Fa.background=cb;Fa.backgroundImage=null!=fb?new mxImage(fb.src,fb.width,fb.height,fb.x,fb.y):null;Fa.pageVisible=va;Fa.mathEnabled=Ja;var qb=Fa.getGraphBounds;Fa.getGraphBounds=function(){var ab=
-qb.apply(this,arguments),db=this.backgroundImage;if(null!=db&&null!=db.width&&null!=db.height){var kb=this.view.translate,ib=this.view.scale;ab=mxRectangle.fromRectangle(ab);ab.add(new mxRectangle((kb.x+db.x)*ib,(kb.y+db.y)*ib,db.width*ib,db.height*ib))}return ab};var ub=Fa.getGlobalVariable;Fa.getGlobalVariable=function(ab){return"page"==ab?Ya.getName():"pagenumber"==ab?Pa+1:"pagecount"==ab?null!=u.pages?u.pages.length:1:ub.apply(this,arguments)};document.body.appendChild(Fa.container);u.updatePageRoot(Ya);
-Fa.model.setRoot(Ya.root)}Na=Da(Fa,Na,Pa!=ya);Fa!=R&&Fa.container.parentNode.removeChild(Fa.container)}}else Na=Da(R);null==Na?u.handleError({message:mxResources.get("errorUpdatingPreview")}):(Na.mathEnabled&&(ya=Na.wnd.document,za&&(Na.wnd.IMMEDIATE_PRINT=!0),ya.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),Na.closeDocument(),!Na.mathEnabled&&za&&PrintDialog.printPreview(Na));null!=La&&(R.shapeForegroundColor=Ua,R.shapeBackgroundColor=Ra,R.stylesheet=
-La,R.refresh())}}var R=u.editor.graph,da=document.createElement("div"),P=document.createElement("h3");P.style.width="100%";P.style.textAlign="center";P.style.marginTop="0px";mxUtils.write(P,H||mxResources.get("print"));da.appendChild(P);var ma=1,ra=1;P=document.createElement("div");P.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var xa=document.createElement("input");xa.style.cssText="margin-right:8px;margin-bottom:8px;";xa.setAttribute("value","all");xa.setAttribute("type",
-"radio");xa.setAttribute("name","pages-printdialog");P.appendChild(xa);H=document.createElement("span");mxUtils.write(H,mxResources.get("printAllPages"));P.appendChild(H);mxUtils.br(P);var ta=xa.cloneNode(!0);xa.setAttribute("checked","checked");ta.setAttribute("value","range");P.appendChild(ta);H=document.createElement("span");mxUtils.write(H,mxResources.get("pages")+":");P.appendChild(H);var Aa=document.createElement("input");Aa.style.cssText="margin:0 8px 0 8px;";Aa.setAttribute("value","1");Aa.setAttribute("type",
-"number");Aa.setAttribute("min","1");Aa.style.width="50px";P.appendChild(Aa);H=document.createElement("span");mxUtils.write(H,mxResources.get("to"));P.appendChild(H);var Ca=Aa.cloneNode(!0);P.appendChild(Ca);mxEvent.addListener(Aa,"focus",function(){ta.checked=!0});mxEvent.addListener(Ca,"focus",function(){ta.checked=!0});mxEvent.addListener(Aa,"change",O);mxEvent.addListener(Ca,"change",O);if(null!=u.pages&&(ma=u.pages.length,null!=u.currentPage))for(H=0;H<u.pages.length;H++)if(u.currentPage==u.pages[H]){ra=
-H+1;Aa.value=ra;Ca.value=ra;break}Aa.setAttribute("max",ma);Ca.setAttribute("max",ma);u.isPagesEnabled()?1<ma&&(da.appendChild(P),ta.checked=!0):ta.checked=!0;mxUtils.br(P);var Ba=document.createElement("input");Ba.setAttribute("value","all");Ba.setAttribute("type","radio");Ba.style.marginRight="8px";R.isSelectionEmpty()&&Ba.setAttribute("disabled","disabled");var sa=document.createElement("div");sa.style.marginBottom="10px";1==ma?(Ba.setAttribute("type","checkbox"),Ba.style.marginBottom="12px",sa.appendChild(Ba)):
-(Ba.setAttribute("name","pages-printdialog"),Ba.style.marginBottom="8px",P.appendChild(Ba));H=document.createElement("span");mxUtils.write(H,mxResources.get("selectionOnly"));Ba.parentNode.appendChild(H);1==ma&&mxUtils.br(Ba.parentNode);var Oa=document.createElement("input");Oa.style.marginRight="8px";Oa.setAttribute("value","adjust");Oa.setAttribute("type","radio");Oa.setAttribute("name","printZoom");sa.appendChild(Oa);H=document.createElement("span");mxUtils.write(H,mxResources.get("adjustTo"));
-sa.appendChild(H);var Ta=document.createElement("input");Ta.style.cssText="margin:0 8px 0 8px;";Ta.setAttribute("value","100 %");Ta.style.width="50px";sa.appendChild(Ta);mxEvent.addListener(Ta,"focus",function(){Oa.checked=!0});da.appendChild(sa);P=P.cloneNode(!1);var Sa=Oa.cloneNode(!0);Sa.setAttribute("value","fit");Oa.setAttribute("checked","checked");H=document.createElement("div");H.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";H.appendChild(Sa);P.appendChild(H);sa=
-document.createElement("table");sa.style.display="inline-block";var $a=document.createElement("tbody"),Ga=document.createElement("tr"),eb=Ga.cloneNode(!0),bb=document.createElement("td"),z=bb.cloneNode(!0),L=bb.cloneNode(!0),M=bb.cloneNode(!0),U=bb.cloneNode(!0),X=bb.cloneNode(!0);bb.style.textAlign="right";M.style.textAlign="right";mxUtils.write(bb,mxResources.get("fitTo"));var fa=document.createElement("input");fa.style.cssText="margin:0 8px 0 8px;";fa.setAttribute("value","1");fa.setAttribute("min",
-"1");fa.setAttribute("type","number");fa.style.width="40px";z.appendChild(fa);H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsAcross"));L.appendChild(H);mxUtils.write(M,mxResources.get("fitToBy"));var na=fa.cloneNode(!0);U.appendChild(na);mxEvent.addListener(fa,"focus",function(){Sa.checked=!0});mxEvent.addListener(na,"focus",function(){Sa.checked=!0});H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsDown"));X.appendChild(H);Ga.appendChild(bb);
-Ga.appendChild(z);Ga.appendChild(L);eb.appendChild(M);eb.appendChild(U);eb.appendChild(X);$a.appendChild(Ga);$a.appendChild(eb);sa.appendChild($a);P.appendChild(sa);da.appendChild(P);P=document.createElement("div");H=document.createElement("div");H.style.fontWeight="bold";H.style.marginBottom="12px";mxUtils.write(H,mxResources.get("paperSize"));P.appendChild(H);H=document.createElement("div");H.style.marginBottom="12px";var ua=PageSetupDialog.addPageFormatPanel(H,"printdialog",u.editor.graph.pageFormat||
-mxConstants.PAGE_FORMAT_A4_PORTRAIT);P.appendChild(H);H=document.createElement("span");mxUtils.write(H,mxResources.get("pageScale"));P.appendChild(H);var pa=document.createElement("input");pa.style.cssText="margin:0 8px 0 8px;";pa.setAttribute("value","100 %");pa.style.width="60px";P.appendChild(pa);da.appendChild(P);H=document.createElement("div");H.style.cssText="text-align:right;margin:48px 0 0 0;";P=mxUtils.button(mxResources.get("cancel"),function(){u.hideDialog()});P.className="geBtn";u.editor.cancelFirst&&
-H.appendChild(P);u.isOffline()||(sa=mxUtils.button(mxResources.get("help"),function(){R.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),sa.className="geBtn",H.appendChild(sa));PrintDialog.previewEnabled&&(sa=mxUtils.button(mxResources.get("preview"),function(){u.hideDialog();T(!1)}),sa.className="geBtn",H.appendChild(sa));sa=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){u.hideDialog();T(!0)});sa.className="geBtn gePrimaryBtn";H.appendChild(sa);u.editor.cancelFirst||
-H.appendChild(P);da.appendChild(H);this.container=da};var S=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=
-this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else S.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 ha=document.createElement("canvas"),la=new Image;la.onload=function(){try{ha.getContext("2d").drawImage(la,0,0);var u=ha.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=u&&6<u.length}catch(H){}};la.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
+"/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(u){var H=null;null!=u&&0<u.length&&("ER"==u.substring(0,2)?H="mxgraph.er":"sysML"==u.substring(0,5)&&(H="mxgraph.sysml"));return H};var ea=mxMarker.createMarker;mxMarker.createMarker=
+function(u,H,P,T,S,da,R,ma,ra,xa){if(null!=P&&null==mxMarker.markers[P]){var ta=this.getPackageForType(P);null!=ta&&mxStencilRegistry.getStencil(ta)}return ea.apply(this,arguments)};var O=mxStencil.prototype.drawShape;mxStencil.prototype.drawShape=function(u,H,P,T,S,da){"1"==mxUtils.getValue(H.style,"lineShape",null)&&u.setFillColor(mxUtils.getValue(H.style,mxConstants.STYLE_STROKECOLOR,this.stroke));return O.apply(this,arguments)};PrintDialog.prototype.create=function(u,H){function P(){Ca.value=
+Math.max(1,Math.min(ma,Math.max(parseInt(Ca.value),parseInt(Aa.value))));Aa.value=Math.max(1,Math.min(ma,Math.min(parseInt(Ca.value),parseInt(Aa.value))))}function T(za){function Da(ab,db,kb){var ib=ab.useCssTransforms,ob=ab.currentTranslate,vb=ab.currentScale,nb=ab.view.translate,Bb=ab.view.scale;ab.useCssTransforms&&(ab.useCssTransforms=!1,ab.currentTranslate=new mxPoint(0,0),ab.currentScale=1,ab.view.translate=new mxPoint(0,0),ab.view.scale=1);var yb=ab.getGraphBounds(),mb=0,pb=0,gb=ua.get(),rb=
+1/ab.pageScale,tb=Oa.checked;if(tb){rb=parseInt(ha.value);var zb=parseInt(na.value);rb=Math.min(gb.height*zb/(yb.height/ab.view.scale),gb.width*rb/(yb.width/ab.view.scale))}else rb=parseInt(Ta.value)/(100*ab.pageScale),isNaN(rb)&&(Ma=1/ab.pageScale,Ta.value="100 %");gb=mxRectangle.fromRectangle(gb);gb.width=Math.ceil(gb.width*Ma);gb.height=Math.ceil(gb.height*Ma);rb*=Ma;!tb&&ab.pageVisible?(yb=ab.getPageLayout(),mb-=yb.x*gb.width,pb-=yb.y*gb.height):tb=!0;if(null==db){db=PrintDialog.createPrintPreview(ab,
+rb,gb,0,mb,pb,tb);db.pageSelector=!1;db.mathEnabled=!1;Ba.checked&&(db.isCellVisible=function(lb){return ab.isCellSelected(lb)});mb=u.getCurrentFile();null!=mb&&(db.title=mb.getTitle());var wb=db.writeHead;db.writeHead=function(lb){wb.apply(this,arguments);mxClient.IS_GC&&(lb.writeln('<style type="text/css">'),lb.writeln("@media print {"),lb.writeln(".MathJax svg { shape-rendering: crispEdges; }"),lb.writeln("}"),lb.writeln("</style>"));null!=u.editor.fontCss&&(lb.writeln('<style type="text/css">'),
+lb.writeln(u.editor.fontCss),lb.writeln("</style>"));for(var xb=ab.getCustomFonts(),c=0;c<xb.length;c++){var l=xb[c].name,x=xb[c].url;Graph.isCssFontUrl(x)?lb.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(x)+'" charset="UTF-8" type="text/css">'):(lb.writeln('<style type="text/css">'),lb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),lb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var Ab=db.renderPage;db.renderPage=
+function(lb,xb,c,l,x,p){var v=mxClient.NO_FO,A=Ab.apply(this,arguments);mxClient.NO_FO=v;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:A.className="geDisableMathJax";return A}}mb=null;pb=S.shapeForegroundColor;tb=S.shapeBackgroundColor;gb=S.enableFlowAnimation;S.enableFlowAnimation=!1;null!=S.themes&&"darkTheme"==S.defaultThemeName&&(mb=S.stylesheet,S.stylesheet=S.getDefaultStylesheet(),S.shapeForegroundColor="#000000",S.shapeBackgroundColor="#ffffff",S.refresh());db.open(null,null,
+kb,!0);S.enableFlowAnimation=gb;null!=mb&&(S.shapeForegroundColor=pb,S.shapeBackgroundColor=tb,S.stylesheet=mb,S.refresh())}else{gb=ab.background;if(null==gb||""==gb||gb==mxConstants.NONE)gb="#ffffff";db.backgroundColor=gb;db.autoOrigin=tb;db.appendGraph(ab,rb,mb,pb,kb,!0);kb=ab.getCustomFonts();if(null!=db.wnd)for(mb=0;mb<kb.length;mb++)pb=kb[mb].name,tb=kb[mb].url,Graph.isCssFontUrl(tb)?db.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(tb)+'" charset="UTF-8" type="text/css">'):
+(db.wnd.document.writeln('<style type="text/css">'),db.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(pb)+'";\nsrc: url("'+mxUtils.htmlEntities(tb)+'");\n}'),db.wnd.document.writeln("</style>"))}ib&&(ab.useCssTransforms=ib,ab.currentTranslate=ob,ab.currentScale=vb,ab.view.translate=nb,ab.view.scale=Bb);return db}var Ma=parseInt(pa.value)/100;isNaN(Ma)&&(Ma=1,pa.value="100 %");Ma*=.75;var La=null,Ua=S.shapeForegroundColor,Sa=S.shapeBackgroundColor;null!=S.themes&&"darkTheme"==
+S.defaultThemeName&&(La=S.stylesheet,S.stylesheet=S.getDefaultStylesheet(),S.shapeForegroundColor="#000000",S.shapeBackgroundColor="#ffffff",S.refresh());var Fa=Aa.value,va=Ca.value,ya=!xa.checked,Na=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(u,xa.checked,Fa,va,Oa.checked,ha.value,na.value,parseInt(Ta.value)/100,parseInt(pa.value)/100,ua.get());else{ya&&(ya=Ba.checked||Fa==ra&&va==ra);if(!ya&&null!=u.pages&&u.pages.length){var Ja=0;ya=u.pages.length-1;xa.checked||(Ja=parseInt(Fa)-1,
+ya=parseInt(va)-1);for(var Qa=Ja;Qa<=ya;Qa++){var Za=u.pages[Qa];Fa=Za==u.currentPage?S:null;if(null==Fa){Fa=u.createTemporaryGraph(S.stylesheet);Fa.shapeForegroundColor=S.shapeForegroundColor;Fa.shapeBackgroundColor=S.shapeBackgroundColor;va=!0;Ja=!1;var cb=null,fb=null;null==Za.viewState&&null==Za.root&&u.updatePageRoot(Za);null!=Za.viewState&&(va=Za.viewState.pageVisible,Ja=Za.viewState.mathEnabled,cb=Za.viewState.background,fb=Za.viewState.backgroundImage,Fa.extFonts=Za.viewState.extFonts);null!=
+fb&&null!=fb.originalSrc&&(fb=u.createImageForPageLink(fb.originalSrc,Za));Fa.background=cb;Fa.backgroundImage=null!=fb?new mxImage(fb.src,fb.width,fb.height,fb.x,fb.y):null;Fa.pageVisible=va;Fa.mathEnabled=Ja;var qb=Fa.getGraphBounds;Fa.getGraphBounds=function(){var ab=qb.apply(this,arguments),db=this.backgroundImage;if(null!=db&&null!=db.width&&null!=db.height){var kb=this.view.translate,ib=this.view.scale;ab=mxRectangle.fromRectangle(ab);ab.add(new mxRectangle((kb.x+db.x)*ib,(kb.y+db.y)*ib,db.width*
+ib,db.height*ib))}return ab};var ub=Fa.getGlobalVariable;Fa.getGlobalVariable=function(ab){return"page"==ab?Za.getName():"pagenumber"==ab?Qa+1:"pagecount"==ab?null!=u.pages?u.pages.length:1:ub.apply(this,arguments)};document.body.appendChild(Fa.container);u.updatePageRoot(Za);Fa.model.setRoot(Za.root)}Na=Da(Fa,Na,Qa!=ya);Fa!=S&&Fa.container.parentNode.removeChild(Fa.container)}}else Na=Da(S);null==Na?u.handleError({message:mxResources.get("errorUpdatingPreview")}):(Na.mathEnabled&&(ya=Na.wnd.document,
+za&&(Na.wnd.IMMEDIATE_PRINT=!0),ya.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),Na.closeDocument(),!Na.mathEnabled&&za&&PrintDialog.printPreview(Na));null!=La&&(S.shapeForegroundColor=Ua,S.shapeBackgroundColor=Sa,S.stylesheet=La,S.refresh())}}var S=u.editor.graph,da=document.createElement("div"),R=document.createElement("h3");R.style.width="100%";R.style.textAlign="center";R.style.marginTop="0px";mxUtils.write(R,H||mxResources.get("print"));da.appendChild(R);
+var ma=1,ra=1;R=document.createElement("div");R.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var xa=document.createElement("input");xa.style.cssText="margin-right:8px;margin-bottom:8px;";xa.setAttribute("value","all");xa.setAttribute("type","radio");xa.setAttribute("name","pages-printdialog");R.appendChild(xa);H=document.createElement("span");mxUtils.write(H,mxResources.get("printAllPages"));R.appendChild(H);mxUtils.br(R);var ta=xa.cloneNode(!0);xa.setAttribute("checked",
+"checked");ta.setAttribute("value","range");R.appendChild(ta);H=document.createElement("span");mxUtils.write(H,mxResources.get("pages")+":");R.appendChild(H);var Aa=document.createElement("input");Aa.style.cssText="margin:0 8px 0 8px;";Aa.setAttribute("value","1");Aa.setAttribute("type","number");Aa.setAttribute("min","1");Aa.style.width="50px";R.appendChild(Aa);H=document.createElement("span");mxUtils.write(H,mxResources.get("to"));R.appendChild(H);var Ca=Aa.cloneNode(!0);R.appendChild(Ca);mxEvent.addListener(Aa,
+"focus",function(){ta.checked=!0});mxEvent.addListener(Ca,"focus",function(){ta.checked=!0});mxEvent.addListener(Aa,"change",P);mxEvent.addListener(Ca,"change",P);if(null!=u.pages&&(ma=u.pages.length,null!=u.currentPage))for(H=0;H<u.pages.length;H++)if(u.currentPage==u.pages[H]){ra=H+1;Aa.value=ra;Ca.value=ra;break}Aa.setAttribute("max",ma);Ca.setAttribute("max",ma);u.isPagesEnabled()?1<ma&&(da.appendChild(R),ta.checked=!0):ta.checked=!0;mxUtils.br(R);var Ba=document.createElement("input");Ba.setAttribute("value",
+"all");Ba.setAttribute("type","radio");Ba.style.marginRight="8px";S.isSelectionEmpty()&&Ba.setAttribute("disabled","disabled");var sa=document.createElement("div");sa.style.marginBottom="10px";1==ma?(Ba.setAttribute("type","checkbox"),Ba.style.marginBottom="12px",sa.appendChild(Ba)):(Ba.setAttribute("name","pages-printdialog"),Ba.style.marginBottom="8px",R.appendChild(Ba));H=document.createElement("span");mxUtils.write(H,mxResources.get("selectionOnly"));Ba.parentNode.appendChild(H);1==ma&&mxUtils.br(Ba.parentNode);
+var Pa=document.createElement("input");Pa.style.marginRight="8px";Pa.setAttribute("value","adjust");Pa.setAttribute("type","radio");Pa.setAttribute("name","printZoom");sa.appendChild(Pa);H=document.createElement("span");mxUtils.write(H,mxResources.get("adjustTo"));sa.appendChild(H);var Ta=document.createElement("input");Ta.style.cssText="margin:0 8px 0 8px;";Ta.setAttribute("value","100 %");Ta.style.width="50px";sa.appendChild(Ta);mxEvent.addListener(Ta,"focus",function(){Pa.checked=!0});da.appendChild(sa);
+R=R.cloneNode(!1);var Oa=Pa.cloneNode(!0);Oa.setAttribute("value","fit");Pa.setAttribute("checked","checked");H=document.createElement("div");H.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";H.appendChild(Oa);R.appendChild(H);sa=document.createElement("table");sa.style.display="inline-block";var Xa=document.createElement("tbody"),Ga=document.createElement("tr"),eb=Ga.cloneNode(!0),bb=document.createElement("td"),z=bb.cloneNode(!0),K=bb.cloneNode(!0),M=bb.cloneNode(!0),U=
+bb.cloneNode(!0),W=bb.cloneNode(!0);bb.style.textAlign="right";M.style.textAlign="right";mxUtils.write(bb,mxResources.get("fitTo"));var ha=document.createElement("input");ha.style.cssText="margin:0 8px 0 8px;";ha.setAttribute("value","1");ha.setAttribute("min","1");ha.setAttribute("type","number");ha.style.width="40px";z.appendChild(ha);H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsAcross"));K.appendChild(H);mxUtils.write(M,mxResources.get("fitToBy"));var na=ha.cloneNode(!0);
+U.appendChild(na);mxEvent.addListener(ha,"focus",function(){Oa.checked=!0});mxEvent.addListener(na,"focus",function(){Oa.checked=!0});H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsDown"));W.appendChild(H);Ga.appendChild(bb);Ga.appendChild(z);Ga.appendChild(K);eb.appendChild(M);eb.appendChild(U);eb.appendChild(W);Xa.appendChild(Ga);Xa.appendChild(eb);sa.appendChild(Xa);R.appendChild(sa);da.appendChild(R);R=document.createElement("div");H=document.createElement("div");
+H.style.fontWeight="bold";H.style.marginBottom="12px";mxUtils.write(H,mxResources.get("paperSize"));R.appendChild(H);H=document.createElement("div");H.style.marginBottom="12px";var ua=PageSetupDialog.addPageFormatPanel(H,"printdialog",u.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);R.appendChild(H);H=document.createElement("span");mxUtils.write(H,mxResources.get("pageScale"));R.appendChild(H);var pa=document.createElement("input");pa.style.cssText="margin:0 8px 0 8px;";pa.setAttribute("value",
+"100 %");pa.style.width="60px";R.appendChild(pa);da.appendChild(R);H=document.createElement("div");H.style.cssText="text-align:right;margin:48px 0 0 0;";R=mxUtils.button(mxResources.get("cancel"),function(){u.hideDialog()});R.className="geBtn";u.editor.cancelFirst&&H.appendChild(R);u.isOffline()||(sa=mxUtils.button(mxResources.get("help"),function(){S.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),sa.className="geBtn",H.appendChild(sa));PrintDialog.previewEnabled&&(sa=mxUtils.button(mxResources.get("preview"),
+function(){u.hideDialog();T(!1)}),sa.className="geBtn",H.appendChild(sa));sa=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){u.hideDialog();T(!0)});sa.className="geBtn gePrimaryBtn";H.appendChild(sa);u.editor.cancelFirst||H.appendChild(R);da.appendChild(H);this.container=da};var N=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||
+(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else N.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"),la=new Image;la.onload=function(){try{ba.getContext("2d").drawImage(la,0,0);var u=ba.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=u&&6<u.length}catch(H){}};
+la.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};b.afterDecode=function(e,k,n){n.previousColor=n.color;n.previousImage=n.image;n.previousFormat=n.format;null!=n.foldingEnabled&&(n.foldingEnabled=!n.foldingEnabled);null!=n.mathEnabled&&(n.mathEnabled=!n.mathEnabled);null!=n.shadowVisible&&(n.shadowVisible=!n.shadowVisible);return n};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.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=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.1";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,m,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3371,7 +3373,7 @@ d;this.fireEvent(new mxEventObject("shareCursorPositionChanged"))};EditorUi.prot
this.editor.graph.defaultMathEnabled=d;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(d){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(d){return this.isOfflineApp()||!navigator.onLine||!d&&("1"==urlParams.stealth||"1"==urlParams.lockdown)};EditorUi.prototype.isExternalDataComms=function(){return"1"!=urlParams.offline&&!this.isOffline()&&!this.isOfflineApp()};
EditorUi.prototype.createSpinner=function(d,f,g){var m=null==d||null==f;g=null!=g?g:24;var q=new Spinner({lines:12,length:g,width:Math.round(g/3),radius:Math.round(g/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),y=q.spin;q.spin=function(C,I){var G=!1;this.active||(y.call(this,C),this.active=!0,null!=I&&(m&&(f=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,d=document.body.clientWidth/2-2),G=document.createElement("div"),
G.style.position="absolute",G.style.whiteSpace="nowrap",G.style.background="#4B4243",G.style.color="white",G.style.fontFamily=Editor.defaultHtmlFont,G.style.fontSize="9pt",G.style.padding="6px",G.style.paddingLeft="10px",G.style.paddingRight="10px",G.style.zIndex=2E9,G.style.left=Math.max(0,d)+"px",G.style.top=Math.max(0,f+70)+"px",mxUtils.setPrefixedStyle(G.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(G.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||mxUtils.setPrefixedStyle(G.style,
-"boxShadow","2px 2px 3px 0px #ddd"),"..."!=I.substring(I.length-3,I.length)&&"!"!=I.charAt(I.length-1)&&(I+="..."),G.innerHTML=I,C.appendChild(G),q.status=G),this.pause=mxUtils.bind(this,function(){var aa=function(){};this.active&&(aa=mxUtils.bind(this,function(){this.spin(C,I)}));this.stop();return aa}),G=!0);return G};var F=q.stop;q.stop=function(){F.call(this);this.active=!1;null!=q.status&&null!=q.status.parentNode&&q.status.parentNode.removeChild(q.status);q.status=null};q.pause=function(){return function(){}};
+"boxShadow","2px 2px 3px 0px #ddd"),"..."!=I.substring(I.length-3,I.length)&&"!"!=I.charAt(I.length-1)&&(I+="..."),G.innerHTML=I,C.appendChild(G),q.status=G),this.pause=mxUtils.bind(this,function(){var Z=function(){};this.active&&(Z=mxUtils.bind(this,function(){this.spin(C,I)}));this.stop();return Z}),G=!0);return G};var F=q.stop;q.stop=function(){F.call(this);this.active=!1;null!=q.status&&null!=q.status.parentNode&&q.status.parentNode.removeChild(q.status);q.status=null};q.pause=function(){return function(){}};
return q};EditorUi.prototype.isCompatibleString=function(d){try{var f=mxUtils.parseXml(d),g=this.editor.extractGraphModel(f.documentElement,!0);return null!=g&&0==g.getElementsByTagName("parsererror").length}catch(m){}return!1};EditorUi.prototype.isVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&
3==d.charCodeAt(2)&&4==d.charCodeAt(3)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&3==d.charCodeAt(2)&&6==d.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||60==d.charCodeAt(0)&&63==d.charCodeAt(1)&&120==d.charCodeAt(2)&&109==d.charCodeAt(3)&&108==d.charCodeAt(3))};var b=EditorUi.prototype.createKeyHandler;
EditorUi.prototype.createKeyHandler=function(d){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var g=f.getFunction,m=this.editor.graph,q=this;f.getFunction=function(y){if(m.isSelectionEmpty()&&null!=q.pages&&0<q.pages.length){var F=q.getSelectedPageIndex();if(mxEvent.isShiftDown(y)){if(37==y.keyCode)return function(){0<F&&q.movePage(F,F-1)};if(38==y.keyCode)return function(){0<F&&q.movePage(F,0)};if(39==y.keyCode)return function(){F<q.pages.length-1&&q.movePage(F,
@@ -3380,10 +3382,10 @@ var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGra
y?mxUtils.getXml(y):""}}catch(F){}return f};EditorUi.prototype.validateFileData=function(d){if(null!=d&&0<d.length){var f=d.indexOf('<meta charset="utf-8">');0<=f&&(d=d.slice(0,f)+'<meta charset="utf-8"/>'+d.slice(f+23-1,d.length));d=Graph.zapGremlins(d)}return d};EditorUi.prototype.replaceFileData=function(d){d=this.validateFileData(d);d=null!=d&&0<d.length?mxUtils.parseXml(d).documentElement:null;var f=null!=d?this.editor.extractGraphModel(d,!0):null;null!=f&&(d=f);if(null!=d){f=this.editor.graph;
f.model.beginUpdate();try{var g=null!=this.pages?this.pages.slice():null,m=d.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<m.length||1==m.length&&m[0].hasAttribute("name")){this.fileNode=d;this.pages=null!=this.pages?this.pages:[];for(var q=m.length-1;0<=q;q--){var y=this.updatePageRoot(new DiagramPage(m[q]));null==y.getName()&&y.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,y,0==q?y:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
d.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(d.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),f.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(d),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=g)for(q=0;q<g.length;q++)f.model.execute(new ChangePage(this,g[q],null))}finally{f.model.endUpdate()}}};EditorUi.prototype.createFileData=
-function(d,f,g,m,q,y,F,C,I,G,aa){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;I=null!=I?I:!0;var ca=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var ba="_blank";else ca=ba=m;if(null==d)return"";var Z=d;if("mxfile"!=Z.nodeName.toLowerCase()){if(aa){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Z=Graph.compress(qa);if(Graph.decompress(Z)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
-qa.setAttribute("id",Editor.guid());mxUtils.setTextContent(qa,Z)}Z=d.ownerDocument.createElement("mxfile");Z.appendChild(qa)}G?(Z=Z.cloneNode(!0),Z.removeAttribute("modified"),Z.removeAttribute("host"),Z.removeAttribute("agent"),Z.removeAttribute("etag"),Z.removeAttribute("userAgent"),Z.removeAttribute("version"),Z.removeAttribute("editor"),Z.removeAttribute("type")):(Z.removeAttribute("userAgent"),Z.removeAttribute("version"),Z.removeAttribute("editor"),Z.removeAttribute("pages"),Z.removeAttribute("type"),
-mxClient.IS_CHROMEAPP?Z.setAttribute("host","Chrome"):EditorUi.isElectronApp?Z.setAttribute("host","Electron"):Z.setAttribute("host",window.location.hostname),Z.setAttribute("modified",(new Date).toISOString()),Z.setAttribute("agent",navigator.appVersion),Z.setAttribute("version",EditorUi.VERSION),Z.setAttribute("etag",Editor.guid()),d=null!=g?g.getMode():this.mode,null!=d&&Z.setAttribute("type",d),1<Z.getElementsByTagName("diagram").length&&null!=this.pages&&Z.setAttribute("pages",this.pages.length));
-aa=aa?mxUtils.getPrettyXml(Z):mxUtils.getXml(Z);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))aa=this.getHtml2(mxUtils.getXml(Z),f,null!=g?g.getTitle():null,ba,ca);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(m=null),aa=this.getEmbeddedSvg(aa,f,m,null,C,I,ca);return aa};EditorUi.prototype.getXmlFileData=function(d,f,g,m){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
+function(d,f,g,m,q,y,F,C,I,G,Z){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;I=null!=I?I:!0;var ca=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var aa="_blank";else ca=aa=m;if(null==d)return"";var Y=d;if("mxfile"!=Y.nodeName.toLowerCase()){if(Z){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Y=Graph.compress(qa);if(Graph.decompress(Y)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
+qa.setAttribute("id",Editor.guid());mxUtils.setTextContent(qa,Y)}Y=d.ownerDocument.createElement("mxfile");Y.appendChild(qa)}G?(Y=Y.cloneNode(!0),Y.removeAttribute("modified"),Y.removeAttribute("host"),Y.removeAttribute("agent"),Y.removeAttribute("etag"),Y.removeAttribute("userAgent"),Y.removeAttribute("version"),Y.removeAttribute("editor"),Y.removeAttribute("type")):(Y.removeAttribute("userAgent"),Y.removeAttribute("version"),Y.removeAttribute("editor"),Y.removeAttribute("pages"),Y.removeAttribute("type"),
+mxClient.IS_CHROMEAPP?Y.setAttribute("host","Chrome"):EditorUi.isElectronApp?Y.setAttribute("host","Electron"):Y.setAttribute("host",window.location.hostname),Y.setAttribute("modified",(new Date).toISOString()),Y.setAttribute("agent",navigator.appVersion),Y.setAttribute("version",EditorUi.VERSION),Y.setAttribute("etag",Editor.guid()),d=null!=g?g.getMode():this.mode,null!=d&&Y.setAttribute("type",d),1<Y.getElementsByTagName("diagram").length&&null!=this.pages&&Y.setAttribute("pages",this.pages.length));
+Z=Z?mxUtils.getPrettyXml(Y):mxUtils.getXml(Y);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))Z=this.getHtml2(mxUtils.getXml(Y),f,null!=g?g.getTitle():null,aa,ca);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(m=null),Z=this.getEmbeddedSvg(Z,f,m,null,C,I,ca);return Z};EditorUi.prototype.getXmlFileData=function(d,f,g,m){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
m);if(d&&null!=this.fileNode&&null!=this.currentPage)if(d=function(I){var G=I.getElementsByTagName("mxGraphModel");G=0<G.length?G[0]:null;null==G&&g?(G=mxUtils.trim(mxUtils.getTextContent(I)),I=I.cloneNode(!1),0<G.length&&(G=Graph.decompress(G),null!=G&&0<G.length&&I.appendChild(mxUtils.parseXml(G).documentElement))):null==G||g?I=I.cloneNode(!0):(I=I.cloneNode(!1),mxUtils.setTextContent(I,Graph.compressNode(G)));q.appendChild(I)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(q)),q=this.fileNode.cloneNode(!1),f)d(this.currentPage.node);else for(f=0;f<this.pages.length;f++){var y=this.pages[f],F=y.node;if(y!=this.currentPage)if(y.needsUpdate){var C=new mxCodec(mxUtils.createXmlDocument());C=C.encode(new mxGraphModel(y.root));this.editor.graph.saveViewState(y.viewState,C,null,m);EditorUi.removeChildNodes(F);mxUtils.setTextContent(F,Graph.compressNode(C));delete y.needsUpdate}else m&&(this.updatePageRoot(y),null!=y.viewState.backgroundImage&&(null!=y.viewState.backgroundImage.originalSrc?
y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.originalSrc,y):Graph.isPageLink(y.viewState.backgroundImage.src)&&(y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.src,y))),null!=y.viewState.backgroundImage&&null!=y.viewState.backgroundImage.originalSrc&&(C=new mxCodec(mxUtils.createXmlDocument()),C=C.encode(new mxGraphModel(y.root)),this.editor.graph.saveViewState(y.viewState,C,null,m),F=F.cloneNode(!1),mxUtils.setTextContent(F,
@@ -3393,9 +3395,9 @@ function(d){if(null!=d[EditorUi.DIFF_INSERT])for(var f=0;f<d[EditorUi.DIFF_INSER
delete d[EditorUi.DIFF_UPDATE][m]}mxUtils.isEmptyObject(d[EditorUi.DIFF_UPDATE])&&delete d[EditorUi.DIFF_UPDATE]}return d};EditorUi.prototype.anonymizeAttributes=function(d,f){if(null!=d.attributes)for(var g=0;g<d.attributes.length;g++)"as"!=d.attributes[g].name&&d.setAttribute(d.attributes[g].name,this.anonymizeString(d.attributes[g].value,f));if(null!=d.childNodes)for(g=0;g<d.childNodes.length;g++)this.anonymizeAttributes(d.childNodes[g],f)};EditorUi.prototype.anonymizeNode=function(d,f){f=d.getElementsByTagName("mxCell");
for(var g=0;g<f.length;g++)null!=f[g].getAttribute("value")&&f[g].setAttribute("value","["+f[g].getAttribute("value").length+"]"),null!=f[g].getAttribute("xmlValue")&&f[g].setAttribute("xmlValue","["+f[g].getAttribute("xmlValue").length+"]"),null!=f[g].getAttribute("style")&&f[g].setAttribute("style","["+f[g].getAttribute("style").length+"]"),null!=f[g].parentNode&&"root"!=f[g].parentNode.nodeName&&null!=f[g].parentNode.parentNode&&(f[g].setAttribute("id",f[g].parentNode.getAttribute("id")),f[g].parentNode.parentNode.replaceChild(f[g],
f[g].parentNode));return d};EditorUi.prototype.synchronizeCurrentFile=function(d){var f=this.getCurrentFile();null!=f&&(f.savingFile?this.handleError({message:mxResources.get("busy")}):!d&&f.invalidChecksum?f.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(f.clearAutosave(),this.editor.setStatus(""),d?f.reloadFile(mxUtils.bind(this,function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)})):f.synchronizeFile(mxUtils.bind(this,
-function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,m,q,y,F,C,I,G,aa){q=null!=q?q:!0;y=null!=y?y:!1;var ca=this.editor.graph;if(f||!d&&null!=I&&/(\.svg)$/i.test(I.getTitle())){var ba=null!=ca.themes&&"darkTheme"==ca.defaultThemeName;G=!1;if(ba||null!=this.pages&&this.currentPage!=this.pages[0]){var Z=ca.getGlobalVariable;ca=this.createTemporaryGraph(ba?ca.getDefaultStylesheet():ca.getStylesheet());
-ca.setBackgroundImage=this.editor.graph.setBackgroundImage;ca.background=this.editor.graph.background;var qa=this.pages[0];this.currentPage==qa?ca.setBackgroundImage(this.editor.graph.backgroundImage):null!=qa.viewState&&null!=qa.viewState&&ca.setBackgroundImage(qa.viewState.backgroundImage);ca.getGlobalVariable=function(N){return"page"==N?qa.getName():"pagenumber"==N?1:Z.apply(this,arguments)};document.body.appendChild(ca.container);ca.model.setRoot(qa.root)}}F=null!=F?F:this.getXmlFileData(q,y,
-G,aa);I=null!=I?I:this.getCurrentFile();d=this.createFileData(F,ca,I,window.location.href,d,f,g,m,q,C,G);ca!=this.editor.graph&&ca.container.parentNode.removeChild(ca.container);return d};EditorUi.prototype.getHtml=function(d,f,g,m,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var I=f.view.scale;y=Math.floor(F.x/I-f.view.translate.x);I=Math.floor(F.y/I-f.view.translate.y);F=f.background;null==
+function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,m,q,y,F,C,I,G,Z){q=null!=q?q:!0;y=null!=y?y:!1;var ca=this.editor.graph;if(f||!d&&null!=I&&/(\.svg)$/i.test(I.getTitle())){var aa=null!=ca.themes&&"darkTheme"==ca.defaultThemeName;G=!1;if(aa||null!=this.pages&&this.currentPage!=this.pages[0]){var Y=ca.getGlobalVariable;ca=this.createTemporaryGraph(aa?ca.getDefaultStylesheet():ca.getStylesheet());
+ca.setBackgroundImage=this.editor.graph.setBackgroundImage;ca.background=this.editor.graph.background;var qa=this.pages[0];this.currentPage==qa?ca.setBackgroundImage(this.editor.graph.backgroundImage):null!=qa.viewState&&null!=qa.viewState&&ca.setBackgroundImage(qa.viewState.backgroundImage);ca.getGlobalVariable=function(Q){return"page"==Q?qa.getName():"pagenumber"==Q?1:Y.apply(this,arguments)};document.body.appendChild(ca.container);ca.model.setRoot(qa.root)}}F=null!=F?F:this.getXmlFileData(q,y,
+G,Z);I=null!=I?I:this.getCurrentFile();d=this.createFileData(F,ca,I,window.location.href,d,f,g,m,q,C,G);ca!=this.editor.graph&&ca.container.parentNode.removeChild(ca.container);return d};EditorUi.prototype.getHtml=function(d,f,g,m,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var I=f.view.scale;y=Math.floor(F.x/I-f.view.translate.x);I=Math.floor(F.y/I-f.view.translate.y);F=f.background;null==
q&&(f=this.getBasenames().join(";"),0<f.length&&(C=EditorUi.drawHost+"/embed.js?s="+f));d.setAttribute("x0",y);d.setAttribute("y0",I)}null!=d&&(d.setAttribute("pan","1"),d.setAttribute("zoom","1"),d.setAttribute("resize","0"),d.setAttribute("fit","0"),d.setAttribute("border","20"),d.setAttribute("links","1"),null!=m&&d.setAttribute("edit",m));null!=q&&(q=q.replace(/&/g,"&amp;"));d=null!=d?Graph.zapGremlins(mxUtils.getXml(d)):"";m=Graph.compress(d);Graph.decompress(m)!=d&&(m=encodeURIComponent(d));
return(null==q?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=q?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==q?null!=g?"<title>"+mxUtils.htmlEntities(g)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=q?'<meta http-equiv="refresh" content="0;URL=\''+q+"'\"/>\n":"")+"</head>\n<body"+(null==q&&null!=F&&F!=mxConstants.NONE?' style="background-color:'+F+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+
m+"</div>\n</div>\n"+(null==q?'<script type="text/javascript" src="'+C+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+q+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(d,f,g,m,q){f=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=q&&(q=q.replace(/&/g,"&amp;"));d={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
@@ -3405,19 +3407,19 @@ function(d){d=this.validateFileData(d);this.pages=this.fileNode=this.currentPage
"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){g=null;this.fileNode=f;this.pages=[];for(var m=0;m<d.length;m++)null==d[m].getAttribute("id")&&d[m].setAttribute("id",m),f=new DiagramPage(d[m]),null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[m+1])),this.pages.push(f),null!=urlParams["page-id"]&&f.getId()==urlParams["page-id"]&&(g=f);this.currentPage=null!=g?g:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];f=this.currentPage.node}"0"!=
urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(f.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(f);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var q=urlParams["layer-ids"].split(" ");f={};for(m=0;m<q.length;m++)f[q[m]]=!0;var y=this.editor.graph.getModel(),
F=y.getChildren(y.root);for(m=0;m<F.length;m++){var C=F[m];y.setVisible(C,f[C.id]||!1)}}catch(I){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
-0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,I,G,aa,ca){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Z=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Z,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
-ba),this.saveData(Z,d,qa,"text/html");else if("svg"!=d&&"xmlsvg"!=d||!this.spinner.spin(document.body,mxResources.get("export"))){if("xmlpng"==d)Z=ba+".png";else if("jpeg"==d)Z=ba+".jpg";else if("remoteSvg"==d){Z=ba+".svg";d="svg";var N=parseInt(I);"string"===typeof C&&0<C.indexOf("%")&&(C=parseInt(C)/100);if(0<N){var Y=this.editor.graph,ea=Y.getGraphBounds();var ka=Math.ceil(ea.width*C/Y.view.scale+2*N);var ja=Math.ceil(ea.height*C/Y.view.scale+2*N)}}this.saveRequest(Z,d,mxUtils.bind(this,function(S,
-ha){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var u=this.createDownloadRequest(S,d,m,ha,F,q,C,I,G,aa,ca,ka,ja);this.editor.graph.pageVisible=la;return u}catch(H){this.handleError(H)}}))}else{var V=null,J=mxUtils.bind(this,function(S){S.length<=MAX_REQUEST_SIZE?this.saveData(Z,"svg",S,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});if("svg"==d){var W=this.editor.graph.background;
-if(F||W==mxConstants.NONE)W=null;var Q=this.editor.graph.getSvg(W,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(Q);this.editor.convertImages(Q,mxUtils.bind(this,mxUtils.bind(this,function(S){this.spinner.stop();J(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(S))})))}else Z=ba+".svg",V=this.getFileData(!1,!0,null,mxUtils.bind(this,function(S){this.spinner.stop();J(S)}),m)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,C,I,
-G,aa,ca,ba){var Z=this.editor.graph,qa=Z.getGraphBounds();g=this.getFileData(!0,null,null,null,g,0==y?!1:"xmlpng"!=f,null,null,null,!1,"pdf"==f);var N="",Y="";if(qa.width*qa.height>MAX_AREA||g.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};G=G?"1":"0";"pdf"==f&&(null!=aa?Y="&from="+aa.from+"&to="+aa.to:0==y&&(Y="&allPages=1"));"xmlpng"==f&&(G="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(y=0;y<this.pages.length;y++)if(this.pages[y]==
-this.currentPage){N="&from="+y;break}y=Z.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Z.getExportVariables()};I&&(q.grid={size:Z.gridSize,steps:Z.view.gridSteps,color:Z.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+N+Y+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
-"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(ca&&isFinite(ca)?"&w="+ca:"")+(ba&&isFinite(ba)?"&h="+ba:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var m=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
+0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,I,G,Z,ca){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var aa=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=aa+("xml"==d||"pdf"==d&&Z?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Y,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
+aa),this.saveData(Y,d,qa,"text/html");else if("svg"!=d&&"xmlsvg"!=d||!this.spinner.spin(document.body,mxResources.get("export"))){if("xmlpng"==d)Y=aa+".png";else if("jpeg"==d)Y=aa+".jpg";else if("remoteSvg"==d){Y=aa+".svg";d="svg";var Q=parseInt(I);"string"===typeof C&&0<C.indexOf("%")&&(C=parseInt(C)/100);if(0<Q){var X=this.editor.graph,fa=X.getGraphBounds();var ka=Math.ceil(fa.width*C/X.view.scale+2*Q);var ia=Math.ceil(fa.height*C/X.view.scale+2*Q)}}this.saveRequest(Y,d,mxUtils.bind(this,function(N,
+ba){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var u=this.createDownloadRequest(N,d,m,ba,F,q,C,I,G,Z,ca,ka,ia);this.editor.graph.pageVisible=la;return u}catch(H){this.handleError(H)}}))}else{var V=null,L=mxUtils.bind(this,function(N){N.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",N,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});if("svg"==d){var ea=this.editor.graph.background;
+if(F||ea==mxConstants.NONE)ea=null;var O=this.editor.graph.getSvg(ea,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(O);this.editor.convertImages(O,mxUtils.bind(this,mxUtils.bind(this,function(N){this.spinner.stop();L(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(N))})))}else Y=aa+".svg",V=this.getFileData(!1,!0,null,mxUtils.bind(this,function(N){this.spinner.stop();L(N)}),m)}}catch(N){this.handleError(N)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,
+C,I,G,Z,ca,aa){var Y=this.editor.graph,qa=Y.getGraphBounds();g=this.getFileData(!0,null,null,null,g,0==y?!1:"xmlpng"!=f,null,null,null,!1,"pdf"==f);var Q="",X="";if(qa.width*qa.height>MAX_AREA||g.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};G=G?"1":"0";"pdf"==f&&(null!=Z?X="&from="+Z.from+"&to="+Z.to:0==y&&(X="&allPages=1"));"xmlpng"==f&&(G="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(y=0;y<this.pages.length;y++)if(this.pages[y]==
+this.currentPage){Q="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};I&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+Q+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
+"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(ca&&isFinite(ca)?"&w="+ca:"")+(aa&&isFinite(aa)?"&h="+aa:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var m=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
decodeURIComponent(urlParams.title):this.defaultFilename,!0);y.getHash=function(){return m};this.fileLoaded(y);"csv"==d.format&&this.importCsv(F,mxUtils.bind(this,function(ca){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=d.update){var C=null!=d.interval?parseInt(d.interval):6E4,I=null,G=mxUtils.bind(this,function(){var ca=this.currentPage;mxUtils.post(d.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
-function(ba){ca===this.currentPage&&(200<=ba.getStatus()&&300>=ba.getStatus()?(this.updateDiagram(ba.getText()),aa()):this.handleError({message:mxResources.get("error")+" "+ba.getStatus()}))}),mxUtils.bind(this,function(ba){this.handleError(ba)}))}),aa=mxUtils.bind(this,function(){window.clearTimeout(I);I=window.setTimeout(G,C)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){aa();G()}));aa();G()}null!=f&&f()});null!=d.url&&0<d.url.length?this.editor.loadUrl(d.url,mxUtils.bind(this,
-function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ja){var V=new mxCellOverlay(ja.image||q.warningImage,ja.tooltip,ja.align,ja.valign,ja.offset);V.addListener(mxEvent.CLICK,function(J,W){m.alert(ja.tooltip)});return V}var g=null,m=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
-d.firstChild;null!=d;){if("update"==d.nodeName){var C=y.getCell(d.getAttribute("id"));if(null!=C){try{var I=d.getAttribute("value");if(null!=I){var G=mxUtils.parseXml(I).documentElement;if(null!=G)if("1"==G.getAttribute("replace-value"))y.setValue(C,G);else for(var aa=G.attributes,ca=0;ca<aa.length;ca++)q.setAttributeForCell(C,aa[ca].nodeName,0<aa[ca].nodeValue.length?aa[ca].nodeValue:null)}}catch(ja){null!=window.console&&console.log("Error in value for "+C.id+": "+ja)}try{var ba=d.getAttribute("style");
-null!=ba&&q.model.setStyle(C,ba)}catch(ja){null!=window.console&&console.log("Error in style for "+C.id+": "+ja)}try{var Z=d.getAttribute("icon");if(null!=Z){var qa=0<Z.length?JSON.parse(Z):null;null!=qa&&qa.append||q.removeCellOverlays(C);null!=qa&&q.addCellOverlay(C,f(qa))}}catch(ja){null!=window.console&&console.log("Error in icon for "+C.id+": "+ja)}try{var N=d.getAttribute("geometry");if(null!=N){N=JSON.parse(N);var Y=q.getCellGeometry(C);if(null!=Y){Y=Y.clone();for(key in N){var ea=parseFloat(N[key]);
-"dx"==key?Y.x+=ea:"dy"==key?Y.y+=ea:"dw"==key?Y.width+=ea:"dh"==key?Y.height+=ea:Y[key]=parseFloat(N[key])}q.model.setGeometry(C,Y)}}}catch(ja){null!=window.console&&console.log("Error in icon for "+C.id+": "+ja)}}}else if("model"==d.nodeName){for(var ka=d.firstChild;null!=ka&&ka.nodeType!=mxConstants.NODETYPE_ELEMENT;)ka=ka.nextSibling;null!=ka&&(new mxCodec(d.firstChild)).decode(ka,y)}else if("view"==d.nodeName){if(d.hasAttribute("scale")&&(q.view.scale=parseFloat(d.getAttribute("scale"))),d.hasAttribute("dx")||
+function(aa){ca===this.currentPage&&(200<=aa.getStatus()&&300>=aa.getStatus()?(this.updateDiagram(aa.getText()),Z()):this.handleError({message:mxResources.get("error")+" "+aa.getStatus()}))}),mxUtils.bind(this,function(aa){this.handleError(aa)}))}),Z=mxUtils.bind(this,function(){window.clearTimeout(I);I=window.setTimeout(G,C)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){Z();G()}));Z();G()}null!=f&&f()});null!=d.url&&0<d.url.length?this.editor.loadUrl(d.url,mxUtils.bind(this,
+function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ia){var V=new mxCellOverlay(ia.image||q.warningImage,ia.tooltip,ia.align,ia.valign,ia.offset);V.addListener(mxEvent.CLICK,function(L,ea){m.alert(ia.tooltip)});return V}var g=null,m=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
+d.firstChild;null!=d;){if("update"==d.nodeName){var C=y.getCell(d.getAttribute("id"));if(null!=C){try{var I=d.getAttribute("value");if(null!=I){var G=mxUtils.parseXml(I).documentElement;if(null!=G)if("1"==G.getAttribute("replace-value"))y.setValue(C,G);else for(var Z=G.attributes,ca=0;ca<Z.length;ca++)q.setAttributeForCell(C,Z[ca].nodeName,0<Z[ca].nodeValue.length?Z[ca].nodeValue:null)}}catch(ia){null!=window.console&&console.log("Error in value for "+C.id+": "+ia)}try{var aa=d.getAttribute("style");
+null!=aa&&q.model.setStyle(C,aa)}catch(ia){null!=window.console&&console.log("Error in style for "+C.id+": "+ia)}try{var Y=d.getAttribute("icon");if(null!=Y){var qa=0<Y.length?JSON.parse(Y):null;null!=qa&&qa.append||q.removeCellOverlays(C);null!=qa&&q.addCellOverlay(C,f(qa))}}catch(ia){null!=window.console&&console.log("Error in icon for "+C.id+": "+ia)}try{var Q=d.getAttribute("geometry");if(null!=Q){Q=JSON.parse(Q);var X=q.getCellGeometry(C);if(null!=X){X=X.clone();for(key in Q){var fa=parseFloat(Q[key]);
+"dx"==key?X.x+=fa:"dy"==key?X.y+=fa:"dw"==key?X.width+=fa:"dh"==key?X.height+=fa:X[key]=parseFloat(Q[key])}q.model.setGeometry(C,X)}}}catch(ia){null!=window.console&&console.log("Error in icon for "+C.id+": "+ia)}}}else if("model"==d.nodeName){for(var ka=d.firstChild;null!=ka&&ka.nodeType!=mxConstants.NODETYPE_ELEMENT;)ka=ka.nextSibling;null!=ka&&(new mxCodec(d.firstChild)).decode(ka,y)}else if("view"==d.nodeName){if(d.hasAttribute("scale")&&(q.view.scale=parseFloat(d.getAttribute("scale"))),d.hasAttribute("dx")||
d.hasAttribute("dy"))q.view.translate=new mxPoint(parseFloat(d.getAttribute("dx")||0),parseFloat(d.getAttribute("dy")||0))}else"fit"==d.nodeName&&(F=d.hasAttribute("max-scale")?parseFloat(d.getAttribute("max-scale")):1);d=d.nextSibling}}finally{y.endUpdate()}null!=F&&this.chromelessResize&&this.chromelessResize(!0,F)}return g};EditorUi.prototype.getCopyFilename=function(d,f){var g=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;d="";var m=g.lastIndexOf(".");0<=m&&(d=g.substring(m),g=
g.substring(0,m));if(f){f=g;var q=new Date;g=q.getFullYear();m=q.getMonth()+1;var y=q.getDate(),F=q.getHours(),C=q.getMinutes();q=q.getSeconds();g=f+(" "+(g+"-"+m+"-"+y+"-"+F+"-"+C+"-"+q))}return g=mxResources.get("copyOf",[g])+d};EditorUi.prototype.fileLoaded=function(d,f){var g=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var m=!1;this.hideDialog();null!=g&&(EditorUi.debug("File.closed",[g]),g.removeListener(this.descriptorChangedListener),g.close());
this.editor.graph.model.clear();this.editor.undoManager.clear();var q=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=g&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!f&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerText="",this.fname.setAttribute("title",mxResources.get("rename")));
@@ -3426,64 +3428,64 @@ this.updateUi();d.isEditable()?d.isModified()?(d.addUnsavedStatus(),null!=d.back
this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));m=!0;if(!this.isOffline()&&null!=d.getMode()){var y="1"==urlParams.sketch?"sketch":uiTheme;if(null==y)y="default";else if("sketch"==y||"min"==y)y+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:d.getMode().toUpperCase()+"-OPEN-FILE-"+d.getHash(),action:"size_"+d.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+y})}EditorUi.debug("File.opened",[d]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));
if(this.editor.editable&&this.mode==d.getMode()&&d.getMode()!=App.MODE_DEVICE&&null!=d.getMode())try{this.addRecent({id:d.getHash(),title:d.getTitle(),mode:d.getMode()})}catch(F){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(F){}}catch(F){this.fileLoadedError=F;if(null!=d)try{d.close()}catch(C){}if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=d?d.getHash():"none"),action:"message_"+F.message,label:"stack_"+
F.stack})}catch(C){}d=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=g?this.fileLoaded(g)||q():q()});f?d():this.handleError(F,mxResources.get("errorLoadingFile"),d,!0,null,null,!0)}else q();return m};EditorUi.prototype.getHashValueForPages=function(d,f){var g=0,m=new mxGraphModel,q=new mxCodec;null!=f&&(f.byteCount=0,f.attrCount=0,f.eltCount=0,f.nodeCount=0);for(var y=0;y<d.length;y++){this.updatePageRoot(d[y]);
-var F=d[y].node.cloneNode(!1);F.removeAttribute("name");m.root=d[y].root;var C=q.encode(m);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(I,G,aa,ca){return!ca||"mxGeometry"!=I.nodeName&&"mxPoint"!=I.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?ca&&"mxCell"==I.nodeName&&
-"previous"==G?null:aa:Math.round(aa)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var m=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(m^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(m^=this.hashValue(y,
+var F=d[y].node.cloneNode(!1);F.removeAttribute("name");m.root=d[y].root;var C=q.encode(m);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(I,G,Z,ca){return!ca||"mxGeometry"!=I.nodeName&&"mxPoint"!=I.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?ca&&"mxCell"==I.nodeName&&
+"previous"==G?null:Z:Math.round(Z)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var m=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(m^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(m^=this.hashValue(y,
f,g)+this.hashValue(F,f,g))}}if(null!=d.childNodes)for(q=0;q<d.childNodes.length;q++)m=(m<<5)-m+this.hashValue(d.childNodes[q],f,g)<<0}else if(null!=d&&"function"!==typeof d){d=String(d);f=0;null!=g&&(g.byteCount+=d.length);for(q=0;q<d.length;q++)f=(f<<5)-f+d.charCodeAt(q)<<0;m^=f}return m};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(d,f,g,m,q,y,F){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||
mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(d){null==d&&(d=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,d,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(d){var f=mxUtils.createXmlDocument(),g=f.createElement("mxlibrary");mxUtils.setTextContent(g,JSON.stringify(d));f.appendChild(g);
return mxUtils.getXml(f)};EditorUi.prototype.closeLibrary=function(d){null!=d&&(this.removeLibrarySidebar(d.getHash()),d.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(d.getHash()),".scratchpad"==d.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(d){var f=this.sidebar.palettes[d];if(null!=f){for(var g=0;g<f.length;g++)f[g].parentNode.removeChild(f[g]);delete this.sidebar.palettes[d]}};EditorUi.prototype.repositionLibrary=function(d){var f=this.sidebar.container;
if(null==d){var g=this.sidebar.palettes["L.scratchpad"];null==g&&(g=this.sidebar.palettes.search);null!=g&&(d=g[g.length-1].nextSibling)}d=null!=d?d:f.firstChild.nextSibling.nextSibling;g=f.lastChild;var m=g.previousSibling;f.insertBefore(g,d);f.insertBefore(m,g)};EditorUi.prototype.loadLibrary=function(d,f){var g=mxUtils.parseXml(d.getData());if("mxlibrary"==g.documentElement.nodeName){var m=JSON.parse(mxUtils.getTextContent(g.documentElement));this.libraryLoaded(d,m,g.documentElement.getAttribute("title"),
-f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,m){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ja){0==ka.length&&d.isEditable()?
-(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ja.appendChild(y)):this.addLibraryEntries(ka,ja)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=m?m:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var I=C.parentNode.previousSibling;m=I.getAttribute("title");
-null!=m&&0<m.length&&".scratchpad"!=d.title&&I.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+m);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";I.style.position="relative";var aa=document.createElement("img");aa.setAttribute("src",Editor.crossImage);aa.setAttribute("title",mxResources.get("close"));aa.setAttribute("valign","absmiddle");aa.setAttribute("border","0");aa.style.position=
-"relative";aa.style.top="2px";aa.style.width="14px";aa.style.cursor="pointer";aa.style.margin="0 3px";Editor.isDarkMode()&&(aa.style.filter="invert(100%)");var ca=null;if(".scratchpad"!=d.title||this.closableScratchpad)G.appendChild(aa),mxEvent.addListener(aa,"click",mxUtils.bind(this,function(ka){if(!mxEvent.isConsumed(ka)){var ja=mxUtils.bind(this,function(){this.closeLibrary(d)});null!=ca?this.confirm(mxResources.get("allChangesLost"),null,ja,mxResources.get("cancel"),mxResources.get("discardChanges")):
-ja();mxEvent.consume(ka)}}));if(d.isEditable()){var ba=this.editor.graph,Z=null,qa=mxUtils.bind(this,function(ka){this.showLibraryDialog(d.getTitle(),C,f,d,d.getMode());mxEvent.consume(ka)}),N=mxUtils.bind(this,function(ka){d.setModified(!0);d.isAutosave()?(null!=Z&&null!=Z.parentNode&&Z.parentNode.removeChild(Z),Z=aa.cloneNode(!1),Z.setAttribute("src",Editor.spinImage),Z.setAttribute("title",mxResources.get("saving")),Z.style.cursor="default",Z.style.marginRight="2px",Z.style.marginTop="-2px",G.insertBefore(Z,
-G.firstChild),I.style.paddingRight=18*G.childNodes.length+"px",this.saveLibrary(d.getTitle(),f,d,d.getMode(),!0,!0,function(){null!=Z&&null!=Z.parentNode&&(Z.parentNode.removeChild(Z),I.style.paddingRight=18*G.childNodes.length+"px")})):null==ca&&(ca=aa.cloneNode(!1),ca.setAttribute("src",Editor.saveImage),ca.setAttribute("title",mxResources.get("save")),G.insertBefore(ca,G.firstChild),mxEvent.addListener(ca,"click",mxUtils.bind(this,function(ja){this.saveLibrary(d.getTitle(),f,d,d.getMode(),d.constructor==
-LocalLibrary,!0,function(){null==ca||d.isModified()||(I.style.paddingRight=18*G.childNodes.length+"px",ca.parentNode.removeChild(ca),ca=null)});mxEvent.consume(ja)})),I.style.paddingRight=18*G.childNodes.length+"px")}),Y=mxUtils.bind(this,function(ka,ja,V,J){ka=ba.cloneCells(mxUtils.sortCells(ba.model.getTopmostCells(ka)));for(var W=0;W<ka.length;W++){var Q=ba.getCellGeometry(ka[W]);null!=Q&&Q.translate(-ja.x,-ja.y)}C.appendChild(this.sidebar.createVertexTemplateFromCells(ka,ja.width,ja.height,J||
-"",!0,null,!1));ka={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(ka))),w:ja.width,h:ja.height};null!=J&&(ka.title=J);f.push(ka);N(V);null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)}),ea=mxUtils.bind(this,function(ka){if(ba.isSelectionEmpty())ba.getRubberband().isActive()?(ba.getRubberband().execute(ka),ba.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var ja=ba.getSelectionCells(),
-V=ba.view.getBounds(ja),J=ba.view.scale;V.x/=J;V.y/=J;V.width/=J;V.height/=J;V.x-=ba.view.translate.x;V.y-=ba.view.translate.y;Y(ja,V)}mxEvent.consume(ka)});mxEvent.addGestureListeners(C,function(){},mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler.first&&(ba.graphHandler.suspend(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility="hidden"),C.style.backgroundColor="#f1f3f4",C.style.cursor="copy",ba.panningManager.stop(),ba.autoScroll=!1,
-mxEvent.consume(ka))}),mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler&&(C.style.backgroundColor="",C.style.cursor="default",this.sidebar.showTooltips=!0,ba.panningManager.stop(),ba.graphHandler.reset(),ba.isMouseDown=!1,ba.autoScroll=!0,ea(ka),mxEvent.consume(ka))}));mxEvent.addListener(C,"mouseleave",mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.graphHandler.first&&(ba.graphHandler.resume(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility=
-"visible"),C.style.backgroundColor="",C.style.cursor="",ba.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(C,"dragover",mxUtils.bind(this,function(ka){C.style.backgroundColor="#f1f3f4";ka.dataTransfer.dropEffect="copy";C.style.cursor="copy";this.sidebar.hideTooltip();ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"drop",mxUtils.bind(this,function(ka){C.style.cursor="";C.style.backgroundColor="";0<ka.dataTransfer.files.length&&this.importFiles(ka.dataTransfer.files,0,0,
-this.maxImageSize,mxUtils.bind(this,function(ja,V,J,W,Q,S,ha,la,u){if(null!=ja&&"image/"==V.substring(0,6))ja="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ja),ja=[new mxCell("",new mxGeometry(0,0,Q,S),ja)],ja[0].vertex=!0,Y(ja,new mxRectangle(0,0,Q,S),ka,mxEvent.isAltDown(ka)?null:ha.substring(0,ha.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var H=!1,O=
-mxUtils.bind(this,function(T,R){null!=T&&"application/pdf"==R&&(R=Editor.extractGraphModelFromPdf(T),null!=R&&0<R.length&&(T=R));if(null!=T)if(T=mxUtils.parseXml(T),"mxlibrary"==T.documentElement.nodeName)try{var da=JSON.parse(mxUtils.getTextContent(T.documentElement));F(da,C);f=f.concat(da);N(ka);this.spinner.stop();H=!0}catch(xa){}else if("mxfile"==T.documentElement.nodeName)try{var P=T.documentElement.getElementsByTagName("diagram");for(da=0;da<P.length;da++){var ma=this.stringToCells(Editor.getDiagramNodeXml(P[da])),
-ra=this.editor.graph.getBoundingBoxFromGeometry(ma);Y(ma,new mxRectangle(0,0,ra.width,ra.height),ka)}H=!0}catch(xa){null!=window.console&&console.log("error in drop handler:",xa)}H||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=u&&null!=ha&&(/(\.v(dx|sdx?))($|\?)/i.test(ha)||/(\.vs(x|sx?))($|\?)/i.test(ha))?this.importVisio(u,function(T){O(T,"text/xml")},null,ha):(new XMLHttpRequest).upload&&
-this.isRemoteFileFormat(ja,ha)&&null!=u?this.isExternalDataComms()?this.parseFile(u,mxUtils.bind(this,function(T){4==T.readyState&&(this.spinner.stop(),200<=T.status&&299>=T.status?O(T.responseText,"text/xml"):this.handleError({message:mxResources.get(413==T.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):O(ja,V)}}));ka.stopPropagation();ka.preventDefault()})),
-mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});m=aa.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,
-G.firstChild);mxEvent.addListener(m,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}I.appendChild(G);I.style.paddingRight=
-18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
-m.w,m.h,m.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=d?d[mxLanguage]||d.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)}];"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(d,f,g,m,q,y,F){d=new ImageDialog(this,d,f,g,m,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,m){m||(g=new ChangePageSetup(this,null,g),
-g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,m,q){d=new LibraryDialog(this,d,f,g,m,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);
-this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(g){this.editor.graph.isSelectionEmpty()&&f.refresh()}));return f};EditorUi.prototype.createSidebarFooterContainer=function(){var d=this.createDiv("geSidebarContainer geSidebarFooter");d.style.position="absolute";d.style.overflow="hidden";var f=document.createElement("a");f.className="geTitle";f.style.color="#DF6C0C";f.style.fontWeight="bold";f.style.height="100%";f.style.paddingTop="9px";f.innerHTML="<span>+</span>";var g=
-f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(m){m.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(m){this.actions.get("shapes").funct();mxEvent.consume(m)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,m,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?
-this.spinner.pause():function(){},I=null!=d&&null!=d.error?d.error:d;if(null!=d&&("1"==urlParams.test||null!=d.stack)&&null!=d.message)try{F?null!=window.console&&console.error("EditorUi.handleError:",d):EditorUi.logError("Caught: "+(""==d.message&&null!=d.name)?d.name:d.message,d.filename,d.lineNumber,d.columnNumber,d,"INFO")}catch(Z){}if(null!=I||null!=f){F=mxUtils.htmlEntities(mxResources.get("unknownError"));var G=mxResources.get("ok"),aa=null;f=null!=f?f:mxResources.get("error");if(null!=I){null!=
-I.retry&&(G=mxResources.get("cancel"),aa=function(){C();I.retry()});if(404==I.code||404==I.status||403==I.code){F=403==I.code?null!=I.message?mxUtils.htmlEntities(I.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=q?q:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var ca=null!=q?null:null!=y?y:window.location.hash;if(null!=ca&&("#G"==ca.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==
-ca.substring(0,45))&&(null!=d&&null!=d.error&&(null!=d.error.errors&&0<d.error.errors.length&&"fileAccess"==d.error.errors[0].reason||null!=d.error.data&&0<d.error.data.length&&"fileAccess"==d.error.data[0].reason)||404==I.code||404==I.status)){ca="#U"==ca.substring(0,2)?ca.substring(45,ca.lastIndexOf("%26ex")):ca.substring(2);this.showError(f,F,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+ca);this.handleError(d,f,g,
-m,q)}),aa,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Z(){ea.innerText="";for(var ka=0;ka<qa.length;ka++){var ja=document.createElement("option");mxUtils.write(ja,qa[ka].displayName);ja.value=ka;ea.appendChild(ja);ja=document.createElement("option");ja.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ja,"<"+qa[ka].email+">");ja.setAttribute("disabled","disabled");ea.appendChild(ja)}ja=document.createElement("option");mxUtils.write(ja,mxResources.get("addAccount"));ja.value=qa.length;
-ea.appendChild(ja)}var qa=this.drive.getUsersList(),N=document.createElement("div"),Y=document.createElement("span");Y.style.marginTop="6px";mxUtils.write(Y,mxResources.get("changeUser")+": ");N.appendChild(Y);var ea=document.createElement("select");ea.style.width="200px";Z();mxEvent.addListener(ea,"change",mxUtils.bind(this,function(){var ka=ea.value,ja=qa.length!=ka;ja&&this.drive.setUser(qa[ka]);this.drive.authorize(ja,mxUtils.bind(this,function(){ja||(qa=this.drive.getUsersList(),Z())}),mxUtils.bind(this,
-function(V){this.handleError(V)}),!0)}));N.appendChild(ea);N=new CustomDialog(this,N,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(N.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=g&&g()}),480,150);return}}null!=I.message?F=""==I.message&&null!=I.name?mxUtils.htmlEntities(I.name):mxUtils.htmlEntities(I.message):null!=I.response&&null!=I.response.error?F=mxUtils.htmlEntities(I.response.error):
-"undefined"!==typeof window.App&&(I.code==App.ERROR_TIMEOUT?F=mxUtils.htmlEntities(mxResources.get("timeout")):I.code==App.ERROR_BUSY?F=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof I&&0<I.length&&(F=mxUtils.htmlEntities(I)))}var ba=y=null;null!=I&&null!=I.helpLink?(y=mxResources.get("help"),ba=mxUtils.bind(this,function(){return this.editor.graph.openLink(I.helpLink)})):null!=I&&null!=I.ownerEmail&&(y=mxResources.get("contactOwner"),F+=mxUtils.htmlEntities(" ("+y+": "+I.ownerEmail+
-")"),ba=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(I.ownerEmail))}));this.showError(f,F,G,g,aa,null,null,y,ba,null,null,null,m?g:null)}else null!=g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,m,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/
-50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},m,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};EditorUi.prototype.showBanner=function(d,f,g,m){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.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(y.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(y.style,"transition","all 1s ease");y.className="geBtn gePrimaryBtn";q=document.createElement("img");q.setAttribute("src",IMAGE_PATH+"/logo.png");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";y.appendChild(q);
-q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(m?"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");
-F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";if(!m){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var I=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||m)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=
-mxSettings.settings&&(mxSettings.settings["close"+d]=Date.now(),mxSettings.save()))});mxEvent.addListener(q,"click",mxUtils.bind(this,function(aa){mxEvent.consume(aa);I()}));var G=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){I()}),1E3)});mxEvent.addListener(y,"click",mxUtils.bind(this,function(aa){var ca=mxEvent.getSource(aa);ca!=F&&ca!=C?(null!=g&&g(),I(),mxEvent.consume(aa)):G()}));window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,m){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,
-"tEXt","mxfile",encodeURIComponent(f))),0<m&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",m));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,m,q){var y="jpeg"==g?"jpg":g;m=this.getBaseFilename(m)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(m,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!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(d,f){d=new TextareaDialog(this,d,f,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(d,f,g,m,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||
-/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)d=m?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,
-g,m);else{var F=document.createElement("a");y=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(m?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},
-2E4),F.click(),F.parentNode.removeChild(F)}catch(I){}}else this.createEchoRequest(d,f,g,m,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,m,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(m?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,m=Math.ceil(g/1024),q=Array(m),
-y=0;y<m;++y){for(var F=1024*y,C=Math.min(F+1024,g),I=Array(C-F),G=0;F<C;++G,++F)I[G]=d[F].charCodeAt(0);q[y]=new Uint8Array(I)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,m,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var I=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,aa){try{if("_blank"==aa)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,
-g,m);else if(null!=g&&"text/html"==g.substring(0,9)){var ca=new EmbedDialog(this,d);this.showDialog(ca.container,450,240,!0,!0);ca.init()}else{var ba=window.open("about:blank");null==ba?mxUtils.popup(d,!0):(ba.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),ba.document.close())}else aa==App.MODE_DEVICE||"download"==aa?this.doSaveLocalFile(d,G,g,m,null,C):null!=G&&0<G.length&&this.pickFolder(aa,mxUtils.bind(this,function(Z){try{this.exportFile(d,G,g,m,aa,Z)}catch(qa){this.handleError(qa)}}))}catch(Z){this.handleError(Z)}}),
-mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,y,F,null,1<q,I,d,g,m);y=this.isServices(q)?q>I?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var m=window.open("about:blank");null==m||null==m.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"!=f||this.editor.graph.mathEnabled?(d=g?d:btoa(unescape(encodeURIComponent(d))),m.document.write('<html><img style="max-width:100%;" src="data:'+
-f+";base64,"+d+'"/></html>')):m.document.write("<html>"+d+"</html>"):m.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),m.document.close())};var n=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(d){if(null!=urlParams.tags){this.tagsDialog=
-this.tagsComponent=null;var f=d(mxUtils.bind(this,function(m){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 q=f.getBoundingClientRect();this.tagsDialog.style.left=q.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+
+f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,m){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ia){0==ka.length&&d.isEditable()?
+(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ia.appendChild(y)):this.addLibraryEntries(ka,ia)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=m?m:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var I=C.parentNode.previousSibling;m=I.getAttribute("title");
+null!=m&&0<m.length&&".scratchpad"!=d.title&&I.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+m);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";I.style.position="relative";var Z=document.createElement("img");Z.setAttribute("src",Editor.crossImage);Z.setAttribute("title",mxResources.get("close"));Z.setAttribute("valign","absmiddle");Z.setAttribute("border","0");Z.style.position="relative";
+Z.style.top="2px";Z.style.width="14px";Z.style.cursor="pointer";Z.style.margin="0 3px";Editor.isDarkMode()&&(Z.style.filter="invert(100%)");var ca=null;if(".scratchpad"!=d.title||this.closableScratchpad)G.appendChild(Z),mxEvent.addListener(Z,"click",mxUtils.bind(this,function(ka){if(!mxEvent.isConsumed(ka)){var ia=mxUtils.bind(this,function(){this.closeLibrary(d)});null!=ca?this.confirm(mxResources.get("allChangesLost"),null,ia,mxResources.get("cancel"),mxResources.get("discardChanges")):ia();mxEvent.consume(ka)}}));
+if(d.isEditable()){var aa=this.editor.graph,Y=null,qa=mxUtils.bind(this,function(ka){this.showLibraryDialog(d.getTitle(),C,f,d,d.getMode());mxEvent.consume(ka)}),Q=mxUtils.bind(this,function(ka){d.setModified(!0);d.isAutosave()?(null!=Y&&null!=Y.parentNode&&Y.parentNode.removeChild(Y),Y=Z.cloneNode(!1),Y.setAttribute("src",Editor.spinImage),Y.setAttribute("title",mxResources.get("saving")),Y.style.cursor="default",Y.style.marginRight="2px",Y.style.marginTop="-2px",G.insertBefore(Y,G.firstChild),I.style.paddingRight=
+18*G.childNodes.length+"px",this.saveLibrary(d.getTitle(),f,d,d.getMode(),!0,!0,function(){null!=Y&&null!=Y.parentNode&&(Y.parentNode.removeChild(Y),I.style.paddingRight=18*G.childNodes.length+"px")})):null==ca&&(ca=Z.cloneNode(!1),ca.setAttribute("src",Editor.saveImage),ca.setAttribute("title",mxResources.get("save")),G.insertBefore(ca,G.firstChild),mxEvent.addListener(ca,"click",mxUtils.bind(this,function(ia){this.saveLibrary(d.getTitle(),f,d,d.getMode(),d.constructor==LocalLibrary,!0,function(){null==
+ca||d.isModified()||(I.style.paddingRight=18*G.childNodes.length+"px",ca.parentNode.removeChild(ca),ca=null)});mxEvent.consume(ia)})),I.style.paddingRight=18*G.childNodes.length+"px")}),X=mxUtils.bind(this,function(ka,ia,V,L){ka=aa.cloneCells(mxUtils.sortCells(aa.model.getTopmostCells(ka)));for(var ea=0;ea<ka.length;ea++){var O=aa.getCellGeometry(ka[ea]);null!=O&&O.translate(-ia.x,-ia.y)}C.appendChild(this.sidebar.createVertexTemplateFromCells(ka,ia.width,ia.height,L||"",!0,null,!1));ka={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(ka))),
+w:ia.width,h:ia.height};null!=L&&(ka.title=L);f.push(ka);Q(V);null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)}),fa=mxUtils.bind(this,function(ka){if(aa.isSelectionEmpty())aa.getRubberband().isActive()?(aa.getRubberband().execute(ka),aa.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var ia=aa.getSelectionCells(),V=aa.view.getBounds(ia),L=aa.view.scale;V.x/=L;V.y/=L;V.width/=L;V.height/=
+L;V.x-=aa.view.translate.x;V.y-=aa.view.translate.y;X(ia,V)}mxEvent.consume(ka)});mxEvent.addGestureListeners(C,function(){},mxUtils.bind(this,function(ka){aa.isMouseDown&&null!=aa.panningManager&&null!=aa.graphHandler.first&&(aa.graphHandler.suspend(),null!=aa.graphHandler.hint&&(aa.graphHandler.hint.style.visibility="hidden"),C.style.backgroundColor="#f1f3f4",C.style.cursor="copy",aa.panningManager.stop(),aa.autoScroll=!1,mxEvent.consume(ka))}),mxUtils.bind(this,function(ka){aa.isMouseDown&&null!=
+aa.panningManager&&null!=aa.graphHandler&&(C.style.backgroundColor="",C.style.cursor="default",this.sidebar.showTooltips=!0,aa.panningManager.stop(),aa.graphHandler.reset(),aa.isMouseDown=!1,aa.autoScroll=!0,fa(ka),mxEvent.consume(ka))}));mxEvent.addListener(C,"mouseleave",mxUtils.bind(this,function(ka){aa.isMouseDown&&null!=aa.graphHandler.first&&(aa.graphHandler.resume(),null!=aa.graphHandler.hint&&(aa.graphHandler.hint.style.visibility="visible"),C.style.backgroundColor="",C.style.cursor="",aa.autoScroll=
+!0)}));Graph.fileSupport&&(mxEvent.addListener(C,"dragover",mxUtils.bind(this,function(ka){C.style.backgroundColor="#f1f3f4";ka.dataTransfer.dropEffect="copy";C.style.cursor="copy";this.sidebar.hideTooltip();ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"drop",mxUtils.bind(this,function(ka){C.style.cursor="";C.style.backgroundColor="";0<ka.dataTransfer.files.length&&this.importFiles(ka.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(ia,V,L,ea,O,N,ba,la,u){if(null!=
+ia&&"image/"==V.substring(0,6))ia="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ia),ia=[new mxCell("",new mxGeometry(0,0,O,N),ia)],ia[0].vertex=!0,X(ia,new mxRectangle(0,0,O,N),ka,mxEvent.isAltDown(ka)?null:ba.substring(0,ba.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var H=!1,P=mxUtils.bind(this,function(T,S){null!=T&&"application/pdf"==S&&(S=Editor.extractGraphModelFromPdf(T),
+null!=S&&0<S.length&&(T=S));if(null!=T)if(T=mxUtils.parseXml(T),"mxlibrary"==T.documentElement.nodeName)try{var da=JSON.parse(mxUtils.getTextContent(T.documentElement));F(da,C);f=f.concat(da);Q(ka);this.spinner.stop();H=!0}catch(xa){}else if("mxfile"==T.documentElement.nodeName)try{var R=T.documentElement.getElementsByTagName("diagram");for(da=0;da<R.length;da++){var ma=this.stringToCells(Editor.getDiagramNodeXml(R[da])),ra=this.editor.graph.getBoundingBoxFromGeometry(ma);X(ma,new mxRectangle(0,0,
+ra.width,ra.height),ka)}H=!0}catch(xa){null!=window.console&&console.log("error in drop handler:",xa)}H||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=u&&null!=ba&&(/(\.v(dx|sdx?))($|\?)/i.test(ba)||/(\.vs(x|sx?))($|\?)/i.test(ba))?this.importVisio(u,function(T){P(T,"text/xml")},null,ba):(new XMLHttpRequest).upload&&this.isRemoteFileFormat(ia,ba)&&null!=u?this.isExternalDataComms()?
+this.parseFile(u,mxUtils.bind(this,function(T){4==T.readyState&&(this.spinner.stop(),200<=T.status&&299>=T.status?P(T.responseText,"text/xml"):this.handleError({message:mxResources.get(413==T.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):P(ia,V)}}));ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor=
+"";ka.stopPropagation();ka.preventDefault()}));Z=Z.cloneNode(!1);Z.setAttribute("src",Editor.editImage);Z.setAttribute("title",mxResources.get("edit"));G.insertBefore(Z,G.firstChild);mxEvent.addListener(Z,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});m=Z.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,G.firstChild);mxEvent.addListener(m,"click",fa);this.isOffline()||".scratchpad"!=d.title||
+null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}I.appendChild(G);I.style.paddingRight=18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=
+0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,m.w,m.h,m.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=
+d?d[mxLanguage]||d.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)}];"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(d,f,g,m,q,y,F){d=new ImageDialog(this,d,f,g,m,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,m){m||(g=new ChangePageSetup(this,null,g),g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,
+400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,m,q){d=new LibraryDialog(this,d,f,g,m,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(g){this.editor.graph.isSelectionEmpty()&&
+f.refresh()}));return f};EditorUi.prototype.createSidebarFooterContainer=function(){var d=this.createDiv("geSidebarContainer geSidebarFooter");d.style.position="absolute";d.style.overflow="hidden";var f=document.createElement("a");f.className="geTitle";f.style.color="#DF6C0C";f.style.fontWeight="bold";f.style.height="100%";f.style.paddingTop="9px";f.innerHTML="<span>+</span>";var g=f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+
+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(m){m.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(m){this.actions.get("shapes").funct();mxEvent.consume(m)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,m,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},I=null!=d&&null!=d.error?d.error:d;if(null!=d&&("1"==urlParams.test||null!=d.stack)&&null!=
+d.message)try{F?null!=window.console&&console.error("EditorUi.handleError:",d):EditorUi.logError("Caught: "+(""==d.message&&null!=d.name)?d.name:d.message,d.filename,d.lineNumber,d.columnNumber,d,"INFO")}catch(Y){}if(null!=I||null!=f){F=mxUtils.htmlEntities(mxResources.get("unknownError"));var G=mxResources.get("ok"),Z=null;f=null!=f?f:mxResources.get("error");if(null!=I){null!=I.retry&&(G=mxResources.get("cancel"),Z=function(){C();I.retry()});if(404==I.code||404==I.status||403==I.code){F=403==I.code?
+null!=I.message?mxUtils.htmlEntities(I.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=q?q:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var ca=null!=q?null:null!=y?y:window.location.hash;if(null!=ca&&("#G"==ca.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==ca.substring(0,45))&&(null!=d&&null!=d.error&&(null!=d.error.errors&&0<d.error.errors.length&&
+"fileAccess"==d.error.errors[0].reason||null!=d.error.data&&0<d.error.data.length&&"fileAccess"==d.error.data[0].reason)||404==I.code||404==I.status)){ca="#U"==ca.substring(0,2)?ca.substring(45,ca.lastIndexOf("%26ex")):ca.substring(2);this.showError(f,F,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+ca);this.handleError(d,f,g,m,q)}),Z,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Y(){fa.innerText=
+"";for(var ka=0;ka<qa.length;ka++){var ia=document.createElement("option");mxUtils.write(ia,qa[ka].displayName);ia.value=ka;fa.appendChild(ia);ia=document.createElement("option");ia.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ia,"<"+qa[ka].email+">");ia.setAttribute("disabled","disabled");fa.appendChild(ia)}ia=document.createElement("option");mxUtils.write(ia,mxResources.get("addAccount"));ia.value=qa.length;fa.appendChild(ia)}var qa=this.drive.getUsersList(),Q=document.createElement("div"),X=document.createElement("span");
+X.style.marginTop="6px";mxUtils.write(X,mxResources.get("changeUser")+": ");Q.appendChild(X);var fa=document.createElement("select");fa.style.width="200px";Y();mxEvent.addListener(fa,"change",mxUtils.bind(this,function(){var ka=fa.value,ia=qa.length!=ka;ia&&this.drive.setUser(qa[ka]);this.drive.authorize(ia,mxUtils.bind(this,function(){ia||(qa=this.drive.getUsersList(),Y())}),mxUtils.bind(this,function(V){this.handleError(V)}),!0)}));Q.appendChild(fa);Q=new CustomDialog(this,Q,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),
+!0)}));this.showDialog(Q.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=g&&g()}),480,150);return}}null!=I.message?F=""==I.message&&null!=I.name?mxUtils.htmlEntities(I.name):mxUtils.htmlEntities(I.message):null!=I.response&&null!=I.response.error?F=mxUtils.htmlEntities(I.response.error):"undefined"!==typeof window.App&&(I.code==App.ERROR_TIMEOUT?F=mxUtils.htmlEntities(mxResources.get("timeout")):I.code==App.ERROR_BUSY?F=mxUtils.htmlEntities(mxResources.get("busy")):
+"string"===typeof I&&0<I.length&&(F=mxUtils.htmlEntities(I)))}var aa=y=null;null!=I&&null!=I.helpLink?(y=mxResources.get("help"),aa=mxUtils.bind(this,function(){return this.editor.graph.openLink(I.helpLink)})):null!=I&&null!=I.ownerEmail&&(y=mxResources.get("contactOwner"),F+=mxUtils.htmlEntities(" ("+y+": "+I.ownerEmail+")"),aa=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(I.ownerEmail))}));this.showError(f,F,G,g,Z,null,null,y,aa,null,null,null,m?g:null)}else null!=
+g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,m,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},m,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};
+EditorUi.prototype.showBanner=function(d,f,g,m){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.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(y.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(y.style,
+"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(y.style,"transition","all 1s ease");y.className="geBtn gePrimaryBtn";q=document.createElement("img");q.setAttribute("src",IMAGE_PATH+"/logo.png");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";y.appendChild(q);q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(m?
+"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";
+if(!m){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var I=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||m)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+d]=Date.now(),mxSettings.save()))});mxEvent.addListener(q,
+"click",mxUtils.bind(this,function(Z){mxEvent.consume(Z);I()}));var G=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){I()}),1E3)});mxEvent.addListener(y,"click",mxUtils.bind(this,function(Z){var ca=mxEvent.getSource(Z);ca!=F&&ca!=C?(null!=g&&g(),I(),mxEvent.consume(Z)):G()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,
+3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,m){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,"tEXt","mxfile",encodeURIComponent(f))),0<m&&(d=Editor.writeGraphModelToPng(d,"pHYs",
+"dpi",m));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,m,q){var y="jpeg"==g?"jpg":g;m=this.getBaseFilename(m)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(m,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!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(d,f){d=new TextareaDialog(this,d,f,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(d,f,g,m,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&
+navigator.msSaveOrOpenBlob)d=m?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,g,m);else{var F=document.createElement("a");y=(null==navigator.userAgent||
+0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(m?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},2E4),F.click(),F.parentNode.removeChild(F)}catch(I){}}else this.createEchoRequest(d,
+f,g,m,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,m,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(m?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,m=Math.ceil(g/1024),q=Array(m),y=0;y<m;++y){for(var F=1024*y,C=Math.min(F+1024,g),I=Array(C-F),G=0;F<C;++G,++F)I[G]=
+d[F].charCodeAt(0);q[y]=new Uint8Array(I)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,m,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var I=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,Z){try{if("_blank"==Z)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,g,m);else if(null!=g&&"text/html"==g.substring(0,9)){var ca=new EmbedDialog(this,d);this.showDialog(ca.container,
+450,240,!0,!0);ca.init()}else{var aa=window.open("about:blank");null==aa?mxUtils.popup(d,!0):(aa.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),aa.document.close())}else Z==App.MODE_DEVICE||"download"==Z?this.doSaveLocalFile(d,G,g,m,null,C):null!=G&&0<G.length&&this.pickFolder(Z,mxUtils.bind(this,function(Y){try{this.exportFile(d,G,g,m,Z,Y)}catch(qa){this.handleError(qa)}}))}catch(Y){this.handleError(Y)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+!1,y,F,null,1<q,I,d,g,m);y=this.isServices(q)?q>I?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var m=window.open("about:blank");null==m||null==m.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"!=f||this.editor.graph.mathEnabled?(d=g?d:btoa(unescape(encodeURIComponent(d))),m.document.write('<html><img style="max-width:100%;" src="data:'+f+";base64,"+d+'"/></html>')):m.document.write("<html>"+d+"</html>"):
+m.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),m.document.close())};var n=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(d){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=d(mxUtils.bind(this,function(m){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 q=f.getBoundingClientRect();this.tagsDialog.style.left=q.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+
4+"px";q=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=q.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(m)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var m=this.editor.graph.getAllTags();f.style.display=0<m.length?"":"none"}))}n.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 g=d(mxUtils.bind(this,
@@ -3492,313 +3494,311 @@ this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.styl
this.exportDialog.style.zIndex=y.zIndex;var F=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});F.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(C){F.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var I=this.createImageDataUri(C,null,"png");C=document.createElement("img");C.style.maxWidth="140px";C.style.maxHeight=
"140px";C.style.cursor="pointer";C.style.backgroundColor="white";C.setAttribute("title",mxResources.get("openInNewWindow"));C.setAttribute("border","0");C.setAttribute("src",I);this.exportDialog.appendChild(C);mxEvent.addListener(C,"click",mxUtils.bind(this,function(){this.openInNewWindow(I.substring(I.indexOf(",")+1),"image/png",!0);q.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}),null,null,null,null,null,null,null,
Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",q);document.body.appendChild(this.exportDialog)}mxEvent.consume(m)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(d,f,g,m,q){this.isLocalFileSave()?this.saveLocalFile(g,d,m,q,f):this.saveRequest(d,f,mxUtils.bind(this,function(y,F){return this.createEchoRequest(g,y,m,q,f,F)}),g,q,m)};EditorUi.prototype.saveRequest=function(d,f,g,m,q,y,F){F=null!=F?F:!mxClient.IS_IOS||!navigator.standalone;
-var C=this.getServiceCount(!1);isLocalStorage&&C++;var I=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,aa){if("_blank"==aa||null!=G&&0<G.length){var ca=g("_blank"==aa?null:G,aa==App.MODE_DEVICE||"download"==aa||null==aa||"_blank"==aa?"0":"1");null!=ca&&(aa==App.MODE_DEVICE||"download"==aa||"_blank"==aa?ca.simulate(document,"_blank"):this.pickFolder(aa,mxUtils.bind(this,function(ba){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=m)try{this.exportFile(m,G,y,!0,aa,
-ba)}catch(Z){this.handleError(Z)}else this.spinner.spin(document.body,mxResources.get("saving"))&&ca.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=ca.getStatus()&&299>=ca.getStatus())try{this.exportFile(ca.getText(),G,y,!0,aa,ba)}catch(Z){this.handleError(Z)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(Z){this.spinner.stop();this.handleError(Z)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
-!1,!1,F,null,1<C,I,m,y,q);C=this.isServices(C)?4<C?390:280:160;this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,m,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba,Z){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();
-g=null!=g?g:qa;var N=f?null:this.editor.graph.background;N==mxConstants.NONE&&(N=null);null==N&&0==f&&(N=aa?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var Y=this.editor.graph.getSvg(N,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!ba,aa,ca);m&&this.editor.graph.addSvgShadow(Y);var ea=this.getBaseFilename()+(q?".drawio":"")+".svg";Z=null!=Z?Z:mxUtils.bind(this,function(V){this.isLocalFileSave()||V.length<=MAX_REQUEST_SIZE?this.saveData(ea,"svg",V,"image/svg+xml"):
-this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});var ka=mxUtils.bind(this,function(V){this.spinner.stop();q&&V.setAttribute("content",this.getFileData(!0,null,null,null,g,I,null,null,null,!1));Z(Graph.xmlDeclaration+"\n"+(q?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(V))});this.editor.graph.mathEnabled&&this.editor.addMathCss(Y);var ja=mxUtils.bind(this,function(V){y?(null==this.thumbImageCache&&
-(this.thumbImageCache={}),this.editor.convertImages(V,ka,this.thumbImageCache)):ka(V)});ba?this.embedFonts(Y,ja):(this.editor.addFontCss(Y),ja(Y))}catch(V){this.handleError(V)}};EditorUi.prototype.addRadiobox=function(d,f,g,m,q,y,F){return this.addCheckbox(d,g,m,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;var I=document.createElement("input");I.style.marginRight="8px";I.style.marginTop="16px";I.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();
-I.id=F;null!=C&&I.setAttribute("name",C);g&&(I.setAttribute("checked","checked"),I.defaultChecked=!0);m&&I.setAttribute("disabled","disabled");y&&(d.appendChild(I),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return I};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var m=this.getCurrentFile(),q="";null!=m&&m.getMode()!=App.MODE_DEVICE&&m.getMode()!=
-App.MODE_BROWSER&&(q=window.location.href);var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";m=document.createElement("option");m.setAttribute("value","blank");mxUtils.write(m,mxResources.get("makeCopy"));y.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom")+"...");y.appendChild(m);d.appendChild(y);mxEvent.addListener(y,
-"change",mxUtils.bind(this,function(){if("custom"==y.value){var F=new FilenameDialog(this,q,mxResources.get("ok"),function(C){null!=C?q=C:y.value="blank"},mxResources.get("url"),null,null,null,null,function(){y.value="blank"});this.showDialog(F.container,300,80,!0,!1);F.init()}}));mxEvent.addListener(g,"change",mxUtils.bind(this,function(){g.checked&&(null==f||f.checked)?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));mxUtils.br(d);return{getLink:function(){return g.checked?
-"blank"===y.value?"_blank":q:null},getEditInput:function(){return g},getEditSelect:function(){return y}}};EditorUi.prototype.addLinkSection=function(d,f){function g(){var C=document.createElement("div");C.style.width="100%";C.style.height="100%";C.style.boxSizing="border-box";null!=y&&y!=mxConstants.NONE?(C.style.border="1px solid black",C.style.backgroundColor=y):(C.style.backgroundPosition="center center",C.style.backgroundRepeat="no-repeat",C.style.backgroundImage="url('"+Dialog.prototype.closeImage+
-"')");F.innerText="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+":");var m=document.createElement("select");m.style.width="100px";m.style.padding="0px";m.style.marginLeft="8px";m.style.marginRight="10px";m.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));m.appendChild(q);
-q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,mxResources.get("openInThisWindow"));m.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),m.appendChild(f));d.appendChild(m);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(I){y=I;g()});
-mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return m.value},focus:function(){m.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,m,q,y,F){F=null!=F?F:[];m&&("https://viewer.diagrams.net"==
-EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,m,q,y,F,C,
-I,G){I=this.createUrlParameters(d,f,g,m,q,y,I);d=this.getCurrentFile();f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&I.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(I.push("open="+
-g.substring(1)),g="");return(m&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<I.length?"?"+I.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,m,q,y,F,C,I,G,aa,ca){this.getBasenames();var ba={};""!=q&&q!=mxConstants.NONE&&(ba.highlight=q);"auto"!==m&&(ba.target=m);G||(ba.lightbox=!1);ba.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||
-100==g||(ba.zoom=g/100);g=[];F&&(g.push("pages"),ba.resize=!0,null!=this.pages&&null!=this.currentPage&&(ba.page=mxUtils.indexOf(this.pages,this.currentPage)));f&&(g.push("zoom"),ba.resize=!0);C&&g.push("layers");I&&g.push("tags");0<g.length&&(G&&g.push("lightbox"),ba.toolbar=g.join(" "));null!=aa&&0<aa.length&&(ba.edit=aa);null!=d?ba.url=d:ba.xml=this.getFileData(!0,null,null,null,null,!F);f='<div class="mxgraph" style="'+(y?"max-width:100%;":"")+(""!=g?"border:1px solid transparent;":"")+'" data-mxgraph="'+
-mxUtils.htmlEntities(JSON.stringify(ba))+'"></div>';d=null!=d?"&fetch="+encodeURIComponent(d):"";ca(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"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(d,f,g,m){var q=document.createElement("div");
-q.style.whiteSpace="nowrap";var y=document.createElement("h3");mxUtils.write(y,mxResources.get("html"));y.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";q.appendChild(y);var F=document.createElement("div");F.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var C=document.createElement("input");C.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";C.setAttribute("value","url");C.setAttribute("type","radio");C.setAttribute("name",
-"type-embedhtmldialog");y=C.cloneNode(!0);y.setAttribute("value","copy");F.appendChild(y);var I=document.createElement("span");mxUtils.write(I,mxResources.get("includeCopyOfMyDiagram"));F.appendChild(I);mxUtils.br(F);F.appendChild(C);I=document.createElement("span");mxUtils.write(I,mxResources.get("publicDiagramUrl"));F.appendChild(I);var G=this.getCurrentFile();null==g&&null!=G&&G.constructor==window.DriveFile&&(I=document.createElement("a"),I.style.paddingLeft="12px",I.style.color="gray",I.style.cursor=
-"pointer",mxUtils.write(I,mxResources.get("share")),F.appendChild(I),mxEvent.addListener(I,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(G.getId())})));y.setAttribute("checked","checked");null==g&&C.setAttribute("disabled","disabled");q.appendChild(F);var aa=this.addLinkSection(q),ca=this.addCheckbox(q,mxResources.get("zoom"),!0,null,!0);mxUtils.write(q,":");var ba=document.createElement("input");ba.setAttribute("type","text");ba.style.marginRight="16px";ba.style.width=
-"60px";ba.style.marginLeft="4px";ba.style.marginRight="12px";ba.value="100%";q.appendChild(ba);var Z=this.addCheckbox(q,mxResources.get("fit"),!0);F=null!=this.pages&&1<this.pages.length;var qa=qa=this.addCheckbox(q,mxResources.get("allPages"),F,!F),N=this.addCheckbox(q,mxResources.get("layers"),!0),Y=this.addCheckbox(q,mxResources.get("tags"),!0),ea=this.addCheckbox(q,mxResources.get("lightbox"),!0),ka=null;F=380;if(EditorUi.enableHtmlEditOption){ka=this.addEditButton(q,ea);var ja=ka.getEditInput();
-ja.style.marginBottom="16px";F+=50;mxEvent.addListener(ea,"change",function(){ea.checked?ja.removeAttribute("disabled"):ja.setAttribute("disabled","disabled");ja.checked&&ea.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){m(C.checked?g:null,ca.checked,ba.value,aa.getTarget(),aa.getColor(),Z.checked,qa.checked,N.checked,Y.checked,ea.checked,null!=ka?ka.getLink():null)}),null,d,f);
-this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=function(d,f,g,m,q,y,F,C){var I=document.createElement("div");I.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";I.appendChild(G);var aa=this.getCurrentFile();d=0;if(null==aa||aa.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";
-else{d=80;F=null!=F?F:"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 ca=document.createElement("div");ca.style.whiteSpace="normal";mxUtils.write(ca,mxResources.get("linkAccountRequired"));G.appendChild(ca);ca=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(aa.getId())}));
-ca.style.marginTop="12px";ca.className="geBtn";G.appendChild(ca);I.appendChild(G);ca=document.createElement("a");ca.style.paddingLeft="12px";ca.style.color="gray";ca.style.fontSize="11px";ca.style.cursor="pointer";mxUtils.write(ca,mxResources.get("check"));G.appendChild(ca);mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(J){this.spinner.stop();J=new ErrorDialog(this,
-null,mxResources.get(null!=J?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(J.container,300,80,!0,!1);J.init()}))}))}var ba=null,Z=null;if(null!=g||null!=m)d+=30,mxUtils.write(I,mxResources.get("width")+":"),ba=document.createElement("input"),ba.setAttribute("type","text"),ba.style.marginRight="16px",ba.style.width="50px",ba.style.marginLeft="6px",ba.style.marginRight="16px",ba.style.marginBottom="10px",ba.value="100%",I.appendChild(ba),mxUtils.write(I,mxResources.get("height")+
-":"),Z=document.createElement("input"),Z.setAttribute("type","text"),Z.style.width="50px",Z.style.marginLeft="6px",Z.style.marginBottom="10px",Z.value=m+"px",I.appendChild(Z),mxUtils.br(I);var qa=this.addLinkSection(I,y);g=null!=this.pages&&1<this.pages.length;var N=null;if(null==aa||aa.constructor!=window.DriveFile||f)N=this.addCheckbox(I,mxResources.get("allPages"),g,!g);var Y=this.addCheckbox(I,mxResources.get("lightbox"),!0,null,null,!y),ea=this.addEditButton(I,Y),ka=ea.getEditInput();y&&(ka.style.marginLeft=
-Y.style.marginLeft,Y.style.display="none",d-=20);var ja=this.addCheckbox(I,mxResources.get("layers"),!0);ja.style.marginLeft=ka.style.marginLeft;ja.style.marginTop="8px";var V=this.addCheckbox(I,mxResources.get("tags"),!0);V.style.marginLeft=ka.style.marginLeft;V.style.marginBottom="16px";V.style.marginTop="16px";mxEvent.addListener(Y,"change",function(){Y.checked?(ja.removeAttribute("disabled"),ka.removeAttribute("disabled")):(ja.setAttribute("disabled","disabled"),ka.setAttribute("disabled","disabled"));
-ka.checked&&Y.checked?ea.getEditSelect().removeAttribute("disabled"):ea.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,I,mxUtils.bind(this,function(){q(qa.getTarget(),qa.getColor(),null==N?!0:N.checked,Y.checked,ea.getLink(),ja.checked,null!=ba?ba.value:null,null!=Z?Z.value:null,V.checked)}),null,mxResources.get("create"),F,C);this.showDialog(f.container,340,300+d,!0,!0);null!=ba?(ba.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?ba.select():document.execCommand("selectAll",
-!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";
-C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var I=document.createElement("input");I.setAttribute("type","text");I.style.marginRight="16px";I.style.width="60px";I.style.marginLeft="4px";I.value=this.lastExportBorder||"0";y.appendChild(I);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),aa=m?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),
-Editor.defaultIncludeDiagram);F=this.editor.graph;var ca=m?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=ca&&(ca.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var ba=parseInt(C.value)/100||1,Z=parseInt(I.value)||0;g(!G.checked,null!=aa?aa.checked:!1,null!=ca?ca.checked:!1,ba,Z)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(m?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
-function(d,f,g,m,q,y,F,C,I){F=null!=F?F:Editor.defaultIncludeDiagram;var G=document.createElement("div");G.style.whiteSpace="nowrap";var aa=this.editor.graph,ca="jpeg"==C?220:300,ba=document.createElement("h3");mxUtils.write(ba,d);ba.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(ba);mxUtils.write(G,mxResources.get("zoom")+":");var Z=document.createElement("input");Z.setAttribute("type","text");Z.style.marginRight="16px";Z.style.width="60px";Z.style.marginLeft=
-"4px";Z.style.marginRight="12px";Z.value=this.lastExportZoom||"100%";G.appendChild(Z);mxUtils.write(G,mxResources.get("borderWidth")+":");var qa=document.createElement("input");qa.setAttribute("type","text");qa.style.marginRight="16px";qa.style.width="60px";qa.style.marginLeft="4px";qa.value=this.lastExportBorder||"0";G.appendChild(qa);mxUtils.br(G);var N=this.addCheckbox(G,mxResources.get("selectionOnly"),!1,aa.isSelectionEmpty()),Y=document.createElement("input");Y.style.marginTop="16px";Y.style.marginRight=
-"8px";Y.style.marginLeft="24px";Y.setAttribute("disabled","disabled");Y.setAttribute("type","checkbox");var ea=document.createElement("select");ea.style.marginTop="16px";ea.style.marginLeft="8px";d=["selectionOnly","diagram","page"];var ka={};for(ba=0;ba<d.length;ba++)if(!aa.isSelectionEmpty()||"selectionOnly"!=d[ba]){var ja=document.createElement("option");mxUtils.write(ja,mxResources.get(d[ba]));ja.setAttribute("value",d[ba]);ea.appendChild(ja);ka[d[ba]]=ja}I?(mxUtils.write(G,mxResources.get("size")+
-":"),G.appendChild(ea),mxUtils.br(G),ca+=26,mxEvent.addListener(ea,"change",function(){"selectionOnly"==ea.value&&(N.checked=!0)})):y&&(G.appendChild(Y),mxUtils.write(G,mxResources.get("crop")),mxUtils.br(G),ca+=30,mxEvent.addListener(N,"change",function(){N.checked?Y.removeAttribute("disabled"):Y.setAttribute("disabled","disabled")}));aa.isSelectionEmpty()?I&&(N.style.display="none",N.nextSibling.style.display="none",N.nextSibling.nextSibling.style.display="none",ca-=30):(ea.value="diagram",Y.setAttribute("checked",
-"checked"),Y.defaultChecked=!0,mxEvent.addListener(N,"change",function(){ea.value=N.checked?"selectionOnly":"diagram"}));var V=this.addCheckbox(G,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=C),J=null;Editor.isDarkMode()&&(J=this.addCheckbox(G,mxResources.get("dark"),!0),ca+=26);var W=this.addCheckbox(G,mxResources.get("shadow"),aa.shadowVisible),Q=null;if("png"==C||"jpeg"==C)Q=this.addCheckbox(G,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),ca+=30;var S=
-this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),F,null,null,"jpeg"!=C);S.style.marginBottom="16px";var ha=document.createElement("input");ha.style.marginBottom="16px";ha.style.marginRight="8px";ha.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ha.setAttribute("disabled","disabled");var la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");
-y.setAttribute("value","none");mxUtils.write(y,mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ha.checked=!0,
-ha.setAttribute("disabled","disabled"),ka.page.style.display="none","page"==ea.value&&(ea.value="diagram"),W.checked=!1,W.setAttribute("disabled","disabled"),H.style.display="inline-block",u.style.display="none"):"disabled"==ha.getAttribute("disabled")&&(ha.checked=!1,ha.removeAttribute("disabled"),W.removeAttribute("disabled"),ka.page.style.display="",H.style.display="none",u.style.display="")}));f&&(G.appendChild(ha),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,
-mxResources.get("txtSettings")+":"),G.appendChild(la),mxUtils.br(G),ca+=60);var u=document.createElement("select");u.style.maxWidth="260px";u.style.marginLeft="8px";u.style.marginRight="10px";u.className="geBtn";f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));u.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));u.appendChild(f);f=document.createElement("option");
-f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));u.appendChild(f);var H=document.createElement("div");mxUtils.write(H,mxResources.get("LinksLost"));H.style.margin="7px";H.style.display="none";"svg"==C&&(mxUtils.write(G,mxResources.get("links")+":"),G.appendChild(u),G.appendChild(H),mxUtils.br(G),mxUtils.br(G),ca+=50);g=new CustomDialog(this,G,mxUtils.bind(this,function(){this.lastExportBorder=qa.value;this.lastExportZoom=Z.value;q(Z.value,V.checked,!N.checked,W.checked,
-S.checked,ha.checked,qa.value,Y.checked,!1,u.value,null!=Q?Q.checked:null,null!=J?J.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,ca,!0,!0,null,null,null,null,!0);Z.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Z.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;if(null!=
-f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var I=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),aa=this.addCheckbox(y,g),ca=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,ca),Z=ba.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),N=this.addCheckbox(y,mxResources.get("layers"),qa,!qa);
-N.style.marginLeft=Z.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(ca,"change",function(){ca.checked?(qa&&N.removeAttribute("disabled"),Z.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),Z.setAttribute("disabled","disabled"));Z.checked&&ca.checked?ba.getEditSelect().removeAttribute("disabled"):ba.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,y,mxUtils.bind(this,function(){d(I.checked,G.checked,aa.checked,
-ca.checked,ba.getLink(),N.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,m,q,y,F,C){function I(Z){var qa=" ",N="";m&&(qa=" 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!=aa?"&page="+aa:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",N+="cursor:pointer;");d&&(N+="max-width:100%;");var Y="";g&&(Y=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Z+'"'+Y+(""!=N?' style="'+N+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),aa=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Z){var qa=m?this.getFileData(!0):null;
-Z=this.createImageDataUri(Z,qa,"png");I(Z)}),null,null,null,mxUtils.bind(this,function(Z){C({message:mxResources.get("unknownError")})}),null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var ca="";g&&(ca="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var ba=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(m?"1":"0")+ca+"&xml="+encodeURIComponent(f));ba.send(mxUtils.bind(this,function(){200<=
-ba.getStatus()&&299>=ba.getStatus()?I("data:image/png;base64,"+ba.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,f,g,m,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),I=C.getElementsByTagName("a");if(null!=I)for(var G=0;G<I.length;G++){var aa=I[G].getAttribute("href");null!=aa&&"#"==aa.charAt(0)&&"_blank"==I[G].getAttribute("target")&&I[G].removeAttribute("target")}m&&
-C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var ca=" ",ba="";m&&(ca="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"+(q?"&edit=_blank":"")+(y?"&layers=1":
-"")+"');}})(this);\"",ba+="cursor:pointer;");d&&(ba+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Z){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Z))+'"'+(""!=ba?' style="'+ba+'"':"")+ca+"/>")}))}else ba="",m&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=f?"&page="+f:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}}})(this);"),ba+="cursor:pointer;"),d&&(d=parseInt(C.getAttribute("width")),q=parseInt(C.getAttribute("height")),C.setAttribute("viewBox","-0.5 -0.5 "+d+" "+q),ba+="max-width:100%;max-height:"+q+"px;",C.removeAttribute("height")),""!=ba&&C.setAttribute("style",ba),this.editor.addFontCss(C),this.editor.graph.mathEnabled&&this.editor.addMathCss(C),F(mxUtils.getXml(C))};EditorUi.prototype.timeSince=
+var C=this.getServiceCount(!1);isLocalStorage&&C++;var I=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,Z){if("_blank"==Z||null!=G&&0<G.length){var ca=g("_blank"==Z?null:G,Z==App.MODE_DEVICE||"download"==Z||null==Z||"_blank"==Z?"0":"1");null!=ca&&(Z==App.MODE_DEVICE||"download"==Z||"_blank"==Z?ca.simulate(document,"_blank"):this.pickFolder(Z,mxUtils.bind(this,function(aa){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=m)try{this.exportFile(m,G,y,!0,Z,aa)}catch(Y){this.handleError(Y)}else this.spinner.spin(document.body,
+mxResources.get("saving"))&&ca.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=ca.getStatus()&&299>=ca.getStatus())try{this.exportFile(ca.getText(),G,y,!0,Z,aa)}catch(Y){this.handleError(Y)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(Y){this.spinner.stop();this.handleError(Y)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,F,null,1<C,I,m,y,q);C=this.isServices(C)?4<C?390:280:160;
+this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,m,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa,Y){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();g=null!=g?g:qa;var Q=f?null:this.editor.graph.background;
+Q==mxConstants.NONE&&(Q=null);null==Q&&0==f&&(Q=Z?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var X=this.editor.graph.getSvg(Q,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!aa,Z,ca);m&&this.editor.graph.addSvgShadow(X);var fa=this.getBaseFilename()+(q?".drawio":"")+".svg";Y=null!=Y?Y:mxUtils.bind(this,function(V){this.isLocalFileSave()||V.length<=MAX_REQUEST_SIZE?this.saveData(fa,"svg",V,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},
+mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});var ka=mxUtils.bind(this,function(V){this.spinner.stop();q&&V.setAttribute("content",this.getFileData(!0,null,null,null,g,I,null,null,null,!1));Y(Graph.xmlDeclaration+"\n"+(q?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(V))});this.editor.graph.mathEnabled&&this.editor.addMathCss(X);var ia=mxUtils.bind(this,function(V){y?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(V,
+ka,this.thumbImageCache)):ka(V)});aa?this.embedFonts(X,ia):(this.editor.addFontCss(X),ia(X))}catch(V){this.handleError(V)}};EditorUi.prototype.addRadiobox=function(d,f,g,m,q,y,F){return this.addCheckbox(d,g,m,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;var I=document.createElement("input");I.style.marginRight="8px";I.style.marginTop="16px";I.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();I.id=F;null!=C&&I.setAttribute("name",C);g&&
+(I.setAttribute("checked","checked"),I.defaultChecked=!0);m&&I.setAttribute("disabled","disabled");y&&(d.appendChild(I),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return I};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var m=this.getCurrentFile(),q="";null!=m&&m.getMode()!=App.MODE_DEVICE&&m.getMode()!=App.MODE_BROWSER&&(q=window.location.href);
+var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";m=document.createElement("option");m.setAttribute("value","blank");mxUtils.write(m,mxResources.get("makeCopy"));y.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom")+"...");y.appendChild(m);d.appendChild(y);mxEvent.addListener(y,"change",mxUtils.bind(this,function(){if("custom"==
+y.value){var F=new FilenameDialog(this,q,mxResources.get("ok"),function(C){null!=C?q=C:y.value="blank"},mxResources.get("url"),null,null,null,null,function(){y.value="blank"});this.showDialog(F.container,300,80,!0,!1);F.init()}}));mxEvent.addListener(g,"change",mxUtils.bind(this,function(){g.checked&&(null==f||f.checked)?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));mxUtils.br(d);return{getLink:function(){return g.checked?"blank"===y.value?"_blank":q:null},getEditInput:function(){return g},
+getEditSelect:function(){return y}}};EditorUi.prototype.addLinkSection=function(d,f){function g(){var C=document.createElement("div");C.style.width="100%";C.style.height="100%";C.style.boxSizing="border-box";null!=y&&y!=mxConstants.NONE?(C.style.border="1px solid black",C.style.backgroundColor=y):(C.style.backgroundPosition="center center",C.style.backgroundRepeat="no-repeat",C.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");F.innerText="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+
+":");var m=document.createElement("select");m.style.width="100px";m.style.padding="0px";m.style.marginLeft="8px";m.style.marginRight="10px";m.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,
+mxResources.get("openInThisWindow"));m.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),m.appendChild(f));d.appendChild(m);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(I){y=I;g()});mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";
+F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return m.value},focus:function(){m.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,m,q,y,F){F=null!=F?F:[];m&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),
+"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,m,q,y,F,C,I,G){I=this.createUrlParameters(d,f,g,m,q,y,I);d=this.getCurrentFile();
+f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&I.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(I.push("open="+g.substring(1)),g="");return(m&&"1"!=urlParams.dev?EditorUi.lightboxHost:
+mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<I.length?"?"+I.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,m,q,y,F,C,I,G,Z,ca){this.getBasenames();var aa={};""!=q&&q!=mxConstants.NONE&&(aa.highlight=q);"auto"!==m&&(aa.target=m);G||(aa.lightbox=!1);aa.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||100==g||(aa.zoom=g/100);g=[];F&&(g.push("pages"),aa.resize=!0,null!=
+this.pages&&null!=this.currentPage&&(aa.page=mxUtils.indexOf(this.pages,this.currentPage)));f&&(g.push("zoom"),aa.resize=!0);C&&g.push("layers");I&&g.push("tags");0<g.length&&(G&&g.push("lightbox"),aa.toolbar=g.join(" "));null!=Z&&0<Z.length&&(aa.edit=Z);null!=d?aa.url=d:aa.xml=this.getFileData(!0,null,null,null,null,!F);f='<div class="mxgraph" style="'+(y?"max-width:100%;":"")+(""!=g?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(aa))+'"></div>';d=null!=
+d?"&fetch="+encodeURIComponent(d):"";ca(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"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(d,f,g,m){var q=document.createElement("div");q.style.whiteSpace="nowrap";var y=document.createElement("h3");
+mxUtils.write(y,mxResources.get("html"));y.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";q.appendChild(y);var F=document.createElement("div");F.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var C=document.createElement("input");C.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";C.setAttribute("value","url");C.setAttribute("type","radio");C.setAttribute("name","type-embedhtmldialog");y=C.cloneNode(!0);y.setAttribute("value",
+"copy");F.appendChild(y);var I=document.createElement("span");mxUtils.write(I,mxResources.get("includeCopyOfMyDiagram"));F.appendChild(I);mxUtils.br(F);F.appendChild(C);I=document.createElement("span");mxUtils.write(I,mxResources.get("publicDiagramUrl"));F.appendChild(I);var G=this.getCurrentFile();null==g&&null!=G&&G.constructor==window.DriveFile&&(I=document.createElement("a"),I.style.paddingLeft="12px",I.style.color="gray",I.style.cursor="pointer",mxUtils.write(I,mxResources.get("share")),F.appendChild(I),
+mxEvent.addListener(I,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(G.getId())})));y.setAttribute("checked","checked");null==g&&C.setAttribute("disabled","disabled");q.appendChild(F);var Z=this.addLinkSection(q),ca=this.addCheckbox(q,mxResources.get("zoom"),!0,null,!0);mxUtils.write(q,":");var aa=document.createElement("input");aa.setAttribute("type","text");aa.style.marginRight="16px";aa.style.width="60px";aa.style.marginLeft="4px";aa.style.marginRight="12px";
+aa.value="100%";q.appendChild(aa);var Y=this.addCheckbox(q,mxResources.get("fit"),!0);F=null!=this.pages&&1<this.pages.length;var qa=qa=this.addCheckbox(q,mxResources.get("allPages"),F,!F),Q=this.addCheckbox(q,mxResources.get("layers"),!0),X=this.addCheckbox(q,mxResources.get("tags"),!0),fa=this.addCheckbox(q,mxResources.get("lightbox"),!0),ka=null;F=380;if(EditorUi.enableHtmlEditOption){ka=this.addEditButton(q,fa);var ia=ka.getEditInput();ia.style.marginBottom="16px";F+=50;mxEvent.addListener(fa,
+"change",function(){fa.checked?ia.removeAttribute("disabled"):ia.setAttribute("disabled","disabled");ia.checked&&fa.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){m(C.checked?g:null,ca.checked,aa.value,Z.getTarget(),Z.getColor(),Y.checked,qa.checked,Q.checked,X.checked,fa.checked,null!=ka?ka.getLink():null)}),null,d,f);this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=
+function(d,f,g,m,q,y,F,C){var I=document.createElement("div");I.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";I.appendChild(G);var Z=this.getCurrentFile();d=0;if(null==Z||Z.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{d=80;F=null!=F?F:"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 ca=document.createElement("div");ca.style.whiteSpace="normal";mxUtils.write(ca,mxResources.get("linkAccountRequired"));G.appendChild(ca);ca=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(Z.getId())}));ca.style.marginTop="12px";ca.className="geBtn";G.appendChild(ca);I.appendChild(G);ca=document.createElement("a");
+ca.style.paddingLeft="12px";ca.style.color="gray";ca.style.fontSize="11px";ca.style.cursor="pointer";mxUtils.write(ca,mxResources.get("check"));G.appendChild(ca);mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(L){this.spinner.stop();L=new ErrorDialog(this,null,mxResources.get(null!=L?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(L.container,
+300,80,!0,!1);L.init()}))}))}var aa=null,Y=null;if(null!=g||null!=m)d+=30,mxUtils.write(I,mxResources.get("width")+":"),aa=document.createElement("input"),aa.setAttribute("type","text"),aa.style.marginRight="16px",aa.style.width="50px",aa.style.marginLeft="6px",aa.style.marginRight="16px",aa.style.marginBottom="10px",aa.value="100%",I.appendChild(aa),mxUtils.write(I,mxResources.get("height")+":"),Y=document.createElement("input"),Y.setAttribute("type","text"),Y.style.width="50px",Y.style.marginLeft=
+"6px",Y.style.marginBottom="10px",Y.value=m+"px",I.appendChild(Y),mxUtils.br(I);var qa=this.addLinkSection(I,y);g=null!=this.pages&&1<this.pages.length;var Q=null;if(null==Z||Z.constructor!=window.DriveFile||f)Q=this.addCheckbox(I,mxResources.get("allPages"),g,!g);var X=this.addCheckbox(I,mxResources.get("lightbox"),!0,null,null,!y),fa=this.addEditButton(I,X),ka=fa.getEditInput();y&&(ka.style.marginLeft=X.style.marginLeft,X.style.display="none",d-=20);var ia=this.addCheckbox(I,mxResources.get("layers"),
+!0);ia.style.marginLeft=ka.style.marginLeft;ia.style.marginTop="8px";var V=this.addCheckbox(I,mxResources.get("tags"),!0);V.style.marginLeft=ka.style.marginLeft;V.style.marginBottom="16px";V.style.marginTop="16px";mxEvent.addListener(X,"change",function(){X.checked?(ia.removeAttribute("disabled"),ka.removeAttribute("disabled")):(ia.setAttribute("disabled","disabled"),ka.setAttribute("disabled","disabled"));ka.checked&&X.checked?fa.getEditSelect().removeAttribute("disabled"):fa.getEditSelect().setAttribute("disabled",
+"disabled")});f=new CustomDialog(this,I,mxUtils.bind(this,function(){q(qa.getTarget(),qa.getColor(),null==Q?!0:Q.checked,X.checked,fa.getLink(),ia.checked,null!=aa?aa.value:null,null!=Y?Y.value:null,V.checked)}),null,mxResources.get("create"),F,C);this.showDialog(f.container,340,300+d,!0,!0);null!=aa?(aa.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?aa.select():document.execCommand("selectAll",!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,m,q){var y=
+document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";
+y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var I=document.createElement("input");I.setAttribute("type","text");I.style.marginRight="16px";I.style.width="60px";I.style.marginLeft="4px";I.value=this.lastExportBorder||"0";y.appendChild(I);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),Z=m?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram);F=this.editor.graph;var ca=
+m?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=ca&&(ca.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var aa=parseInt(C.value)/100||1,Y=parseInt(I.value)||0;g(!G.checked,null!=Z?Z.checked:!1,null!=ca?ca.checked:!1,aa,Y)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(m?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(d,f,g,m,q,y,F,C,I){F=null!=F?F:Editor.defaultIncludeDiagram;
+var G=document.createElement("div");G.style.whiteSpace="nowrap";var Z=this.editor.graph,ca="jpeg"==C?220:300,aa=document.createElement("h3");mxUtils.write(aa,d);aa.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(aa);mxUtils.write(G,mxResources.get("zoom")+":");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=this.lastExportZoom||
+"100%";G.appendChild(Y);mxUtils.write(G,mxResources.get("borderWidth")+":");var qa=document.createElement("input");qa.setAttribute("type","text");qa.style.marginRight="16px";qa.style.width="60px";qa.style.marginLeft="4px";qa.value=this.lastExportBorder||"0";G.appendChild(qa);mxUtils.br(G);var Q=this.addCheckbox(G,mxResources.get("selectionOnly"),!1,Z.isSelectionEmpty()),X=document.createElement("input");X.style.marginTop="16px";X.style.marginRight="8px";X.style.marginLeft="24px";X.setAttribute("disabled",
+"disabled");X.setAttribute("type","checkbox");var fa=document.createElement("select");fa.style.marginTop="16px";fa.style.marginLeft="8px";d=["selectionOnly","diagram","page"];var ka={};for(aa=0;aa<d.length;aa++)if(!Z.isSelectionEmpty()||"selectionOnly"!=d[aa]){var ia=document.createElement("option");mxUtils.write(ia,mxResources.get(d[aa]));ia.setAttribute("value",d[aa]);fa.appendChild(ia);ka[d[aa]]=ia}I?(mxUtils.write(G,mxResources.get("size")+":"),G.appendChild(fa),mxUtils.br(G),ca+=26,mxEvent.addListener(fa,
+"change",function(){"selectionOnly"==fa.value&&(Q.checked=!0)})):y&&(G.appendChild(X),mxUtils.write(G,mxResources.get("crop")),mxUtils.br(G),ca+=30,mxEvent.addListener(Q,"change",function(){Q.checked?X.removeAttribute("disabled"):X.setAttribute("disabled","disabled")}));Z.isSelectionEmpty()?I&&(Q.style.display="none",Q.nextSibling.style.display="none",Q.nextSibling.nextSibling.style.display="none",ca-=30):(fa.value="diagram",X.setAttribute("checked","checked"),X.defaultChecked=!0,mxEvent.addListener(Q,
+"change",function(){fa.value=Q.checked?"selectionOnly":"diagram"}));var V=this.addCheckbox(G,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=C),L=null;Editor.isDarkMode()&&(L=this.addCheckbox(G,mxResources.get("dark"),!0),ca+=26);var ea=this.addCheckbox(G,mxResources.get("shadow"),Z.shadowVisible),O=null;if("png"==C||"jpeg"==C)O=this.addCheckbox(G,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),ca+=30;var N=this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),
+F,null,null,"jpeg"!=C);N.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 la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");y.setAttribute("value","none");mxUtils.write(y,
+mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ba.checked=!0,ba.setAttribute("disabled","disabled"),ka.page.style.display=
+"none","page"==fa.value&&(fa.value="diagram"),ea.checked=!1,ea.setAttribute("disabled","disabled"),H.style.display="inline-block",u.style.display="none"):"disabled"==ba.getAttribute("disabled")&&(ba.checked=!1,ba.removeAttribute("disabled"),ea.removeAttribute("disabled"),ka.page.style.display="",H.style.display="none",u.style.display="")}));f&&(G.appendChild(ba),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,mxResources.get("txtSettings")+":"),G.appendChild(la),mxUtils.br(G),
+ca+=60);var u=document.createElement("select");u.style.maxWidth="260px";u.style.marginLeft="8px";u.style.marginRight="10px";u.className="geBtn";f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));u.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));u.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));
+u.appendChild(f);var H=document.createElement("div");mxUtils.write(H,mxResources.get("LinksLost"));H.style.margin="7px";H.style.display="none";"svg"==C&&(mxUtils.write(G,mxResources.get("links")+":"),G.appendChild(u),G.appendChild(H),mxUtils.br(G),mxUtils.br(G),ca+=50);g=new CustomDialog(this,G,mxUtils.bind(this,function(){this.lastExportBorder=qa.value;this.lastExportZoom=Y.value;q(Y.value,V.checked,!Q.checked,ea.checked,N.checked,ba.checked,qa.value,X.checked,!1,u.value,null!=O?O.checked:null,null!=
+L?L.checked:null,fa.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,ca,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";
+y.appendChild(C)}var I=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),Z=this.addCheckbox(y,g),ca=this.addCheckbox(y,mxResources.get("lightbox"),!0),aa=this.addEditButton(y,ca),Y=aa.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),Q=this.addCheckbox(y,mxResources.get("layers"),qa,!qa);Q.style.marginLeft=Y.style.marginLeft;Q.style.marginBottom="12px";Q.style.marginTop="8px";mxEvent.addListener(ca,"change",function(){ca.checked?
+(qa&&Q.removeAttribute("disabled"),Y.removeAttribute("disabled")):(Q.setAttribute("disabled","disabled"),Y.setAttribute("disabled","disabled"));Y.checked&&ca.checked?aa.getEditSelect().removeAttribute("disabled"):aa.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,y,mxUtils.bind(this,function(){d(I.checked,G.checked,Z.checked,ca.checked,aa.getLink(),Q.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=
+function(d,f,g,m,q,y,F,C){function I(Y){var qa=" ",Q="";m&&(qa=" 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!=Z?"&page="+Z:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",Q+=
+"cursor:pointer;");d&&(Q+="max-width:100%;");var X="";g&&(X=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Y+'"'+X+(""!=Q?' style="'+Q+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),Z=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Y){var qa=m?this.getFileData(!0):null;Y=this.createImageDataUri(Y,qa,"png");I(Y)}),null,null,null,mxUtils.bind(this,function(Y){C({message:mxResources.get("unknownError")})}),
+null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var ca="";g&&(ca="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var aa=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(m?"1":"0")+ca+"&xml="+encodeURIComponent(f));aa.send(mxUtils.bind(this,function(){200<=aa.getStatus()&&299>=aa.getStatus()?I("data:image/png;base64,"+aa.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};
+EditorUi.prototype.createEmbedSvg=function(d,f,g,m,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),I=C.getElementsByTagName("a");if(null!=I)for(var G=0;G<I.length;G++){var Z=I[G].getAttribute("href");null!=Z&&"#"==Z.charAt(0)&&"_blank"==I[G].getAttribute("target")&&I[G].removeAttribute("target")}m&&C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var ca=" ",aa="";m&&(ca="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"+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",aa+="cursor:pointer;");d&&(aa+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Y){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Y))+'"'+(""!=aa?' style="'+aa+'"':"")+ca+"/>")}))}else aa="",m&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
+EditorUi.lightboxHost+"/?client=1"+(null!=f?"&page="+f:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}}})(this);"),aa+="cursor:pointer;"),d&&(d=parseInt(C.getAttribute("width")),q=parseInt(C.getAttribute("height")),C.setAttribute("viewBox","-0.5 -0.5 "+d+" "+q),aa+="max-width:100%;max-height:"+q+"px;",C.removeAttribute("height")),""!=aa&&C.setAttribute("style",aa),this.editor.addFontCss(C),this.editor.graph.mathEnabled&&this.editor.addMathCss(C),F(mxUtils.getXml(C))};EditorUi.prototype.timeSince=
function(d){d=Math.floor((new Date-d)/1E3);var f=Math.floor(d/31536E3);if(1<f)return f+" "+mxResources.get("years");f=Math.floor(d/2592E3);if(1<f)return f+" "+mxResources.get("months");f=Math.floor(d/86400);if(1<f)return f+" "+mxResources.get("days");f=Math.floor(d/3600);if(1<f)return f+" "+mxResources.get("hours");f=Math.floor(d/60);return 1<f?f+" "+mxResources.get("minutes"):1==f?f+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(d,f){if(null!=d){var g=null;if("diagram"==
d.nodeName)g=d;else if("mxfile"==d.nodeName){var m=d.getElementsByTagName("diagram");if(0<m.length){g=m[0];var q=f.getGlobalVariable;f.getGlobalVariable=function(y){return"page"==y?g.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==y?1:q.apply(this,arguments)}}}null!=g&&(d=Editor.parseDiagramNode(g))}m=this.editor.graph;try{this.editor.graph=f,this.editor.setGraphXml(d)}catch(y){}finally{this.editor.graph=m}return d};EditorUi.prototype.getPngFileProperties=function(d){var f=
1,g=0;if(null!=d){if(d.hasAttribute("scale")){var m=parseFloat(d.getAttribute("scale"));!isNaN(m)&&0<m&&(f=m)}d.hasAttribute("border")&&(m=parseInt(d.getAttribute("border")),!isNaN(m)&&0<m&&(g=m))}return{scale:f,border:g}};EditorUi.prototype.getEmbeddedPng=function(d,f,g,m,q){try{var y=this.editor.graph,F=null!=y.themes&&"darkTheme"==y.defaultThemeName,C=null;if(null!=g&&0<g.length)y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet()),document.body.appendChild(y.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,
-!0),y),C=g;else if(F||null!=this.pages&&this.currentPage!=this.pages[0]){y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet());var I=y.getGlobalVariable;y.setBackgroundImage=this.editor.graph.setBackgroundImage;var G=this.pages[0];this.currentPage==G?y.setBackgroundImage(this.editor.graph.backgroundImage):null!=G.viewState&&null!=G.viewState&&y.setBackgroundImage(G.viewState.backgroundImage);y.getGlobalVariable=function(aa){return"page"==aa?G.getName():"pagenumber"==aa?1:I.apply(this,
-arguments)};document.body.appendChild(y.container);y.model.setRoot(G.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(aa){try{null==C&&(C=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var ca=aa.toDataURL("image/png");ca=Editor.writeGraphModelToPng(ca,"tEXt","mxfile",encodeURIComponent(C));d(ca.substring(ca.lastIndexOf(",")+1));y!=this.editor.graph&&y.container.parentNode.removeChild(y.container)}catch(ba){null!=f&&f(ba)}}),null,null,null,mxUtils.bind(this,function(aa){null!=
-f&&f(aa)}),null,null,m,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(aa){null!=f&&f(aa)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba){C=null!=C?C:!0;aa=null!=aa?aa:0;F=null!=I?I:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,aa,null,null,y,null,null,null,f.shadowVisible||ca,null,ba,"diagram");(f.shadowVisible||ca)&&f.addSvgShadow(y,null,null,0==aa);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Z=mxUtils.bind(this,
-function(qa){qa=(m?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(N){Z(N)})):Z(qa)}));else return Z(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(m){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba){I=null!=I?I:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Z=this.editor.graph.isSelectionEmpty();g=null!=g?g:Z;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
-q?this.getFileData(!0,null,null,null,g,C):null,I,null==this.pages||0==this.pages.length,aa)}catch(N){this.handleError(N)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,m,null,null,y,F,G,ca,ba)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,m,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
-[];try{var I=this.editor.graph;if(null!=d&&0<d.length){I.model.beginUpdate();try{var G=mxUtils.parseXml(d);d={};var aa=this.editor.extractGraphModel(G.documentElement,null!=this.pages);if(null!=aa&&"mxfile"==aa.nodeName&&null!=this.pages){var ca=aa.getElementsByTagName("diagram");if(1==ca.length&&!y){if(aa=Editor.parseDiagramNode(ca[0]),null!=this.currentPage&&(d[ca[0].getAttribute("id")]=this.currentPage.getId(),this.isBlankFile())){var ba=ca[0].getAttribute("name");null!=ba&&""!=ba&&this.editor.graph.model.execute(new RenamePage(this,
-this.currentPage,ba))}}else if(0<ca.length){y=[];var Z=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[ca[0].getAttribute("id")]=this.pages[0].getId(),aa=Editor.parseDiagramNode(ca[0]),m=!1,Z=1);for(;Z<ca.length;Z++){var qa=ca[Z].getAttribute("id");ca[Z].removeAttribute("id");var N=this.updatePageRoot(new DiagramPage(ca[Z]));d[qa]=ca[Z].getAttribute("id");var Y=this.pages.length;null==N.getName()&&N.setName(mxResources.get("pageWithNumber",[Y+1]));I.model.execute(new ChangePage(this,
-N,N,Y,!0));y.push(N)}this.updatePageLinks(d,y)}}if(null!=aa&&"mxGraphModel"===aa.nodeName){C=I.importGraphModel(aa,f,g,m);if(null!=C)for(Z=0;Z<C.length;Z++)this.updatePageLinksForCell(d,C[Z]);var ea=I.parseBackgroundImage(aa.getAttribute("backgroundImage"));if(null!=ea&&null!=ea.originalSrc){this.updateBackgroundPageLink(d,ea);var ka=new ChangePageSetup(this,null,ea);ka.ignoreColor=!0;I.model.execute(ka)}}F&&this.insertHandler(C,null,null,I.defaultVertexStyle,I.defaultEdgeStyle,!1,!0)}finally{I.model.endUpdate()}}}catch(ja){if(q)throw ja;
-this.handleError(ja)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(m){}};EditorUi.prototype.updatePageLinksForCell=
+!0),y),C=g;else if(F||null!=this.pages&&this.currentPage!=this.pages[0]){y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet());var I=y.getGlobalVariable;y.setBackgroundImage=this.editor.graph.setBackgroundImage;var G=this.pages[0];this.currentPage==G?y.setBackgroundImage(this.editor.graph.backgroundImage):null!=G.viewState&&null!=G.viewState&&y.setBackgroundImage(G.viewState.backgroundImage);y.getGlobalVariable=function(Z){return"page"==Z?G.getName():"pagenumber"==Z?1:I.apply(this,
+arguments)};document.body.appendChild(y.container);y.model.setRoot(G.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(Z){try{null==C&&(C=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var ca=Z.toDataURL("image/png");ca=Editor.writeGraphModelToPng(ca,"tEXt","mxfile",encodeURIComponent(C));d(ca.substring(ca.lastIndexOf(",")+1));y!=this.editor.graph&&y.container.parentNode.removeChild(y.container)}catch(aa){null!=f&&f(aa)}}),null,null,null,mxUtils.bind(this,function(Z){null!=
+f&&f(Z)}),null,null,m,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(Z){null!=f&&f(Z)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa){C=null!=C?C:!0;Z=null!=Z?Z:0;F=null!=I?I:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,Z,null,null,y,null,null,null,f.shadowVisible||ca,null,aa,"diagram");(f.shadowVisible||ca)&&f.addSvgShadow(y,null,null,0==Z);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Y=mxUtils.bind(this,
+function(qa){qa=(m?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(Q){Y(Q)})):Y(qa)}));else return Y(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
+this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(m){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa){I=null!=I?I:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Y=this.editor.graph.isSelectionEmpty();g=null!=g?g:Y;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
+q?this.getFileData(!0,null,null,null,g,C):null,I,null==this.pages||0==this.pages.length,Z)}catch(Q){this.handleError(Q)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,m,null,null,y,F,G,ca,aa)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,m,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
+[];try{var I=this.editor.graph;if(null!=d&&0<d.length){I.model.beginUpdate();try{var G=mxUtils.parseXml(d);d={};var Z=this.editor.extractGraphModel(G.documentElement,null!=this.pages);if(null!=Z&&"mxfile"==Z.nodeName&&null!=this.pages){var ca=Z.getElementsByTagName("diagram");if(1==ca.length&&!y){if(Z=Editor.parseDiagramNode(ca[0]),null!=this.currentPage&&(d[ca[0].getAttribute("id")]=this.currentPage.getId(),this.isBlankFile())){var aa=ca[0].getAttribute("name");null!=aa&&""!=aa&&this.editor.graph.model.execute(new RenamePage(this,
+this.currentPage,aa))}}else if(0<ca.length){y=[];var Y=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[ca[0].getAttribute("id")]=this.pages[0].getId(),Z=Editor.parseDiagramNode(ca[0]),m=!1,Y=1);for(;Y<ca.length;Y++){var qa=ca[Y].getAttribute("id");ca[Y].removeAttribute("id");var Q=this.updatePageRoot(new DiagramPage(ca[Y]));d[qa]=ca[Y].getAttribute("id");var X=this.pages.length;null==Q.getName()&&Q.setName(mxResources.get("pageWithNumber",[X+1]));I.model.execute(new ChangePage(this,
+Q,Q,X,!0));y.push(Q)}this.updatePageLinks(d,y)}}if(null!=Z&&"mxGraphModel"===Z.nodeName){C=I.importGraphModel(Z,f,g,m);if(null!=C)for(Y=0;Y<C.length;Y++)this.updatePageLinksForCell(d,C[Y]);var fa=I.parseBackgroundImage(Z.getAttribute("backgroundImage"));if(null!=fa&&null!=fa.originalSrc){this.updateBackgroundPageLink(d,fa);var ka=new ChangePageSetup(this,null,fa);ka.ignoreColor=!0;I.model.execute(ka)}}F&&this.insertHandler(C,null,null,I.defaultVertexStyle,I.defaultEdgeStyle,!1,!0)}finally{I.model.endUpdate()}}}catch(ia){if(q)throw ia;
+this.handleError(ia)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(m){}};EditorUi.prototype.updatePageLinksForCell=
function(d,f){var g=document.createElement("div"),m=this.editor.graph,q=m.getLinkForCell(f);null!=q&&m.setLinkForCell(f,this.updatePageLink(d,q));if(m.isHtmlLabel(f)){g.innerHTML=m.sanitizeHtml(m.getLabel(f));for(var y=g.getElementsByTagName("a"),F=!1,C=0;C<y.length;C++)q=y[C].getAttribute("href"),null!=q&&(y[C].setAttribute("href",this.updatePageLink(d,q)),F=!0);F&&m.labelChanged(f,g.innerHTML)}for(C=0;C<m.model.getChildCount(f);C++)this.updatePageLinksForCell(d,m.model.getChildAt(f,C))};EditorUi.prototype.updatePageLink=
function(d,f){if(Graph.isPageLink(f)){var g=d[f.substring(f.indexOf(",")+1)];f=null!=g?"data:page/id,"+g:null}else if("data:action/json,"==f.substring(0,17))try{var m=JSON.parse(f.substring(17));if(null!=m.actions){for(var q=0;q<m.actions.length;q++){var y=m.actions[q];if(null!=y.open&&Graph.isPageLink(y.open)){var F=y.open.substring(y.open.indexOf(",")+1);g=d[F];null!=g?y.open="data:page/id,"+g:null==this.getPageById(F)&&delete y.open}}f="data:action/json,"+JSON.stringify(m)}}catch(C){}return f};
EditorUi.prototype.isRemoteVisioFormat=function(d){return/(\.v(sd|dx))($|\?)/i.test(d)||/(\.vs(s|x))($|\?)/i.test(d)};EditorUi.prototype.importVisio=function(d,f,g,m,q){m=null!=m?m:d.name;g=null!=g?g:mxUtils.bind(this,function(F){this.handleError(F)});var y=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var F=this.isRemoteVisioFormat(m);try{var C="UNKNOWN-VISIO",I=m.lastIndexOf(".");if(0<=I&&I<m.length)C=m.substring(I+1).toUpperCase();else{var G=m.lastIndexOf("/");0<=
-G&&G<m.length&&(m=m.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+m,label:F?"remote":"local"})}catch(ca){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,m);var aa=new XMLHttpRequest;aa.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(m)?"?stencil=1":""));aa.responseType="blob";this.addRemoteServiceSecurityCheck(aa);
-null!=q&&aa.setRequestHeader("x-convert-custom",q);aa.onreadystatechange=mxUtils.bind(this,function(){if(4==aa.readyState)if(200<=aa.status&&299>=aa.status)try{var ca=aa.response;if("text/xml"==ca.type){var ba=new FileReader;ba.onload=mxUtils.bind(this,function(Z){try{f(Z.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});ba.readAsText(ca)}else this.doImportVisio(ca,f,g,m)}catch(Z){g(Z)}else try{""==aa.responseType||"text"==aa.responseType?g({message:aa.responseText}):(ba=
-new FileReader,ba.onload=function(){g({message:JSON.parse(ba.result).Message})},ba.readAsText(aa.response))}catch(Z){g({})}});aa.send(F)}else try{this.doImportVisio(d,f,g,m)}catch(ca){g(ca)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,
-function(q){this.handleError(q)});var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?m():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",m))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=
-!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var m=mxUtils.bind(this,
-function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var q=JSON.parse(d);f(LucidImporter.importState(q));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+d.length}),null!=window.console&&"1"==urlParams.test){var y=[(new Date).toISOString(),"convertLucidChart",q];null!=q.state&&y.push(JSON.parse(q.state));if(null!=q.svgThumbs)for(var F=0;F<q.svgThumbs.length;F++)y.push(Editor.createSvgDataUri(q.svgThumbs[F]));null!=q.thumb&&y.push(q.thumb);
-console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(m,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){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",m)})})})}):mxscript("js/extensions.min.js",m))};EditorUi.prototype.generateMermaidImage=function(d,f,g,m){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=
-F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");if(0<C.length){var I=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(I)||isNaN(G))try{var aa=C[0].getAttribute("viewBox").split(/\s+/);I=parseFloat(aa[2]);G=parseFloat(aa[3])}catch(ca){I=I||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),I,G)}else m({message:mxResources.get("invalidInput")})}catch(ca){m(ca)}})}catch(F){m(F)}};
-"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,m){function q(C,I,G){c1=C>>2;c2=(C&3)<<4|I>>4;c3=(I&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+
-C);C-=26;return 0==C?"-":1==C?"_":"?"}var F=new XMLHttpRequest;F.open("GET",("txt"==f?PLANT_URL+"/txt/":"png"==f?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(C){r="";for(i=0;i<C.length;i+=3)r=i+2==C.length?r+q(C.charCodeAt(i),C.charCodeAt(i+1),0):i+1==C.length?r+q(C.charCodeAt(i),0,0):r+q(C.charCodeAt(i),C.charCodeAt(i+1),C.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(d))),!0);"txt"!=f&&(F.responseType="blob");F.onload=function(C){if(200<=this.status&&300>this.status)if("txt"==
-f)g(this.response);else{var I=new FileReader;I.readAsDataURL(this.response);I.onloadend=function(G){var aa=new Image;aa.onload=function(){try{var ca=aa.width,ba=aa.height;if(0==ca&&0==ba){var Z=I.result,qa=Z.indexOf(","),N=decodeURIComponent(escape(atob(Z.substring(qa+1)))),Y=mxUtils.parseXml(N).getElementsByTagName("svg");0<Y.length&&(ca=parseFloat(Y[0].getAttribute("width")),ba=parseFloat(Y[0].getAttribute("height")))}g(I.result,ca,ba)}catch(ea){m(ea)}};aa.src=I.result};I.onerror=function(G){m(G)}}else m(C)};
-F.onerror=function(C){m(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var m=this.editor.graph,q=null;m.getModel().beginUpdate();try{q=m.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),m.updateCellSize(q,!0)}finally{m.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?
-this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(d.replace(/\s+/g," "),mxUtils.bind(this,function(ba){4==ba.readyState&&200<=ba.status&&299>=ba.status&&this.editor.graph.setSelectionCells(this.insertTextAt(ba.responseText,f,g,!0))}));else if("data:"==d.substring(0,5)||!this.isOffline()&&(q||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d))){var I=this.editor.graph;if("data:application/pdf;base64,"==d.substring(0,28)){var G=Editor.extractGraphModelFromPdf(d);if(null!=
-G&&0<G.length)return this.importXml(G,f,g,y,!0,C)}if(Editor.isPngDataUrl(d)&&(G=Editor.extractGraphModelFromPng(d),null!=G&&0<G.length))return this.importXml(G,f,g,y,!0,C);if("data:image/svg+xml;"==d.substring(0,19))try{G=null;"data:image/svg+xml;base64,"==d.substring(0,26)?(G=d.substring(d.indexOf(",")+1),G=window.atob&&!mxClient.IS_SF?atob(G):Base64.decode(G,!0)):G=decodeURIComponent(d.substring(d.indexOf(",")+1));var aa=this.importXml(G,f,g,y,!0,C);if(0<aa.length)return aa}catch(ba){}this.loadImage(d,
-mxUtils.bind(this,function(ba){if("data:"==d.substring(0,5))this.resizeImage(ba,d,mxUtils.bind(this,function(N,Y,ea){I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),Y,ea,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(N)+";"))}),F,this.maxImageSize);else{var Z=Math.min(1,Math.min(this.maxImageSize/ba.width,this.maxImageSize/ba.height)),qa=Math.round(ba.width*Z);ba=Math.round(ba.height*
-Z);I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),qa,ba,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";"))}}),mxUtils.bind(this,function(){var ba=null;I.getModel().beginUpdate();try{ba=I.insertVertex(I.getDefaultParent(),null,d,I.snap(f),I.snap(g),1,1,"text;"+(m?"html=1;":"")),I.updateCellSize(ba),I.fireEvent(new mxEventObject("textInserted","cells",[ba]))}finally{I.getModel().endUpdate()}I.setSelectionCell(ba)}))}else{d=
-Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,function(ba){this.editor.graph.setSelectionCells(this.importXml(ba,f,g,y,null,C))}),mxUtils.bind(this,function(ba){this.handleError(ba)}));else{I=this.editor.graph;q=null;I.getModel().beginUpdate();try{q=I.insertVertex(I.getDefaultParent(),null,"",I.snap(f),I.snap(g),1,1,"text;whiteSpace=wrap;"+(m?"html=1;":""));
-I.fireEvent(new mxEventObject("textInserted","cells",[q]));"<"==d.charAt(0)&&d.indexOf(">")==d.length-1&&(d=mxUtils.htmlEntities(d));d.length>this.maxTextBytes&&(d=d.substring(0,this.maxTextBytes)+"...");q.value=d;I.updateCellSize(q);if(0<this.maxTextWidth&&q.geometry.width>this.maxTextWidth){var ca=I.getPreferredSizeForCell(q,this.maxTextWidth);q.geometry.width=ca.width;q.geometry.height=ca.height}Graph.isLink(q.value)&&I.setLinkForCell(q,q.value);q.geometry.width+=I.gridSize;q.geometry.height+=
-I.gridSize}finally{I.getModel().endUpdate()}return[q]}}return[]};EditorUi.prototype.formatFileSize=function(d){var f=-1;do d/=1024,f++;while(1024<d);return Math.max(d,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[f]};EditorUi.prototype.convertDataUri=function(d){if("data:"==d.substring(0,5)){var f=d.indexOf(";");0<f&&(d=d.substring(0,f)+d.substring(d.indexOf(",",f+1)))}return d};EditorUi.prototype.isRemoteFileFormat=function(d,f){return/("contentType":\s*"application\/gliffy\+json")/.test(d)};
-EditorUi.prototype.isLucidChartData=function(d){return null!=d&&('{"state":"{\\"Properties\\":'==d.substring(0,26)||'{"Properties":'==d.substring(0,14))};EditorUi.prototype.importLocalFile=function(d,f){if(d&&Graph.fileSupport){if(null==this.importFileInputElt){var g=document.createElement("input");g.setAttribute("type","file");mxEvent.addListener(g,"change",mxUtils.bind(this,function(){null!=g.files&&(this.importFiles(g.files,null,null,this.maxImageSize),g.type="",g.type="file",g.value="")}));g.style.display=
-"none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.getFileContent(this,F,C,I)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.deleteFile(this,F,C,I)});if(!f){var m=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=
-new OpenFile(mxUtils.bind(this,function(F){this.hideDialog(F)}));window.openFile.setConsumer(mxUtils.bind(this,function(F,C){null!=C&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(C)?(F=new Blob([F],{type:"application/octet-stream"}),this.importVisio(F,mxUtils.bind(this,function(I){this.importXml(I,0,0,!0)}),null,C)):this.editor.graph.setSelectionCells(this.importXml(F,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,
-function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=m;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(d,f,g){var m=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,I=!1;y.forEach(function(G,aa){G=
-aa.name.toLowerCase();"diagram/diagram.xml"==G?(I=!0,aa.async("string").then(function(ca){0==ca.indexOf("<mxfile ")?f(ca):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=aa))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&m.isRemoteFileFormat(G,d.name)?m.isOffline()?m.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):m.parseFileData(G,mxUtils.bind(this,function(aa){4==aa.readyState&&(200<=aa.status&&299>=aa.status?f(aa.responseText):
-g())}),d.name):g()}):I||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,m,q,y,F,C,I,G,aa,ca){G=null!=G?G:!0;var ba=!1,Z=null,qa=mxUtils.bind(this,function(N){var Y=null;null!=N&&"<mxlibrary"==N.substring(0,10)?this.loadLibrary(new LocalLibrary(this,N,F)):Y=this.importXml(N,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null);null!=C&&
-C(Y)});"image"==f.substring(0,5)?(I=!1,"image/png"==f.substring(0,9)&&(f=aa?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Z=this.importXml(f,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null),I=!0)),I||(f=this.editor.graph,I=d.indexOf(";"),0<I&&(d=d.substring(0,I)+d.substring(d.indexOf(",",I+1))),G&&f.isGridEnabled()&&(g=f.snap(g),m=f.snap(m)),Z=[f.insertVertex(null,null,"",g,m,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-d+";")])):/(\.*<graphml )/.test(d)?(ba=!0,this.importGraphML(d,qa)):null!=I&&null!=F&&(/(\.v(dx|sdx?))($|\?)/i.test(F)||/(\.vs(x|sx?))($|\?)/i.test(F))?(ba=!0,this.importVisio(I,qa)):(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,F)?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(ba=!0,q=mxUtils.bind(this,function(N){4==N.readyState&&(200<=N.status&&299>=N.status?qa(N.responseText):null!=C&&C(null))}),null!=d?this.parseFileData(d,q,F):this.parseFile(I,
-q,F)):0==d.indexOf("PK")&&null!=I?(ba=!0,this.importZipFile(I,qa,mxUtils.bind(this,function(){Z=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Z)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Z=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G,null,null!=ca?mxEvent.isControlDown(ca):null));ba||null==C||C(Z);return Z};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Z=null!=
-f&&null!=g,qa=!0;f=null!=f?f:0;g=null!=g?g:0;var N=!1;if(!mxClient.IS_CHROMEAPP&&null!=d)for(var Y=aa||this.resampleThreshold,ea=0;ea<d.length;ea++)if("image/svg"!==d[ea].type.substring(0,9)&&"image/"===d[ea].type.substring(0,6)&&d[ea].size>Y){N=!0;break}var ka=mxUtils.bind(this,function(){var ja=this.editor.graph,V=ja.gridSize;q=null!=q?q:mxUtils.bind(this,function(la,u,H,O,T,R,da,P,ma){try{return null!=la&&"<mxlibrary"==la.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,
-la,da)),null):this.importFile(la,u,H,O,T,R,da,P,ma,Z,ca,ba)}catch(ra){return this.handleError(ra),null}});y=null!=y?y:mxUtils.bind(this,function(la){ja.setSelectionCells(la)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var J=d.length,W=J,Q=[],S=mxUtils.bind(this,function(la,u){Q[la]=u;if(0==--W){this.spinner.stop();if(null!=C)C(Q);else{var H=[];ja.getModel().beginUpdate();try{for(la=0;la<Q.length;la++){var O=Q[la]();null!=O&&(H=H.concat(O))}}finally{ja.getModel().endUpdate()}}y(H)}}),
-ha=0;ha<J;ha++)mxUtils.bind(this,function(la){var u=d[la];if(null!=u){var H=new FileReader;H.onload=mxUtils.bind(this,function(O){if(null==F||F(u))if("image/"==u.type.substring(0,6))if("image/svg"==u.type.substring(0,9)){var T=Graph.clipSvgDataUri(O.target.result),R=T.indexOf(",");R=decodeURIComponent(escape(atob(T.substring(R+1))));var da=mxUtils.parseXml(R);R=da.getElementsByTagName("svg");if(0<R.length){R=R[0];var P=ca?null:R.getAttribute("content");null!=P&&"<"!=P.charAt(0)&&"%"!=P.charAt(0)&&
-(P=unescape(window.atob?atob(P):Base64.decode(P,!0)));null!=P&&"%"==P.charAt(0)&&(P=decodeURIComponent(P));null==P||"<mxfile "!==P.substring(0,8)&&"<mxGraphModel "!==P.substring(0,14)?S(la,mxUtils.bind(this,function(){try{if(null!=da){var xa=da.getElementsByTagName("svg");if(0<xa.length){var ta=xa[0],Aa=ta.getAttribute("width"),Ca=ta.getAttribute("height");Aa=null!=Aa&&"%"!=Aa.charAt(Aa.length-1)?parseFloat(Aa):NaN;Ca=null!=Ca&&"%"!=Ca.charAt(Ca.length-1)?parseFloat(Ca):NaN;var Ba=ta.getAttribute("viewBox");
-if(null==Ba||0==Ba.length)ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);else if(isNaN(Aa)||isNaN(Ca)){var sa=Ba.split(" ");3<sa.length&&(Aa=parseFloat(sa[2]),Ca=parseFloat(sa[3]))}T=Editor.createSvgDataUri(mxUtils.getXml(ta));var Oa=Math.min(1,Math.min(m/Math.max(1,Aa)),m/Math.max(1,Ca)),Ta=q(T,u.type,f+la*V,g+la*V,Math.max(1,Math.round(Aa*Oa)),Math.max(1,Math.round(Ca*Oa)),u.name);if(isNaN(Aa)||isNaN(Ca)){var Sa=new Image;Sa.onload=mxUtils.bind(this,function(){Aa=Math.max(1,Sa.width);Ca=Math.max(1,
-Sa.height);Ta[0].geometry.width=Aa;Ta[0].geometry.height=Ca;ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);T=Editor.createSvgDataUri(mxUtils.getXml(ta));var $a=T.indexOf(";");0<$a&&(T=T.substring(0,$a)+T.substring(T.indexOf(",",$a+1)));ja.setCellStyles("image",T,[Ta[0]])});Sa.src=Editor.createSvgDataUri(mxUtils.getXml(ta))}return Ta}}}catch($a){}return null})):S(la,mxUtils.bind(this,function(){return q(P,"text/xml",f+la*V,g+la*V,0,0,u.name)}))}else S(la,mxUtils.bind(this,function(){return null}))}else{R=
-!1;if("image/png"==u.type){var ma=ca?null:this.extractGraphModelFromPng(O.target.result);if(null!=ma&&0<ma.length){var ra=new Image;ra.src=O.target.result;S(la,mxUtils.bind(this,function(){return q(ma,"text/xml",f+la*V,g+la*V,ra.width,ra.height,u.name)}));R=!0}}R||(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(O.target.result,mxUtils.bind(this,function(xa){this.resizeImage(xa,O.target.result,mxUtils.bind(this,function(ta,Aa,Ca){S(la,mxUtils.bind(this,function(){if(null!=ta&&ta.length<G){var Ba=qa&&this.isResampleImageSize(u.size,aa)?Math.min(1,Math.min(m/Aa,m/Ca)):1;return q(ta,u.type,f+la*V,g+la*V,Math.round(Aa*Ba),Math.round(Ca*Ba),u.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),qa,m,aa,u.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else T=
-O.target.result,q(T,u.type,f+la*V,g+la*V,240,160,u.name,function(xa){S(la,function(){return xa})},u)});/(\.v(dx|sdx?))($|\?)/i.test(u.name)||/(\.vs(x|sx?))($|\?)/i.test(u.name)?q(null,u.type,f+la*V,g+la*V,240,160,u.name,function(O){S(la,function(){return O})},u):"image"==u.type.substring(0,5)||"application/pdf"==u.type?H.readAsDataURL(u):H.readAsText(u)}})(ha)});if(N){N=[];for(ea=0;ea<d.length;ea++)N.push(d[ea]);d=N;this.confirmImageResize(function(ja){qa=ja;ka()},I)}else ka()};EditorUi.prototype.isBlankFile=
-function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,
-mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,
-f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
-f};EditorUi.prototype.resizeImage=function(d,f,g,m,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),I=Math.max(1,d.height);if(m&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,I/q);if(1<G){var aa=Math.round(C/G),ca=Math.round(I/G),ba=document.createElement("canvas");ba.width=aa;ba.height=ca;ba.getContext("2d").drawImage(d,0,0,aa,ca);var Z=ba.toDataURL();if(Z.length<f.length){var qa=document.createElement("canvas");qa.width=aa;qa.height=ca;var N=qa.toDataURL();
-Z!==N&&(f=Z,C=aa,I=ca)}}}catch(Y){}g(f,C,I)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var m=new Image;m.onload=function(){m.width=0<m.width?m.width:120;m.height=0<m.height?m.height:120;f(m)};null!=g&&(m.onerror=g);m.src=d}catch(q){if(null!=g)g(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?
-urlParams.rough:d)};var D=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());
-var d=this,f=this.editor.graph;Editor.isDarkMode()&&(f.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(f.panningHandler.isPanningTrigger=function(Y){var ea=Y.getEvent();return null==Y.getState()&&!mxEvent.isMouseEvent(ea)&&!f.freehand.isDrawing()||mxEvent.isPopupTrigger(ea)&&(null==Y.getState()||mxEvent.isControlDown(ea)||mxEvent.isShiftDown(ea))});f.cellEditor.editPlantUmlData=function(Y,ea,ka){var ja=JSON.parse(ka);ea=new TextareaDialog(d,mxResources.get("plantUml")+
-":",ja.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generatePlantUmlImage(V,ja.format,function(J,W,Q){d.spinner.stop();f.getModel().beginUpdate();try{if("txt"==ja.format)f.labelChanged(Y,"<pre>"+J+"</pre>"),f.updateCellSize(Y,!0);else{f.setCellStyles("image",d.convertDataUri(J),[Y]);var S=f.model.getGeometry(Y);null!=S&&(S=S.clone(),S.width=W,S.height=Q,f.cellsResized([Y],[S],!1))}f.setAttributeForCell(Y,"plantUmlData",JSON.stringify({data:V,format:ja.format}))}finally{f.getModel().endUpdate()}},
-function(J){d.handleError(J)})},null,null,400,220);d.showDialog(ea.container,420,300,!0,!0);ea.init()};f.cellEditor.editMermaidData=function(Y,ea,ka){var ja=JSON.parse(ka);ea=new TextareaDialog(d,mxResources.get("mermaid")+":",ja.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generateMermaidImage(V,ja.config,function(J,W,Q){d.spinner.stop();f.getModel().beginUpdate();try{f.setCellStyles("image",J,[Y]);var S=f.model.getGeometry(Y);null!=S&&(S=S.clone(),S.width=
-Math.max(S.width,W),S.height=Math.max(S.height,Q),f.cellsResized([Y],[S],!1));f.setAttributeForCell(Y,"mermaidData",JSON.stringify({data:V,config:ja.config},null,2))}finally{f.getModel().endUpdate()}},function(J){d.handleError(J)})},null,null,400,220);d.showDialog(ea.container,420,300,!0,!0);ea.init()};var g=f.cellEditor.startEditing;f.cellEditor.startEditing=function(Y,ea){try{var ka=this.graph.getAttributeForCell(Y,"plantUmlData");if(null!=ka)this.editPlantUmlData(Y,ea,ka);else if(ka=this.graph.getAttributeForCell(Y,
-"mermaidData"),null!=ka)this.editMermaidData(Y,ea,ka);else{var ja=f.getCellStyle(Y);"1"==mxUtils.getValue(ja,"metaEdit","0")?d.showDataDialog(Y):g.apply(this,arguments)}}catch(V){d.handleError(V)}};f.getLinkTitle=function(Y){return d.getLinkTitle(Y)};f.customLinkClicked=function(Y){var ea=!1;try{d.handleCustomLink(Y),ea=!0}catch(ka){d.handleError(ka)}return ea};var m=f.parseBackgroundImage;f.parseBackgroundImage=function(Y){var ea=m.apply(this,arguments);null!=ea&&null!=ea.src&&Graph.isPageLink(ea.src)&&
-(ea={originalSrc:ea.src});return ea};var q=f.setBackgroundImage;f.setBackgroundImage=function(Y){null!=Y&&null!=Y.originalSrc&&(Y=d.createImageForPageLink(Y.originalSrc,d.currentPage,this));q.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));this.editor.addListener("pageMoved",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(Y,ea){Y=null!=f.backgroundImage?
-f.backgroundImage.originalSrc:null;if(null!=Y){var ka=Y.indexOf(",");if(0<ka)for(Y=Y.substring(ka+1),ea=ea.getProperty("patches"),ka=0;ka<ea.length;ka++)if(null!=ea[ka][EditorUi.DIFF_UPDATE]&&null!=ea[ka][EditorUi.DIFF_UPDATE][Y]||null!=ea[ka][EditorUi.DIFF_REMOVE]&&0<=mxUtils.indexOf(ea[ka][EditorUi.DIFF_REMOVE],Y)){f.refreshBackgroundImage();break}}}));var y=f.getBackgroundImageObject;f.getBackgroundImageObject=function(Y,ea){var ka=y.apply(this,arguments);if(null!=ka&&null!=ka.originalSrc)if(!ea)ka=
-{src:ka.originalSrc};else if(ea&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var ja=this.stylesheet,V=this.shapeForegroundColor,J=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";ka=d.createImageForPageLink(ka.originalSrc);this.shapeBackgroundColor=J;this.shapeForegroundColor=V;this.stylesheet=ja}return ka};var F=this.clearDefaultStyle;this.clearDefaultStyle=function(){F.apply(this,arguments)};
-this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var C=d.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(Y){Y=null!=Y?Y:"";"1"==urlParams.dev&&(Y+=(0<Y.length?"&":"?")+"dev=1");return C.apply(this,arguments)};var I=
-f.addClickHandler;f.addClickHandler=function(Y,ea,ka){var ja=ea;ea=function(V,J){if(null==J){var W=mxEvent.getSource(V);"a"==W.nodeName.toLowerCase()&&(J=W.getAttribute("href"))}null!=J&&f.isCustomLink(J)&&(mxEvent.isTouchEvent(V)||!mxEvent.isPopupTrigger(V))&&f.customLinkClicked(J)&&mxEvent.consume(V);null!=ja&&ja(V,J)};I.call(this,Y,ea,ka)};D.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(f.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var G=Menus.prototype.addPopupMenuEditItems;
-this.menus.addPopupMenuEditItems=function(Y,ea,ka){d.editor.graph.isSelectionEmpty()?G.apply(this,arguments):d.menus.addMenuItems(Y,"delete - cut copy copyAsImage - duplicate".split(" "),null,ka)}}d.actions.get("print").funct=function(){d.showDialog((new PrintDialog(d)).container,360,null!=d.pages&&1<d.pages.length?470:390,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var aa=f.getExportVariables;f.getExportVariables=function(){var Y=aa.apply(this,arguments),ea=d.getCurrentFile();
-null!=ea&&(Y.filename=ea.getTitle());Y.pagecount=null!=d.pages?d.pages.length:1;Y.page=null!=d.currentPage?d.currentPage.getName():"";Y.pagenumber=null!=d.pages&&null!=d.currentPage?mxUtils.indexOf(d.pages,d.currentPage)+1:1;return Y};var ca=f.getGlobalVariable;f.getGlobalVariable=function(Y){var ea=d.getCurrentFile();return"filename"==Y&&null!=ea?ea.getTitle():"page"==Y&&null!=d.currentPage?d.currentPage.getName():"pagenumber"==Y?null!=d.currentPage&&null!=d.pages?mxUtils.indexOf(d.pages,d.currentPage)+
-1:1:"pagecount"==Y?null!=d.pages?d.pages.length:1:ca.apply(this,arguments)};var ba=f.labelLinkClicked;f.labelLinkClicked=function(Y,ea,ka){var ja=ea.getAttribute("href");if(null==ja||!f.isCustomLink(ja)||!mxEvent.isTouchEvent(ka)&&mxEvent.isPopupTrigger(ka))ba.apply(this,arguments);else{if(!f.isEnabled()||null!=Y&&f.isCellLocked(Y.cell))f.customLinkClicked(ja),f.getRubberband().reset();mxEvent.consume(ka)}};this.editor.getOrCreateFilename=function(){var Y=d.defaultFilename,ea=d.getCurrentFile();null!=
-ea&&(Y=null!=ea.getTitle()?ea.getTitle():Y);return Y};var Z=this.actions.get("print");Z.setEnabled(!mxClient.IS_IOS||!navigator.standalone);Z.visible=Z.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),
-this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.addListener("realtimeStateChanged",mxUtils.bind(this,function(){this.updateUserElement()}));this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&f.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(Y){var ea=f.cellEditor.text2,ka=null;null!=ea&&(mxEvent.addListener(ea,"dragleave",function(ja){null!=ka&&(ka.parentNode.removeChild(ka),
-ka=null);ja.stopPropagation();ja.preventDefault()}),mxEvent.addListener(ea,"dragover",mxUtils.bind(this,function(ja){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(ea));ja.stopPropagation();ja.preventDefault()})),mxEvent.addListener(ea,"drop",mxUtils.bind(this,function(ja){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ja.dataTransfer.files.length)this.importFiles(ja.dataTransfer.files,0,0,this.maxImageSize,function(J,W,Q,S,ha,la){f.insertImage(J,ha,la)},
-function(){},function(J){return"image/"==J.type.substring(0,6)},function(J){for(var W=0;W<J.length;W++)J[W]()},mxEvent.isControlDown(ja));else if(0<=mxUtils.indexOf(ja.dataTransfer.types,"text/uri-list")){var V=ja.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(V)?this.loadImage(decodeURIComponent(V),mxUtils.bind(this,function(J){var W=Math.max(1,J.width);J=Math.max(1,J.height);var Q=this.maxImageSize;Q=Math.min(1,Math.min(Q/Math.max(1,W)),Q/Math.max(1,J));f.insertImage(decodeURIComponent(V),
-W*Q,J*Q)})):document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(ja.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(ja.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"));ja.stopPropagation();ja.preventDefault()})))}));this.isSettingsEnabled()&&(Z=this.editor.graph.view,Z.setUnit(mxSettings.getUnit()),Z.addListener("unitChanged",
-function(Y,ea){mxSettings.setUnit(ea.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,Z.unit),this.refresh());if("1"==urlParams.styledev){Z=document.getElementById("geFooter");null!=Z&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top=
-"14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),Z.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(Y,ea){0<this.editor.graph.getSelectionCount()?(Y=this.editor.graph.getSelectionCell(),
-Y=this.editor.graph.getModel().getStyle(Y),this.styleInput.value=Y||"",this.styleInput.style.visibility="visible"):this.styleInput.style.visibility="hidden"})));var qa=this.isSelectionAllowed;this.isSelectionAllowed=function(Y){return mxEvent.getSource(Y)==this.styleInput?!0:qa.apply(this,arguments)}}Z=document.getElementById("geInfo");null!=Z&&Z.parentNode.removeChild(Z);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var N=null;mxEvent.addListener(f.container,"dragleave",
-function(Y){f.isEnabled()&&(null!=N&&(N.parentNode.removeChild(N),N=null),Y.stopPropagation(),Y.preventDefault())});mxEvent.addListener(f.container,"dragover",mxUtils.bind(this,function(Y){null==N&&(!mxClient.IS_IE||10<document.documentMode)&&(N=this.highlightElement(f.container));null!=this.sidebar&&this.sidebar.hideTooltip();Y.stopPropagation();Y.preventDefault()}));mxEvent.addListener(f.container,"drop",mxUtils.bind(this,function(Y){null!=N&&(N.parentNode.removeChild(N),N=null);if(f.isEnabled()){var ea=
-mxUtils.convertPoint(f.container,mxEvent.getClientX(Y),mxEvent.getClientY(Y)),ka=Y.dataTransfer.files,ja=f.view.translate,V=f.view.scale,J=ea.x/V-ja.x,W=ea.y/V-ja.y;if(0<ka.length)ea=1==ka.length&&this.isBlankFile()&&!this.canUndo()&&("image/svg"===ka[0].type.substring(0,9)||"image/"!==ka[0].type.substring(0,6)||/(\.drawio.png)$/i.test(ka[0].name)),"1"!=urlParams.embed&&(mxEvent.isShiftDown(Y)||ea)?(!mxEvent.isShiftDown(Y)&&ea&&null!=this.getCurrentFile()&&this.fileLoaded(null),this.openFiles(ka,
-!0)):(mxEvent.isAltDown(Y)&&(W=J=null),this.importFiles(ka,J,W,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(Y),null,null,mxEvent.isShiftDown(Y),Y));else{mxEvent.isAltDown(Y)&&(W=J=0);var Q=0<=mxUtils.indexOf(Y.dataTransfer.types,"text/uri-list")?Y.dataTransfer.getData("text/uri-list"):null;ka=this.extractGraphModelFromEvent(Y,null!=this.pages);if(null!=ka)f.setSelectionCells(this.importXml(ka,J,W,!0));else if(0<=mxUtils.indexOf(Y.dataTransfer.types,"text/html")){var S=Y.dataTransfer.getData("text/html");
-ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(S);var ha=null;ea=ka.getElementsByTagName("img");null!=ea&&1==ea.length?(S=ea[0].getAttribute("src"),null==S&&(S=ea[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(S)||(ha=!0)):(ea=ka.getElementsByTagName("a"),null!=ea&&1==ea.length?S=ea[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(S=mxUtils.getTextContent(ka[0]))));var la=!0,u=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(S,
-J,W,!0,ha,null,la,mxEvent.isControlDown(Y)))});ha&&null!=S&&S.length>this.resampleThreshold?this.confirmImageResize(function(H){la=H;u()},mxEvent.isControlDown(Y)):u()}else null!=Q&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(Q)?this.loadImage(decodeURIComponent(Q),mxUtils.bind(this,function(H){var O=Math.max(1,H.width);H=Math.max(1,H.height);var T=this.maxImageSize;T=Math.min(1,Math.min(T/Math.max(1,O)),T/Math.max(1,H));f.setSelectionCell(f.insertVertex(null,null,"",J,W,O*T,H*T,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-Q+";"))}),mxUtils.bind(this,function(H){f.setSelectionCells(this.insertTextAt(Q,J,W,!0))})):0<=mxUtils.indexOf(Y.dataTransfer.types,"text/plain")&&f.setSelectionCells(this.insertTextAt(Y.dataTransfer.getData("text/plain"),J,W,!0))}}Y.stopPropagation();Y.preventDefault()}),!1)}f.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var d=this.editor.graph;d.container.addEventListener("paste",
-mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(I,G,aa,ca,ba,Z){d.insertImage(I,ba,Z)},function(){},function(I){return"image/"==I.type.substring(0,6)},function(I){for(var G=0;G<I.length;G++)I[G]()});
-else{var C=this.editor.graph.getInsertPoint();this.importFiles([F.getAsFile()],C.x,C.y,this.maxImageSize);mxEvent.consume(f)}break}}}}catch(I){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function d(){window.setTimeout(function(){g.innerHTML="&nbsp;";g.focus();document.execCommand("selectAll",!1,null)},0)}var f=this.editor.graph,g=document.createElement("div");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck",
-"false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var m=!1;this.keyHandler.bindControlKey(88,
-null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||m||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",
-f.container.appendChild(g),m=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!m||224!=F&&17!=F&&91!=F&&93!=F||(m=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),
-this.copyCells(g),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,"cut",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),this.copyCells(g,!0),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,"paste",mxUtils.bind(this,function(y){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&(g.innerHTML="&nbsp;",g.focus(),null!=y.clipboardData&&this.pasteCells(y,g,!0,!0),mxEvent.isConsumed(y)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(y,g,!1,
-!0)}),0))}),!0);var q=this.isSelectionAllowed;this.isSelectionAllowed=function(y){return mxEvent.getSource(y)==g?!0:q.apply(this,arguments)}};EditorUi.prototype.setSketchMode=function(d){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetSketchMode(d);null==urlParams.rough&&(mxSettings.settings.sketchMode=d,mxSettings.save());this.fireEvent(new mxEventObject("sketchModeChanged"))}),0)};EditorUi.prototype.setPagesVisible=
-function(d){Editor.pagesVisible!=d&&(Editor.pagesVisible=d,mxSettings.settings.pagesVisible=d,mxSettings.save(),this.fireEvent(new mxEventObject("pagesVisibleChanged")))};EditorUi.prototype.setSidebarTitles=function(d,f){this.sidebar.sidebarTitles!=d&&(this.sidebar.sidebarTitles=d,this.sidebar.refresh(),this.isSettingsEnabled()&&f&&(mxSettings.settings.sidebarTitles=d,mxSettings.save()),this.fireEvent(new mxEventObject("sidebarTitlesChanged")))};EditorUi.prototype.setInlineFullscreen=function(d){Editor.inlineFullscreen!=
-d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(m,q,y){null==m[q]&&(m[q]=y)},g=this.editor.graph;
-Editor.sketchMode=d;this.menus.defaultFontSize=d?20:16;g.defaultVertexStyle=mxUtils.clone(Graph.prototype.defaultVertexStyle);f(g.defaultVertexStyle,"fontSize",this.menus.defaultFontSize);g.defaultEdgeStyle=mxUtils.clone(Graph.prototype.defaultEdgeStyle);f(g.defaultEdgeStyle,"fontSize",this.menus.defaultFontSize-4);f(g.defaultEdgeStyle,"edgeStyle","none");f(g.defaultEdgeStyle,"rounded","0");f(g.defaultEdgeStyle,"curved","1");f(g.defaultEdgeStyle,"jettySize","auto");f(g.defaultEdgeStyle,"orthogonalLoop",
-"1");f(g.defaultEdgeStyle,"endArrow","open");f(g.defaultEdgeStyle,"endSize","14");f(g.defaultEdgeStyle,"startSize","14");d&&(f(g.defaultVertexStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultVertexStyle,"fontSource",Editor.sketchFontSource),f(g.defaultVertexStyle,"hachureGap","4"),f(g.defaultVertexStyle,"sketch","1"),f(g.defaultEdgeStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultEdgeStyle,"fontSource",Editor.sketchFontSource),f(g.defaultEdgeStyle,"sketch","1"),f(g.defaultEdgeStyle,"hachureGap",
-"4"),f(g.defaultEdgeStyle,"sourcePerimeterSpacing","8"),f(g.defaultEdgeStyle,"targetPerimeterSpacing","8"));g.currentVertexStyle=mxUtils.clone(g.defaultVertexStyle);g.currentEdgeStyle=mxUtils.clone(g.defaultEdgeStyle);this.clearDefaultStyle()}};EditorUi.prototype.getLinkTitle=function(d){var f=Graph.prototype.getLinkTitle.apply(this,arguments);if(Graph.isPageLink(d)){var g=d.indexOf(",");0<g&&(f=this.getPageById(d.substring(g+1)),f=null!=f?f.getName():mxResources.get("pageNotFound"))}else"data:"==
-d.substring(0,5)&&(f=mxResources.get("action"));return f};EditorUi.prototype.handleCustomLink=function(d){if(Graph.isPageLink(d)){var f=d.indexOf(",");if(d=this.getPageById(d.substring(f+1)))this.selectPage(d);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(d)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){Editor.pagesVisible=
-mxSettings.settings.pagesVisible;ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(d){d.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(d){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",
-mxUtils.bind(this,function(d,f){"1"!=urlParams["ext-fonts"]?mxSettings.setCustomFonts(this.menus.customFonts):(d=f.getProperty("customFonts"),this.menus.customFonts=d,mxSettings.setCustomFonts(d));mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(d,f){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());
-mxSettings.save()}));this.editor.graph.pageFormat=null!=this.editor.graph.defaultPageFormat?this.editor.graph.defaultPageFormat:mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(d,f){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor(Editor.isDarkMode());this.editor.graph.view.defaultDarkGridColor=mxSettings.getGridColor(!0);this.editor.graph.view.defaultGridColor=mxSettings.getGridColor(!1);
-this.addListener("gridColorChanged",mxUtils.bind(this,function(d,f){mxSettings.setGridColor(this.editor.graph.view.gridColor,Editor.isDarkMode());mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(d,f){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&(null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes?(this.sidebar.searchShapes(decodeURIComponent(urlParams["search-shapes"])),
-this.sidebar.showEntries("search")):(this.sidebar.showPalette("search",mxSettings.settings.search),this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save())));this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyImage=function(d,f,g){try{null!=navigator.clipboard&&this.spinner.spin(document.body,mxResources.get("exporting"))&&
-this.editor.exportToCanvas(mxUtils.bind(this,function(m,q){try{this.spinner.stop();var y=this.createImageDataUri(m,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,F,C,mxUtils.bind(this,function(I){this.handleError(I)}))}catch(I){this.handleError(I)}}),null,null,null,mxUtils.bind(this,function(m){this.spinner.stop();this.handleError(m)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,
-null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(m){this.handleError(m)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,m){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](m)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerText="";else{var m=
-mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(m));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(m,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),
-f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,m){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),m);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,
-d,[F]);else{q.model.beginUpdate();try{q.labelChanged(F,d),Graph.isLink(d)&&q.setLinkForCell(F,d)}finally{q.model.endUpdate()}}q.setSelectionCell(F)}else y=q.getInsertPoint(),q.isMouseInsertPoint()&&(F=0,q.lastPasteXml==d&&0<q.pasteCounter&&q.pasteCounter--),y=this.insertTextAt(d,y.x+F,y.y+F,!0),q.setSelectionCells(y);q.isSelectionEmpty()||(q.scrollCellToVisible(q.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(q.view.getState(q.getSelectionCell())));return y};EditorUi.prototype.pasteCells=
-function(d,f,g,m){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var I=decodeURIComponent(F);this.isCompatibleString(I)&&(C=!0,F=I)}catch(ca){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,
-C))}F=q.getElementsByTagName("span");if(null!=F&&0<F.length&&"application/vnd.lucid.chart.objects"===F[0].getAttribute("data-lucid-type"))g=F[0].getAttribute("data-lucid-content"),null!=g&&0<g.length&&(this.convertLucidChart(g,mxUtils.bind(this,function(ca){var ba=this.editor.graph;ba.lastPasteXml==ca?ba.pasteCounter++:(ba.lastPasteXml=ca,ba.pasteCounter=0);var Z=ba.pasteCounter*ba.gridSize;ba.setSelectionCells(this.importXml(ca,Z,Z));ba.scrollCellToVisible(ba.getSelectionCell())}),mxUtils.bind(this,
-function(ca){this.handleError(ca)})),mxEvent.consume(d));else{y=y?q.innerHTML:mxUtils.trim(null==q.innerText?mxUtils.getTextContent(q):q.innerText);C=!1;try{var G=y.lastIndexOf("%3E");0<=G&&G<y.length-3&&(y=y.substring(0,G+3))}catch(ca){}try{F=q.getElementsByTagName("span"),(I=null!=F&&0<F.length?mxUtils.trim(decodeURIComponent(F[0].textContent)):decodeURIComponent(y))&&(this.isCompatibleString(I)||0==I.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))&&(C=!0,y=I)}catch(ca){}try{if(null!=
-y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(ca){console.log("Miro import error:",ca)}this.pasteXml(y,m,C,d);try{mxEvent.consume(d)}catch(ca){}}else if(!g){var aa=this.editor.graph;aa.lastPasteXml=null;aa.pasteCounter=0}}catch(ca){this.handleError(ca)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=
-0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(m){null!=f&&(f.parentNode.removeChild(f),f=null);m.stopPropagation();m.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(m){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());m.stopPropagation();m.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(m){null!=f&&(f.parentNode.removeChild(f),
-f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<m.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(m.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(m)&&!mxEvent.isShiftDown(m)):this.openFiles(m.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(m);if(null==q){var y=null!=m.dataTransfer?m.dataTransfer:m.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):
-(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?m.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,
-null,!0)):this.isRemoteFileFormat(q)?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(q))).send(mxUtils.bind(this,function(F){200<=F.getStatus()&&299>=F.getStatus()&&this.openLocalFile(F.getText(),null,!0)})):/^https?:\/\//.test(q)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(q):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+
-"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}m.stopPropagation();m.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var m=document.body;var q=document.documentElement;var y=(m.clientWidth||q.clientWidth)-3;m=Math.max(m.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,m=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border=
-"3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,m-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),
-m=new mxGraphModel;g.decode(f,m);f=m.getChildAt(m.getRoot(),0);for(g=0;g<m.getChildCount(f);g++)d.push(m.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,m,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,
-10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(I){this.handleError(I,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,m)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();
-y(C)}));else if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.isOffline()?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):this.parseFile(g,mxUtils.bind(this,function(C){4==C.readyState&&(this.spinner.stop(),200<=C.status&&299>=C.status?y(C.responseText):this.handleError({message:mxResources.get(413==C.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&
-(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,m)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==
-d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,m)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,m=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,m,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=
-0;g<d.length;g++)mxUtils.bind(this,function(m){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,m.name,m,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();this.handleError(y);window.openFile=null});"image"!==m.type.substring(0,5)&&"application/pdf"!==m.type||"image/svg"===m.type.substring(0,9)?q.readAsText(m):q.readAsDataURL(m)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,m,q){var y=this.getCurrentFile(),
-F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,d,f||this.defaultFilename,g,m,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),
-null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(d,f),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):F()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var d={};if(null!=this.pages)for(var f=
-0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var m=this.editor.graph,q=m.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));m.model.isEdge(d)&&
-(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=m.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(m.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=
-d?"":"none";this.editor.graph.setEnabled(d);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=d?"":"hidden",this.ruler.vRuler.container.style.visibility=d?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=d?"":"hidden");d||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=
-this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,m,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
-if(null==f||0==f.length)f=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,f,{}));this.mode=App.MODE_EMBED;this.setFileData(f);if(q)try{var y=this.editor.graph;y.setGridEnabled(!1);y.pageVisible=!1;var F=y.model.cells,C;for(C in F){var I=F[C];null!=I&&null!=I.style&&(I.style+=";sketch=1;"+(-1==I.style.indexOf("fontFamily=")||-1<I.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":
-""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=m?m:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
-this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(d,f){null!=d?d.getPublicUrl(f):f(null)};EditorUi.prototype.createLoadMessage=function(d){var f=this.editor.graph;return{event:d,pageVisible:f.pageVisible,translate:f.view.translate,bounds:f.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:f.view.scale,page:f.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(d){var f=this.editor.graph;
-f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var m=f.background;if(null==m||m==mxConstants.NONE)m=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,m,1,this.embedExportBorder)}else d||
-g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,"1"!=urlParams.embed&&this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,m=!1,q=null,y=mxUtils.bind(this,function(I,G){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,y);mxEvent.addListener(window,"message",mxUtils.bind(this,function(I){if(I.source==(window.opener||window.parent)){var G=I.data,aa=null,ca=mxUtils.bind(this,function(P){if(null!=P&&"function"===typeof P.charAt&&"<"!=P.charAt(0))try{Editor.isPngDataUrl(P)?P=Editor.extractGraphModelFromPng(P):"data:image/svg+xml;base64,"==
-P.substring(0,26)?P=atob(P.substring(26)):"data:image/svg+xml;utf8,"==P.substring(0,24)&&(P=P.substring(24)),null!=P&&("%"==P.charAt(0)?P=decodeURIComponent(P):"<"!=P.charAt(0)&&(P=Graph.decompress(P)))}catch(ma){}return P});if("json"==urlParams.proto){var ba=!1;try{G=JSON.parse(G),EditorUi.debug("EditorUi.installMessageHandler",[this],"evt",[I],"data",[G])}catch(P){G=null}try{if(null==G)return;if("dialog"==G.action){this.showError(null!=G.titleKey?mxResources.get(G.titleKey):G.title,null!=G.messageKey?
-mxResources.get(G.messageKey):G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayouts(this.editor.graph.createLayouts(G.layouts));return}if("prompt"==G.action){this.spinner.stop();var Z=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(P){null!=P?F.postMessage(JSON.stringify({event:"prompt",value:P,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",
-message:G}),"*")},null!=G.titleKey?mxResources.get(G.titleKey):G.title);this.showDialog(Z.container,300,80,!0,!1);Z.init();return}if("draft"==G.action){var qa=ca(G.xml);this.spinner.stop();Z=new DraftDialog(this,mxResources.get("draftFound",[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",
-message:G}),"*")}),G.editKey?mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),"*")}):null);this.showDialog(Z.container,640,480,!0,!1,mxUtils.bind(this,function(P){P&&this.actions.get("exit").funct()}));try{Z.init()}catch(P){F.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();
-var N=1==G.enableRecent,Y=1==G.enableSearch,ea=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ja=new TemplatesDialog(this,function(P,ma,ra){P=P||this.emptyDiagramXml;F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:ma,tempUrl:ra.url,libs:ra.libs,builtIn:null!=ra.info&&null!=ra.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=
-ka?ka.id:null,N?mxUtils.bind(this,function(P,ma,ra){this.remoteInvoke("getRecentDiagrams",[ra],null,P,ma)}):null,Y?mxUtils.bind(this,function(P,ma,ra,xa){this.remoteInvoke("searchDiagrams",[P,xa],null,ma,ra)}):null,mxUtils.bind(this,function(P,ma,ra){this.remoteInvoke("getFileContent",[P.url],null,ma,ra)}),null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,!1,!1,!0,!0);this.showDialog(ja.container,window.innerWidth,window.innerHeight,
-!0,!1,null,!1,!0);return}Z=new NewDialog(this,!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(P,ma,ra,xa){P=P||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:ma,tempUrl:ra,libs:xa,builtIn:!0,message:G}),"*"):(d(P,I,P!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,N?mxUtils.bind(this,function(P){this.remoteInvoke("getRecentDiagrams",
-[null],null,P,function(){P(null,"Network Error!")})}):null,Y?mxUtils.bind(this,function(P,ma){this.remoteInvoke("searchDiagrams",[P,null],null,ma,function(){ma(null,"Network Error!")})}):null,mxUtils.bind(this,function(P,ma,ra){F.postMessage(JSON.stringify({event:"template",docUrl:P,info:ma,name:ra}),"*")}),null,null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,1==G.withoutType);this.showDialog(Z.container,620,460,!0,!1,mxUtils.bind(this,
-function(P){this.sidebar.hideTooltip();P&&this.actions.get("exit").funct()}));Z.init();return}if("textContent"==G.action){var V=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:V,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var J=
-null!=G.messageKey?mxResources.get(G.messageKey):G.message;null==G.show||G.show?this.spinner.spin(document.body,J):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):
-G.spin)){var W=null!=G.xml?G.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var Q=this.editor.graph,S=mxUtils.bind(this,function(P){this.editor.graph.setEnabled(!0);this.spinner.stop();var ma=this.createLoadMessage("export");ma.format=G.format;ma.message=G;ma.data=P;ma.xml=W;F.postMessage(JSON.stringify(ma),"*")}),ha=mxUtils.bind(this,function(P){null==P&&(P=Editor.blankImage);"xmlpng"==G.format&&(P=Editor.writeGraphModelToPng(P,"tEXt","mxfile",encodeURIComponent(W)));Q!=this.editor.graph&&
-Q.container.parentNode.removeChild(Q.container);S(P)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var u=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var P=Q.getGlobalVariable;Q=this.createTemporaryGraph(Q.getStylesheet());for(var ma,ra=0;ra<this.pages.length;ra++)if(this.pages[ra].getId()==la){ma=this.updatePageRoot(this.pages[ra]);break}null==ma&&(ma=this.currentPage);Q.getGlobalVariable=
-function(Ca){return"page"==Ca?ma.getName():"pagenumber"==Ca?1:P.apply(this,arguments)};document.body.appendChild(Q.container);Q.model.setRoot(ma.root)}if(null!=G.layerIds){var xa=Q.model,ta=xa.getChildCells(xa.getRoot()),Aa={};for(ra=0;ra<G.layerIds.length;ra++)Aa[G.layerIds[ra]]=!0;for(ra=0;ra<ta.length;ra++)xa.setVisible(ta[ra],Aa[ta[ra].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ca){ha(Ca.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ha(null)}),
-null,null,G.scale,G.transparent,G.shadow,null,Q,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length&&(g=!0,this.setFileData(W),g=!1);u()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(W))).send(mxUtils.bind(this,function(P){200<=P.getStatus()&&
-299>=P.getStatus()?S("data:image/png;base64,"+P.getText()):ha(null)}),mxUtils.bind(this,function(){ha(null)}))}}else u=mxUtils.bind(this,function(){var P=this.createLoadMessage("export");P.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ma=this.getXmlFileData();P.xml=mxUtils.getXml(ma);P.data=this.getFileData(null,null,!0,null,null,null,ma);P.format=G.format}else if("html"==G.format)ma=this.editor.getGraphXml(),P.data=this.getHtml(ma,
-this.editor.graph),P.xml=mxUtils.getXml(ma),P.format=G.format;else{mxSvgCanvas2D.prototype.foAltText=null;ma=null!=G.background?G.background:this.editor.graph.background;ma==mxConstants.NONE&&(ma=null);P.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);P.format="svg";var ra=mxUtils.bind(this,function(xa){this.editor.graph.setEnabled(!0);this.spinner.stop();P.data=Editor.createSvgDataUri(xa);F.postMessage(JSON.stringify(P),"*")});if("xmlsvg"==G.format)(null==G.spin&&null==G.spinKey||
-this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))&&this.getEmbeddedSvg(P.xml,this.editor.graph,null,!0,ra,null,null,G.embedImages,ma,G.scale,G.border,G.shadow,G.keepTheme);else if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))this.editor.graph.setEnabled(!1),ma=this.editor.graph.getSvg(ma,G.scale,G.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||G.shadow,null,G.keepTheme),(this.editor.graph.shadowVisible||
-G.shadow)&&this.editor.graph.addSvgShadow(ma),this.embedFonts(ma,mxUtils.bind(this,function(xa){G.embedImages||null==G.embedImages?this.editor.convertImages(xa,mxUtils.bind(this,function(ta){ra(mxUtils.getXml(ta))})):ra(mxUtils.getXml(xa))}));return}F.postMessage(JSON.stringify(P),"*")}),null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(G.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(u)},0):u()):u();return}if("load"==G.action){ba=G.toSketch;m=1==G.autosave;
-this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var H=Editor.sketchMode;this.doSetSketchMode(G.rough);H!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(H=Editor.darkMode,this.doSetDarkMode(G.dark),H!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));
-null!=G.border&&(this.embedExportBorder=G.border);null!=G.background&&(this.embedExportBackground=G.background);null!=G.viewport&&(this.embedViewport=G.viewport);this.embedExitPoint=null;if(null!=G.rect){var O=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=G.rect.top+"px";this.diagramContainer.style.left=G.rect.left+"px";this.diagramContainer.style.height=G.rect.height+"px";this.diagramContainer.style.width=G.rect.width+"px";this.diagramContainer.style.bottom=
-"";this.diagramContainer.style.right="";aa=mxUtils.bind(this,function(){var P=this.editor.graph,ma=P.maxFitScale;P.maxFitScale=G.maxFitScale;P.fit(2*O);P.maxFitScale=ma;P.container.scrollTop-=2*O;P.container.scrollLeft-=2*O;this.fireEvent(new mxEventObject("editInlineStart","data",[G]))})}null!=G.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=G.noExitBtn);null!=G.title&&null!=this.buttonContainer&&(qa=document.createElement("span"),mxUtils.write(qa,G.title),null!=this.embedFilenameSpan&&
-this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(qa),this.embedFilenameSpan=qa);try{G.libs&&this.sidebar.showEntries(G.libs)}catch(P){}G=null!=G.xmlpng?this.extractGraphModelFromPng(G.xmlpng):null!=G.descriptor?G.descriptor:G.xml}else{if("merge"==G.action){var T=this.getCurrentFile();null!=T&&(qa=ca(G.xml),null!=qa&&""!=qa&&T.mergeFile(new LocalFile(this,qa),function(){F.postMessage(JSON.stringify({event:"merge",message:G}),"*")},function(P){F.postMessage(JSON.stringify({event:"merge",
-message:G,error:P}),"*")}))}else"remoteInvokeReady"==G.action?this.handleRemoteInvokeReady(F):"remoteInvoke"==G.action?this.handleRemoteInvoke(G,I.origin):"remoteInvokeResponse"==G.action?this.handleRemoteInvokeResponse(G):F.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(G)}),"*");return}}catch(P){this.handleError(P)}}var R=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),
-da=mxUtils.bind(this,function(P,ma){g=!0;try{d(P,ma,null,ba)}catch(ra){this.handleError(ra)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=R();m&&null==f&&(f=mxUtils.bind(this,function(ra,xa){ra=R();ra==q||g||(xa=this.createLoadMessage("autosave"),xa.xml=ra,(window.opener||window.parent).postMessage(JSON.stringify(xa),"*"));q=ra}),this.editor.graph.model.addListener(mxEvent.CHANGE,f),this.editor.graph.addListener("gridSizeChanged",f),this.editor.graph.addListener("shadowVisibleChanged",
-f),this.addListener("pageFormatChanged",f),this.addListener("pageScaleChanged",f),this.addListener("backgroundColorChanged",f),this.addListener("backgroundImageChanged",f),this.addListener("foldingEnabledChanged",f),this.addListener("mathEnabledChanged",f),this.addListener("gridEnabledChanged",f),this.addListener("guidesEnabledChanged",f),this.addListener("pageViewChanged",f));if("1"==urlParams.returnbounds||"json"==urlParams.proto)ma=this.createLoadMessage("load"),ma.xml=P,F.postMessage(JSON.stringify(ma),
-"*");null!=aa&&aa()});null!=G&&"function"===typeof G.substring&&"data:application/vnd.visio;base64,"==G.substring(0,34)?(ca="0M8R4KGxGuE"==G.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(G.substring(G.indexOf(",")+1)),function(P){da(P,I)},mxUtils.bind(this,function(P){this.handleError(P)}),ca)):null!=G&&"function"===typeof G.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(G,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):
-this.parseFileData(G,mxUtils.bind(this,function(P){4==P.readyState&&200<=P.status&&299>=P.status&&"<mxGraphModel"==P.responseText.substring(0,13)&&da(P.responseText,I)}),""):null!=G&&"function"===typeof G.substring&&this.isLucidChartData(G)?this.convertLucidChart(G,mxUtils.bind(this,function(P){da(P)}),mxUtils.bind(this,function(P){this.handleError(P)})):null==G||"object"!==typeof G||null==G.format||null==G.data&&null==G.url?(G=ca(G),da(G,I)):this.loadDescriptor(G,mxUtils.bind(this,function(P){da(R(),
-I)}),mxUtils.bind(this,function(P){this.handleError(P,mxResources.get("errorLoadingFile"))}))}}));var F=window.opener||window.parent;y="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";F.postMessage(y,"*");if("json"==urlParams.proto){var C=this.editor.graph.openLink;this.editor.graph.openLink=function(I,G,aa){C.apply(this,arguments);F.postMessage(JSON.stringify({event:"openLink",href:I,target:G,allowOpener:aa}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=
-this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var m="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,
-m);f.setAttribute("title",m);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),d.appendChild(f),"1"==urlParams.saveAndExit&&(f=document.createElement("a"),mxUtils.write(f,mxResources.get("saveAndExit")),f.setAttribute("title",
-mxResources.get("saveAndExit")),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),d.appendChild(f),g=f);"1"!=urlParams.noExitBtn&&(f=document.createElement("a"),g="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(f,g),f.setAttribute("title",g),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,
-"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),d.appendChild(f),g=f);g.style.marginRight="20px";this.toolbar.container.appendChild(d);this.toolbar.staticElements.push(d);d.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,
-430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.loadOrgChartLayouts=function(d){var f=mxUtils.bind(this,function(){this.loadingOrgChart=!1;this.spinner.stop();d()});"undefined"!==typeof mxOrgChartLayout||this.loadingOrgChart||this.isOffline(!0)?f():this.spinner.spin(document.body,mxResources.get("loading"))&&
-(this.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.importCsv=function(d,f){this.loadOrgChartLayouts(mxUtils.bind(this,function(){this.doImportCsv(d,f)}))};EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=
-[],F={};if(0<g.length){var C={},I=this.editor.graph,G=null,aa=null,ca=null,ba=null,Z=null,qa=null,N=null,Y="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",V="auto",J="auto",W=!1,Q=null,S=null,ha=40,la=40,u=100,H=0,O=function(){null!=f?f(ua):(I.setSelectionCells(ua),I.scrollCellToVisible(I.getSelectionCell()))},T=I.getFreeInsertPoint(),R=T.x,da=T.y;T=da;var P=null,ma="auto";ka=null;for(var ra=[],xa=null,ta=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&
-"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),Aa++;if("#"!=d.charAt(1)){var Ca=d.indexOf(":");if(0<Ca){var Ba=mxUtils.trim(d.substring(1,Ca)),sa=mxUtils.trim(d.substring(Ca+1));"label"==Ba?P=I.sanitizeHtml(sa):"labelname"==Ba&&0<sa.length&&"-"!=sa?Z=sa:"labels"==Ba&&0<sa.length&&"-"!=sa?N=JSON.parse(sa):"style"==Ba?aa=sa:"parentstyle"==Ba?Y=sa:"unknownStyle"==Ba&&"-"!=sa?qa=sa:"stylename"==Ba&&0<sa.length&&"-"!=sa?ba=sa:"styles"==Ba&&
-0<sa.length&&"-"!=sa?ca=JSON.parse(sa):"vars"==Ba&&0<sa.length&&"-"!=sa?G=JSON.parse(sa):"identity"==Ba&&0<sa.length&&"-"!=sa?ea=sa:"parent"==Ba&&0<sa.length&&"-"!=sa?ka=sa:"namespace"==Ba&&0<sa.length&&"-"!=sa?ja=sa:"width"==Ba?V=sa:"height"==Ba?J=sa:"collapsed"==Ba&&"-"!=sa?W="true"==sa:"left"==Ba&&0<sa.length?Q=sa:"top"==Ba&&0<sa.length?S=sa:"ignore"==Ba?ta=sa.split(","):"connect"==Ba?ra.push(JSON.parse(sa)):"link"==Ba?xa=sa:"padding"==Ba?H=parseFloat(sa):"edgespacing"==Ba?ha=parseFloat(sa):"nodespacing"==
-Ba?la=parseFloat(sa):"levelspacing"==Ba?u=parseFloat(sa):"layout"==Ba&&(ma=sa)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));var Oa=this.editor.csvToArray(g[Aa].replace(/\r$/,""));Ca=d=null;Ba=[];for(sa=0;sa<Oa.length;sa++)ea==Oa[sa]&&(d=sa),ka==Oa[sa]&&(Ca=sa),Ba.push(mxUtils.trim(Oa[sa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==P&&(P="%"+Ba[0]+"%");if(null!=ra)for(var Ta=0;Ta<ra.length;Ta++)null==C[ra[Ta].to]&&(C[ra[Ta].to]={});ea=[];for(sa=
-Aa+1;sa<g.length;sa++){var Sa=this.editor.csvToArray(g[sa].replace(/\r$/,""));if(null==Sa){var $a=40<g[sa].length?g[sa].substring(0,40)+"...":g[sa];throw Error($a+" ("+sa+"):\n"+mxResources.get("containsValidationErrors"));}0<Sa.length&&ea.push(Sa)}I.model.beginUpdate();try{for(sa=0;sa<ea.length;sa++){Sa=ea[sa];var Ga=null,eb=null!=d?ja+Sa[d]:null;g=!1;null!=eb&&(Ga=I.model.getCell(eb),g=null==Ga||0<=mxUtils.indexOf(m,Ga));var bb=new mxCell(P,new mxGeometry(R,T,0,0),aa||"whiteSpace=wrap;html=1;");
-bb.collapsed=W;bb.vertex=!0;bb.id=eb;null==Ga||g||I.model.setCollapsed(Ga,W);for(var z=0;z<Sa.length;z++)I.setAttributeForCell(bb,Ba[z],Sa[z]),null==Ga||g||I.setAttributeForCell(Ga,Ba[z],Sa[z]);if(null!=Z&&null!=N){var L=N[bb.getAttribute(Z)];null!=L&&(I.labelChanged(bb,L),null==Ga||g||I.cellLabelChanged(Ga,L))}if(null!=ba&&null!=ca){var M=ca[bb.getAttribute(ba)];null!=M&&(bb.style=M)}I.setAttributeForCell(bb,"placeholders","1");bb.style=I.replacePlaceholders(bb,bb.style,G);null==Ga||g?I.fireEvent(new mxEventObject("cellsInserted",
-"cells",[bb])):(I.model.setStyle(Ga,bb.style),0>mxUtils.indexOf(y,Ga)&&y.push(Ga),I.fireEvent(new mxEventObject("cellsInserted","cells",[Ga])));g=null!=Ga;Ga=bb;if(!g)for(Ta=0;Ta<ra.length;Ta++)C[ra[Ta].to][Ga.getAttribute(ra[Ta].to)]=Ga;null!=xa&&"link"!=xa&&(I.setLinkForCell(Ga,Ga.getAttribute(xa)),I.setAttributeForCell(Ga,xa,null));var U=this.editor.graph.getPreferredSizeForCell(Ga);ka=null!=Ca?I.model.getCell(ja+Sa[Ca]):null;if(Ga.vertex){$a=null!=ka?0:R;Aa=null!=ka?0:da;null!=Q&&null!=Ga.getAttribute(Q)&&
-(Ga.geometry.x=$a+parseFloat(Ga.getAttribute(Q)));null!=S&&null!=Ga.getAttribute(S)&&(Ga.geometry.y=Aa+parseFloat(Ga.getAttribute(S)));var X="@"==V.charAt(0)?Ga.getAttribute(V.substring(1)):null;Ga.geometry.width=null!=X&&"auto"!=X?parseFloat(Ga.getAttribute(V.substring(1))):"auto"==V||"auto"==X?U.width+H:parseFloat(V);var fa="@"==J.charAt(0)?Ga.getAttribute(J.substring(1)):null;Ga.geometry.height=null!=fa&&"auto"!=fa?parseFloat(fa):"auto"==J||"auto"==fa?U.height+H:parseFloat(J);T+=Ga.geometry.height+
-la}g?(null==F[eb]&&(F[eb]=[]),F[eb].push(Ga)):(m.push(Ga),null!=ka?(ka.style=I.replacePlaceholders(ka,Y,G),I.addCell(Ga,ka),q.push(ka)):y.push(I.addCell(Ga)))}for(sa=0;sa<q.length;sa++)X="@"==V.charAt(0)?q[sa].getAttribute(V.substring(1)):null,fa="@"==J.charAt(0)?q[sa].getAttribute(J.substring(1)):null,"auto"!=V&&"auto"!=X||"auto"!=J&&"auto"!=fa||I.updateGroupBounds([q[sa]],H,!0);var na=y.slice(),ua=y.slice();for(Ta=0;Ta<ra.length;Ta++){var pa=ra[Ta];for(sa=0;sa<m.length;sa++){Ga=m[sa];var za=mxUtils.bind(this,
-function(Ya,cb,fb){var qb=cb.getAttribute(fb.from);if(null!=qb&&""!=qb){qb=qb.split(",");for(var ub=0;ub<qb.length;ub++){var ab=C[fb.to][qb[ub]];if(null==ab&&null!=qa){ab=new mxCell(qb[ub],new mxGeometry(R,da,0,0),qa);ab.style=I.replacePlaceholders(cb,ab.style,G);var db=this.editor.graph.getPreferredSizeForCell(ab);ab.geometry.width=db.width+H;ab.geometry.height=db.height+H;C[fb.to][qb[ub]]=ab;ab.vertex=!0;ab.id=qb[ub];y.push(I.addCell(ab))}if(null!=ab){db=fb.label;null!=fb.fromlabel&&(db=(cb.getAttribute(fb.fromlabel)||
-"")+(db||""));null!=fb.sourcelabel&&(db=I.replacePlaceholders(cb,fb.sourcelabel,G)+(db||""));null!=fb.tolabel&&(db=(db||"")+(ab.getAttribute(fb.tolabel)||""));null!=fb.targetlabel&&(db=(db||"")+I.replacePlaceholders(ab,fb.targetlabel,G));var kb="target"==fb.placeholders==!fb.invert?ab:Ya;kb=null!=fb.style?I.replacePlaceholders(kb,fb.style,G):I.createCurrentEdgeStyle();db=I.insertEdge(null,null,db||"",fb.invert?ab:Ya,fb.invert?Ya:ab,kb);if(null!=fb.labels)for(kb=0;kb<fb.labels.length;kb++){var ib=
-fb.labels[kb],nb=new mxCell(ib.label||kb,new mxGeometry(null!=ib.x?ib.x:0,null!=ib.y?ib.y:0,0,0),"resizable=0;html=1;");nb.vertex=!0;nb.connectable=!1;nb.geometry.relative=!0;null!=ib.placeholders&&(nb.value=I.replacePlaceholders("target"==ib.placeholders==!fb.invert?ab:Ya,nb.value,G));if(null!=ib.dx||null!=ib.dy)nb.geometry.offset=new mxPoint(null!=ib.dx?ib.dx:0,null!=ib.dy?ib.dy:0);db.insert(nb)}ua.push(db);mxUtils.remove(fb.invert?Ya:ab,na)}}}});za(Ga,Ga,pa);if(null!=F[Ga.id])for(z=0;z<F[Ga.id].length;z++)za(Ga,
-F[Ga.id][z],pa)}}if(null!=ta)for(sa=0;sa<m.length;sa++)for(Ga=m[sa],z=0;z<ta.length;z++)I.setAttributeForCell(Ga,mxUtils.trim(ta[z]),null);if(0<y.length){var Da=new mxParallelEdgeLayout(I);Da.spacing=ha;Da.checkOverlap=!0;var Ma=function(){0<Da.spacing&&Da.execute(I.getDefaultParent());for(var Ya=0;Ya<y.length;Ya++){var cb=I.getCellGeometry(y[Ya]);cb.x=Math.round(I.snap(cb.x));cb.y=Math.round(I.snap(cb.y));"auto"==V&&(cb.width=Math.round(I.snap(cb.width)));"auto"==J&&(cb.height=Math.round(I.snap(cb.height)))}};
-if("["==ma.charAt(0)){var La=O;I.view.validate();this.executeLayouts(I.createLayouts(JSON.parse(ma)),function(){Ma();La()});O=null}else if("circle"==ma){var Ua=new mxCircleLayout(I);Ua.disableEdgeStyle=!1;Ua.resetEdges=!1;var Ra=Ua.isVertexIgnored;Ua.isVertexIgnored=function(Ya){return Ra.apply(this,arguments)||0>mxUtils.indexOf(y,Ya)};this.executeLayout(function(){Ua.execute(I.getDefaultParent());Ma()},!0,O);O=null}else if("horizontaltree"==ma||"verticaltree"==ma||"auto"==ma&&ua.length==2*y.length-
-1&&1==na.length){I.view.validate();var Fa=new mxCompactTreeLayout(I,"horizontaltree"==ma);Fa.levelDistance=la;Fa.edgeRouting=!1;Fa.resetEdges=!1;this.executeLayout(function(){Fa.execute(I.getDefaultParent(),0<na.length?na[0]:null)},!0,O);O=null}else if("horizontalflow"==ma||"verticalflow"==ma||"auto"==ma&&1==na.length){I.view.validate();var va=new mxHierarchicalLayout(I,"horizontalflow"==ma?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);va.intraCellSpacing=la;va.parallelEdgeSpacing=ha;va.interRankCellSpacing=
-u;va.disableEdgeStyle=!1;this.executeLayout(function(){va.execute(I.getDefaultParent(),ua);I.moveCells(ua,R,da)},!0,O);O=null}else if("orgchart"==ma){I.view.validate();var ya=new mxOrgChartLayout(I,2,u,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(Ya){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,Ya)};this.executeLayout(function(){ya.execute(I.getDefaultParent());Ma()},!0,O);O=null}else if("organic"==ma||"auto"==ma&&ua.length>y.length){I.view.validate();var Ja=new mxFastOrganicLayout(I);
-Ja.forceConstant=3*la;Ja.disableEdgeStyle=!1;Ja.resetEdges=!1;var Pa=Ja.isVertexIgnored;Ja.isVertexIgnored=function(Ya){return Pa.apply(this,arguments)||0>mxUtils.indexOf(y,Ya)};this.executeLayout(function(){Ja.execute(I.getDefaultParent());Ma()},!0,O);O=null}}this.hideDialog()}finally{I.model.endUpdate()}null!=O&&O()}}catch(Ya){this.handleError(Ya)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",
-m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],
-f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;
-return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);
-g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&
-d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=
-function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,f=this.getCurrentFile(),g=this.getSelectionState(),m=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(m);
-this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());this.actions.get("guides").setEnabled(m);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(m);this.actions.get("connectionArrows").setEnabled(m);this.actions.get("connectionPoints").setEnabled(m);this.actions.get("copyStyle").setEnabled(m&&!d.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(m&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<
-g.vertices.length);this.actions.get("createShape").setEnabled(m);this.actions.get("createRevision").setEnabled(m);this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(m&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=
-this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):
-"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(m&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(d,f,g,m,q,y,F,C){var I=d.editor.graph;
-if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,"svg",mxUtils.getXml(I.getSvg(m,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),aa=I.getGraphBounds(),ca=Math.floor(aa.width*q/I.view.scale),ba=Math.floor(aa.height*q/I.view.scale);if(G.length<=MAX_REQUEST_SIZE&&ca*ba<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=g&&"jpeg"!=g||!d.isExportToCanvas()){var Z={globalVars:I.getExportVariables()};
-C&&(Z.grid={size:I.gridSize,steps:I.view.gridSteps,color:I.view.gridColor});d.saveRequest(f,g,function(qa,N){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(N||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Z))+(0<F?"&dpi="+F:"")+"&bg="+(null!=m?m:"none")+"&w="+ca+"&h="+ba+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==m||"none"==m,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",
-C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var m=d;this.currentPage!=this.pages[g]&&(m=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),m.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+m.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);
-return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var m=document.createElement("h3");mxUtils.write(m,mxUtils.htmlEntities(d));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(m);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';
-var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var I=JSON.parse(decodeURIComponent(C.substring(1)));y[I[0]]={id:I[0],title:I[1],downloadUrl:I[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerText="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var aa=0;aa<G.length;aa++){var ca=G[aa];y[ca.id]&&
-(f[ca.id]=ca);var ba=this.addCheckbox(q,ca.title,y[ca.id]);(function(Z,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Z.id]=Z:delete f[Z.id]})})(ca,ba)}},mxUtils.bind(this,function(G){q.innerText="";var aa=document.createElement("div");aa.style.padding="8px";aa.style.textAlign="center";mxUtils.write(aa,mxResources.get("error")+": ");mxUtils.write(aa,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));q.appendChild(aa)}));g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,
-function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,aa;for(aa in f)null==y[aa]&&(G++,mxUtils.bind(this,function(ca){this.remoteInvoke("getFileContent",[ca.downloadUrl],null,mxUtils.bind(this,function(ba){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,ba,ca))}catch(Z){this.handleError(Z,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(f[aa]));
-for(aa in y)f[aa]||this.closeLibrary(new RemoteLibrary(this,null,y[aa]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};
-EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==g)throw Error("No callback for "+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):
-g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,m,q){var y=!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&m.apply(this,arguments)}),I=mxUtils.bind(this,function(){window.clearTimeout(F);y&&q.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;
-this.remoteInvokeCallbacks.push({callback:C,error:I});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,aa){var ca={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=aa?ca.error={errResp:aa}:null!=G&&(ca.resp=G);this.remoteWin.postMessage(JSON.stringify(ca),"*")});try{var m=d.funtionName,
-q=this.remoteInvokableFns[m];if(null!=q&&"function"===typeof this[m]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+m+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),this[m].apply(this,C);else{var I=this[m].apply(this,C);g([I])}}else g(null,"Invalid Call: "+
-m+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var m=g.open("database",2);m.onupgradeneeded=function(q){try{var y=m.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",{keyPath:"title"}),y.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=
-isLocalStorage)}catch(F){null!=f&&f(F)}};m.onsuccess=mxUtils.bind(this,function(q){var y=m.result;this.database=y;EditorUi.migrateStorageFiles&&(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=document.createElement("iframe");C.style.display="none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+
-urlParams.forceMigration);document.body.appendChild(C);var I=!0,G=!1,aa,ca=0,ba=mxUtils.bind(this,function(){G=!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Z=mxUtils.bind(this,function(){ca++;qa()}),qa=mxUtils.bind(this,function(){try{if(ca>=aa.length)ba();else{var Y=aa[ca];StorageFile.getFileContent(this,Y,mxUtils.bind(this,function(ea){null==ea||".scratchpad"==Y&&ea==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
-funtionName:"getLocalStorageFile",functionArgs:[Y]}),"*"):Z()}),Z)}}catch(ea){console.log(ea)}}),N=mxUtils.bind(this,function(Y){try{this.setDatabaseItem(null,[{title:Y.title,size:Y.data.length,lastModified:Date.now(),type:Y.isLib?"L":"F"},{title:Y.title,data:Y.data}],Z,Z,["filesInfo","files"])}catch(ea){console.log(ea)}});F=mxUtils.bind(this,function(Y){try{if(Y.source==C.contentWindow){var ea={};try{ea=JSON.parse(Y.data)}catch(ka){}"init"==ea.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
-"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=ea.event||G||(I?null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?(aa=ea.resp[0],I=!1,qa()):ba():null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?N(ea.resp[0]):Z())}}catch(ka){console.log(ka)}});window.addEventListener("message",F)}})));d(y);y.onversionchange=function(){y.close()}});m.onerror=f;m.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&
-f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,f,g,m,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=m;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=m&&m(C)}}),m)};EditorUi.prototype.removeDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){m=m||"objects";Array.isArray(m)||
-(m=[m],d=[d]);q=q.transaction(m,"readwrite");q.oncomplete=f;q.onerror=g;for(var y=0;y<m.length;y++)q.objectStore(m[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){try{m=m||"objects";var y=q.transaction([m],"readonly").objectStore(m).get(d);y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||
-"objects";var q=m.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=
-f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=
-function(d,f,g){var m=this.getCurrentFile();null!=m?m.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,f){var g=this.getCurrentFile();return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=
-function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=
-function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,f,g,m,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,m,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=
-function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba,Z,qa,N){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,m,q,y,F,C,I,G,aa,ca,ba,Z,qa,N)};EditorUi.prototype.createImageUrlConverter=
-function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,m)};EditorUi.prototype.convertImageToDataUri=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");
-return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==
-localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===m.substring(0,8)||"<?xml"===m.substring(0,5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&
-"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ja=ca.getElementsByTagName("div"),V=0,J=0;J<ja.length;J++)"none"!=ja[J].style.display&&ja[J].parentNode==ca&&V++;ba.style.display=0==V?"block":"none"}function d(ja,V,J,W){function Q(){V.removeChild(la);V.removeChild(u);ha.style.display="block";S.style.display="block"}I={div:V,comment:ja,saveCallback:J,deleteOnCancel:W};var S=V.querySelector(".geCommentTxt"),ha=V.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
-la.className="geCommentEditTxtArea";la.style.minHeight=S.offsetHeight+"px";la.value=ja.content;V.insertBefore(la,S);var u=document.createElement("div");u.className="geCommentEditBtns";var H=mxUtils.button(mxResources.get("cancel"),function(){W?(V.parentNode.removeChild(V),E()):Q();I=null});H.className="geCommentEditBtn";u.appendChild(H);var O=mxUtils.button(mxResources.get("save"),function(){S.innerText="";ja.content=la.value;mxUtils.write(S,ja.content);Q();J(ja);I=null});mxEvent.addListener(la,"keydown",
-mxUtils.bind(this,function(T){mxEvent.isConsumed(T)||((mxEvent.isControlDown(T)||mxClient.IS_MAC&&mxEvent.isMetaDown(T))&&13==T.keyCode?(O.click(),mxEvent.consume(T)):27==T.keyCode&&(H.click(),mxEvent.consume(T)))}));O.focus();O.className="geCommentEditBtn gePrimaryBtn";u.appendChild(O);V.insertBefore(u,S);ha.style.display="none";S.style.display="none";la.focus()}function f(ja,V){V.innerText="";ja=new Date(ja.modifiedDate);var J=b.timeSince(ja);null==J&&(J=mxResources.get("lessThanAMinute"));mxUtils.write(V,
-mxResources.get("timeAgo",[J],"{1} ago"));V.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var V=document.createElement("img");V.className="geCommentBusyImg";V.src=IMAGE_PATH+"/spin.gif";ja.appendChild(V);ja.busyImg=V}function m(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,V,J,W,Q){function S(da,P,ma){var ra=document.createElement("li");ra.className="geCommentAction";
-var xa=document.createElement("a");xa.className="geCommentActionLnk";mxUtils.write(xa,da);ra.appendChild(xa);mxEvent.addListener(xa,"click",function(ta){P(ta,ja);ta.preventDefault();mxEvent.consume(ta)});R.appendChild(ra);ma&&(ra.style.display="none")}function ha(){function da(ra){P.push(ma);if(null!=ra.replies)for(var xa=0;xa<ra.replies.length;xa++)ma=ma.nextSibling,da(ra.replies[xa])}var P=[],ma=u;da(ja);return{pdiv:ma,replies:P}}function la(da,P,ma,ra,xa){function ta(){g(sa);ja.addReply(Ba,function(Oa){Ba.id=
-Oa;ja.replies.push(Ba);q(sa);ma&&ma()},function(Oa){Aa();m(sa);b.handleError(Oa,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},ra,xa)}function Aa(){d(Ba,sa,function(Oa){ta()},!0)}var Ca=ha().pdiv,Ba=b.newComment(da,b.getCurrentUser());Ba.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var sa=y(Ba,ja.replies,Ca,W+1);P?Aa():ta()}if(Q||!ja.isResolved){ba.style.display="none";var u=document.createElement("div");u.className="geCommentContainer";u.setAttribute("data-commentId",
-ja.id);u.style.marginLeft=20*W+5+"px";ja.isResolved&&!Editor.isDarkMode()&&(u.style.backgroundColor="ghostWhite");var H=document.createElement("div");H.className="geCommentHeader";var O=document.createElement("img");O.className="geCommentUserImg";O.src=ja.user.pictureUrl||Editor.userImage;H.appendChild(O);O=document.createElement("div");O.className="geCommentHeaderTxt";H.appendChild(O);var T=document.createElement("div");T.className="geCommentUsername";mxUtils.write(T,ja.user.displayName||"");O.appendChild(T);
-T=document.createElement("div");T.className="geCommentDate";T.setAttribute("data-commentId",ja.id);f(ja,T);O.appendChild(T);u.appendChild(H);H=document.createElement("div");H.className="geCommentTxt";mxUtils.write(H,ja.content||"");u.appendChild(H);ja.isLocked&&(u.style.opacity="0.5");H=document.createElement("div");H.className="geCommentActions";var R=document.createElement("ul");R.className="geCommentActionsList";H.appendChild(R);F||ja.isLocked||0!=W&&!C||S(mxResources.get("reply"),function(){la("",
-!0)},ja.isResolved);O=b.getCurrentUser();null==O||O.id!=ja.user.id||F||ja.isLocked||(S(mxResources.get("edit"),function(){function da(){d(ja,u,function(){g(u);ja.editComment(ja.content,function(){q(u)},function(P){m(u);da();b.handleError(P,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}da()},ja.isResolved),S(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(u);ja.deleteComment(function(da){if(!0===da){da=u.querySelector(".geCommentTxt");
-da.innerText="";mxUtils.write(da,mxResources.get("msgDeleted"));var P=u.querySelectorAll(".geCommentAction");for(da=0;da<P.length;da++)P[da].parentNode.removeChild(P[da]);q(u);u.style.opacity="0.5"}else{P=ha(ja).replies;for(da=0;da<P.length;da++)ca.removeChild(P[da]);for(da=0;da<V.length;da++)if(V[da]==ja){V.splice(da,1);break}ba.style.display=0==ca.getElementsByTagName("div").length?"block":"none"}},function(da){m(u);b.handleError(da,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
-ja.isResolved));F||ja.isLocked||0!=W||S(ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(da){function P(){var ma=da.target;ma.innerText="";ja.isResolved=!ja.isResolved;mxUtils.write(ma,ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var ra=ja.isResolved?"none":"",xa=ha(ja).replies,ta=Editor.isDarkMode()?"transparent":ja.isResolved?"ghostWhite":"white",Aa=0;Aa<xa.length;Aa++){xa[Aa].style.backgroundColor=ta;for(var Ca=xa[Aa].querySelectorAll(".geCommentAction"),
-Ba=0;Ba<Ca.length;Ba++)Ca[Ba]!=ma.parentNode&&(Ca[Ba].style.display=ra);N||(xa[Aa].style.display="none")}E()}ja.isResolved?la(mxResources.get("reOpened")+": ",!0,P,!1,!0):la(mxResources.get("markedAsResolved"),!1,P,!0)});u.appendChild(H);null!=J?ca.insertBefore(u,J.nextSibling):ca.appendChild(u);for(J=0;null!=ja.replies&&J<ja.replies.length;J++)H=ja.replies[J],H.isResolved=ja.isResolved,y(H,ja.replies,null,W+1,Q);null!=I&&(I.comment.id==ja.id?(Q=ja.content,ja.content=I.comment.content,d(ja,u,I.saveCallback,
-I.deleteOnCancel),ja.content=Q):null==I.comment.id&&I.comment.pCommentId==ja.id&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel)));return u}}var F=!b.canComment(),C=b.canReplyToReplies(),I=null,G=document.createElement("div");G.className="geCommentsWin";G.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var aa=EditorUi.compactUi?"26px":"30px",ca=document.createElement("div");ca.className="geCommentsList";ca.style.backgroundColor=Editor.isDarkMode()?
-Dialog.backdropColor:"whiteSmoke";ca.style.bottom=parseInt(aa)+7+"px";G.appendChild(ca);var ba=document.createElement("span");ba.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(ba,mxResources.get("noCommentsFound"));var Z=document.createElement("div");Z.className="geToolbarContainer geCommentsToolbar";Z.style.height=aa;Z.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";Z.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";aa=document.createElement("a");
-aa.className="geButton";if(!F){var qa=aa.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ja){function V(){d(J,W,function(Q){g(W);b.addComment(Q,function(S){Q.id=S;Y.push(Q);q(W)},function(S){m(W);V();b.handleError(S,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var J=b.newComment("",b.getCurrentUser()),W=y(J,Y,null,0);
-V();ja.preventDefault();mxEvent.consume(ja)});Z.appendChild(qa)}qa=aa.cloneNode();qa.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';qa.setAttribute("title",mxResources.get("showResolved"));var N=!1;Editor.isDarkMode()&&(qa.style.filter="invert(100%)");mxEvent.addListener(qa,"click",function(ja){this.className=(N=!N)?"geButton geCheckedBtn":"geButton";ea();ja.preventDefault();mxEvent.consume(ja)});Z.appendChild(qa);b.commentsRefreshNeeded()&&(qa=aa.cloneNode(),
-qa.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',qa.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(qa.style.filter="invert(100%)"),mxEvent.addListener(qa,"click",function(ja){ea();ja.preventDefault();mxEvent.consume(ja)}),Z.appendChild(qa));b.commentsSaveNeeded()&&(aa=aa.cloneNode(),aa.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',aa.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&
-(aa.style.filter="invert(100%)"),mxEvent.addListener(aa,"click",function(ja){t();ja.preventDefault();mxEvent.consume(ja)}),Z.appendChild(aa));G.appendChild(Z);var Y=[],ea=mxUtils.bind(this,function(){this.hasError=!1;if(null!=I)try{I.div=I.div.cloneNode(!0);var ja=I.div.querySelector(".geCommentEditTxtArea"),V=I.div.querySelector(".geCommentEditBtns");I.comment.content=ja.value;ja.parentNode.removeChild(ja);V.parentNode.removeChild(V)}catch(J){b.handleError(J)}ca.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+
-IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(J){function W(Q){if(null!=Q){Q.sort(function(ha,la){return new Date(ha.modifiedDate)-new Date(la.modifiedDate)});for(var S=0;S<Q.length;S++)W(Q[S].replies)}}J.sort(function(Q,S){return new Date(Q.modifiedDate)-new Date(S.modifiedDate)});ca.innerText="";ca.appendChild(ba);ba.style.display="block";Y=J;for(J=0;J<Y.length;J++)W(Y[J].replies),
-y(Y[J],Y,null,0,N);null!=I&&null==I.comment.id&&null==I.comment.pCommentId&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel))},mxUtils.bind(this,function(J){ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(J&&J.message?": "+J.message:""));this.hasError=!0})):ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});ea();this.refreshComments=ea;Z=mxUtils.bind(this,function(){function ja(S){var ha=J[S.id];if(null!=ha)for(f(S,ha),ha=0;null!=S.replies&&ha<S.replies.length;ha++)ja(S.replies[ha])}
-if(this.window.isVisible()){for(var V=ca.querySelectorAll(".geCommentDate"),J={},W=0;W<V.length;W++){var Q=V[W];J[Q.getAttribute("data-commentId")]=Q}for(W=0;W<Y.length;W++)ja(Y[W])}});setInterval(Z,6E4);this.refreshCommentsTime=Z;this.window=new mxWindow(mxResources.get("comments"),G,e,k,n,D,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,
-mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(ja,V){var J=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;ja=Math.max(0,Math.min(ja,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));V=Math.max(0,Math.min(V,J-this.table.clientHeight-48));this.getX()==ja&&this.getY()==V||mxWindow.prototype.setLocation.apply(this,arguments)};var ka=mxUtils.bind(this,function(){var ja=
-this.window.getX(),V=this.window.getY();this.window.setLocation(ja,V)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
-g&&(y=document.createElement("div"),y.style.padding="6px 0 6px 0",e=document.createElement("img"),e.setAttribute("src",g),y.appendChild(e),q.appendChild(y));g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";var F=document.createElement("input");F.setAttribute("type","checkbox");t=mxUtils.button(t||mxResources.get("cancel"),function(){b.hideDialog();null!=n&&n(F.checked)});t.className="geBtn";null!=d&&(t.innerHTML=d+"<br>"+t.innerHTML,t.style.paddingBottom="8px",
-t.style.paddingTop="8px",t.style.height="auto",t.style.width="40%");b.editor.cancelFirst&&g.appendChild(t);var C=mxUtils.button(D||mxResources.get("ok"),function(){b.hideDialog();null!=k&&k(F.checked)});g.appendChild(C);null!=E?(C.innerHTML=E+"<br>"+C.innerHTML+"<br>",C.style.paddingBottom="8px",C.style.paddingTop="8px",C.style.height="auto",C.className="geBtn",C.style.width="40%"):C.className="geBtn gePrimaryBtn";b.editor.cancelFirst||g.appendChild(t);q.appendChild(g);f?(g.style.marginTop="10px",
-y=document.createElement("p"),y.style.marginTop="20px",y.style.marginBottom="0px",y.appendChild(F),D=document.createElement("span"),mxUtils.write(D," "+mxResources.get("rememberThisSetting")),y.appendChild(D),q.appendChild(y),mxEvent.addListener(D,"click",function(I){F.checked=!F.checked;mxEvent.consume(I)})):g.style.marginTop="12px";this.init=function(){C.focus()};this.container=q};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")};
+G&&G<m.length&&(m=m.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+m,label:F?"remote":"local"})}catch(ca){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,m);var Z=new XMLHttpRequest;Z.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(m)?"?stencil=1":""));Z.responseType="blob";this.addRemoteServiceSecurityCheck(Z);
+null!=q&&Z.setRequestHeader("x-convert-custom",q);Z.onreadystatechange=mxUtils.bind(this,function(){if(4==Z.readyState)if(200<=Z.status&&299>=Z.status)try{var ca=Z.response;if("text/xml"==ca.type){var aa=new FileReader;aa.onload=mxUtils.bind(this,function(Y){try{f(Y.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});aa.readAsText(ca)}else this.doImportVisio(ca,f,g,m)}catch(Y){g(Y)}else try{""==Z.responseType||"text"==Z.responseType?g({message:Z.responseText}):(aa=new FileReader,
+aa.onload=function(){g({message:JSON.parse(aa.result).Message})},aa.readAsText(Z.response))}catch(Y){g({})}});Z.send(F)}else try{this.doImportVisio(d,f,g,m)}catch(ca){g(ca)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,function(q){this.handleError(q)});
+var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?m():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",m))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||
+this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var q=
+JSON.parse(d);f(LucidImporter.importState(q));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+d.length}),null!=window.console&&"1"==urlParams.test){var y=[(new Date).toISOString(),"convertLucidChart",q];null!=q.state&&y.push(JSON.parse(q.state));if(null!=q.svgThumbs)for(var F=0;F<q.svgThumbs.length;F++)y.push(Editor.createSvgDataUri(q.svgThumbs[F]));null!=q.thumb&&y.push(q.thumb);console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});
+"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(m,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){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",m)})})})}):mxscript("js/extensions.min.js",m))};EditorUi.prototype.generateMermaidImage=function(d,
+f,g,m){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");
+if(0<C.length){var I=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(I)||isNaN(G))try{var Z=C[0].getAttribute("viewBox").split(/\s+/);I=parseFloat(Z[2]);G=parseFloat(Z[3])}catch(ca){I=I||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),I,G)}else m({message:mxResources.get("invalidInput")})}catch(ca){m(ca)}})}catch(F){m(F)}};"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",
+y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,m){function q(C,I,G){c1=C>>2;c2=(C&3)<<4|I>>4;c3=(I&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+C);C-=26;return 0==C?"-":1==C?"_":"?"}var F=new XMLHttpRequest;F.open("GET",("txt"==f?PLANT_URL+"/txt/":"png"==f?PLANT_URL+"/png/":
+PLANT_URL+"/svg/")+function(C){r="";for(i=0;i<C.length;i+=3)r=i+2==C.length?r+q(C.charCodeAt(i),C.charCodeAt(i+1),0):i+1==C.length?r+q(C.charCodeAt(i),0,0):r+q(C.charCodeAt(i),C.charCodeAt(i+1),C.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(d))),!0);"txt"!=f&&(F.responseType="blob");F.onload=function(C){if(200<=this.status&&300>this.status)if("txt"==f)g(this.response);else{var I=new FileReader;I.readAsDataURL(this.response);I.onloadend=function(G){var Z=new Image;Z.onload=
+function(){try{var ca=Z.width,aa=Z.height;if(0==ca&&0==aa){var Y=I.result,qa=Y.indexOf(","),Q=decodeURIComponent(escape(atob(Y.substring(qa+1)))),X=mxUtils.parseXml(Q).getElementsByTagName("svg");0<X.length&&(ca=parseFloat(X[0].getAttribute("width")),aa=parseFloat(X[0].getAttribute("height")))}g(I.result,ca,aa)}catch(fa){m(fa)}};Z.src=I.result};I.onerror=function(G){m(G)}}else m(C)};F.onerror=function(C){m(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var m=this.editor.graph,q=
+null;m.getModel().beginUpdate();try{q=m.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),m.updateCellSize(q,!0)}finally{m.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(d.replace(/\s+/g,
+" "),mxUtils.bind(this,function(aa){4==aa.readyState&&200<=aa.status&&299>=aa.status&&this.editor.graph.setSelectionCells(this.insertTextAt(aa.responseText,f,g,!0))}));else if("data:"==d.substring(0,5)||!this.isOffline()&&(q||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d))){var I=this.editor.graph;if("data:application/pdf;base64,"==d.substring(0,28)){var G=Editor.extractGraphModelFromPdf(d);if(null!=G&&0<G.length)return this.importXml(G,f,g,y,!0,C)}if(Editor.isPngDataUrl(d)&&(G=Editor.extractGraphModelFromPng(d),
+null!=G&&0<G.length))return this.importXml(G,f,g,y,!0,C);if("data:image/svg+xml;"==d.substring(0,19))try{G=null;"data:image/svg+xml;base64,"==d.substring(0,26)?(G=d.substring(d.indexOf(",")+1),G=window.atob&&!mxClient.IS_SF?atob(G):Base64.decode(G,!0)):G=decodeURIComponent(d.substring(d.indexOf(",")+1));var Z=this.importXml(G,f,g,y,!0,C);if(0<Z.length)return Z}catch(aa){}this.loadImage(d,mxUtils.bind(this,function(aa){if("data:"==d.substring(0,5))this.resizeImage(aa,d,mxUtils.bind(this,function(Q,
+X,fa){I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),X,fa,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(Q)+";"))}),F,this.maxImageSize);else{var Y=Math.min(1,Math.min(this.maxImageSize/aa.width,this.maxImageSize/aa.height)),qa=Math.round(aa.width*Y);aa=Math.round(aa.height*Y);I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),qa,aa,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+d+";"))}}),mxUtils.bind(this,function(){var aa=null;I.getModel().beginUpdate();try{aa=I.insertVertex(I.getDefaultParent(),null,d,I.snap(f),I.snap(g),1,1,"text;"+(m?"html=1;":"")),I.updateCellSize(aa),I.fireEvent(new mxEventObject("textInserted","cells",[aa]))}finally{I.getModel().endUpdate()}I.setSelectionCell(aa)}))}else{d=Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,
+function(aa){this.editor.graph.setSelectionCells(this.importXml(aa,f,g,y,null,C))}),mxUtils.bind(this,function(aa){this.handleError(aa)}));else{I=this.editor.graph;q=null;I.getModel().beginUpdate();try{q=I.insertVertex(I.getDefaultParent(),null,"",I.snap(f),I.snap(g),1,1,"text;whiteSpace=wrap;"+(m?"html=1;":""));I.fireEvent(new mxEventObject("textInserted","cells",[q]));"<"==d.charAt(0)&&d.indexOf(">")==d.length-1&&(d=mxUtils.htmlEntities(d));d.length>this.maxTextBytes&&(d=d.substring(0,this.maxTextBytes)+
+"...");q.value=d;I.updateCellSize(q);if(0<this.maxTextWidth&&q.geometry.width>this.maxTextWidth){var ca=I.getPreferredSizeForCell(q,this.maxTextWidth);q.geometry.width=ca.width;q.geometry.height=ca.height}Graph.isLink(q.value)&&I.setLinkForCell(q,q.value);q.geometry.width+=I.gridSize;q.geometry.height+=I.gridSize}finally{I.getModel().endUpdate()}return[q]}}return[]};EditorUi.prototype.formatFileSize=function(d){var f=-1;do d/=1024,f++;while(1024<d);return Math.max(d,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[f]};
+EditorUi.prototype.convertDataUri=function(d){if("data:"==d.substring(0,5)){var f=d.indexOf(";");0<f&&(d=d.substring(0,f)+d.substring(d.indexOf(",",f+1)))}return d};EditorUi.prototype.isRemoteFileFormat=function(d,f){return/("contentType":\s*"application\/gliffy\+json")/.test(d)};EditorUi.prototype.isLucidChartData=function(d){return null!=d&&('{"state":"{\\"Properties\\":'==d.substring(0,26)||'{"Properties":'==d.substring(0,14))};EditorUi.prototype.importLocalFile=function(d,f){if(d&&Graph.fileSupport){if(null==
+this.importFileInputElt){var g=document.createElement("input");g.setAttribute("type","file");mxEvent.addListener(g,"change",mxUtils.bind(this,function(){null!=g.files&&(this.importFiles(g.files,null,null,this.maxImageSize),g.type="",g.type="file",g.value="")}));g.style.display="none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,
+"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.getFileContent(this,F,C,I)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.deleteFile(this,F,C,I)});if(!f){var m=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=new OpenFile(mxUtils.bind(this,function(F){this.hideDialog(F)}));window.openFile.setConsumer(mxUtils.bind(this,function(F,C){null!=C&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(C)?(F=new Blob([F],{type:"application/octet-stream"}),
+this.importVisio(F,mxUtils.bind(this,function(I){this.importXml(I,0,0,!0)}),null,C)):this.editor.graph.setSelectionCells(this.importXml(F,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=m;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
+EditorUi.prototype.importZipFile=function(d,f,g){var m=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,I=!1;y.forEach(function(G,Z){G=Z.name.toLowerCase();"diagram/diagram.xml"==G?(I=!0,Z.async("string").then(function(ca){0==ca.indexOf("<mxfile ")?f(ca):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=Z))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&
+m.isRemoteFileFormat(G,d.name)?m.isOffline()?m.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):m.parseFileData(G,mxUtils.bind(this,function(Z){4==Z.readyState&&(200<=Z.status&&299>=Z.status?f(Z.responseText):g())}),d.name):g()}):I||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,m,q,y,F,C,I,G,Z,ca){G=null!=
+G?G:!0;var aa=!1,Y=null,qa=mxUtils.bind(this,function(Q){var X=null;null!=Q&&"<mxlibrary"==Q.substring(0,10)?this.loadLibrary(new LocalLibrary(this,Q,F)):X=this.importXml(Q,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null);null!=C&&C(X)});"image"==f.substring(0,5)?(I=!1,"image/png"==f.substring(0,9)&&(f=Z?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Y=this.importXml(f,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null),I=!0)),I||(f=this.editor.graph,I=d.indexOf(";"),0<I&&(d=d.substring(0,
+I)+d.substring(d.indexOf(",",I+1))),G&&f.isGridEnabled()&&(g=f.snap(g),m=f.snap(m)),Y=[f.insertVertex(null,null,"",g,m,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";")])):/(\.*<graphml )/.test(d)?(aa=!0,this.importGraphML(d,qa)):null!=I&&null!=F&&(/(\.v(dx|sdx?))($|\?)/i.test(F)||/(\.vs(x|sx?))($|\?)/i.test(F))?(aa=!0,this.importVisio(I,qa)):(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,F)?this.isOffline()?
+this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(aa=!0,q=mxUtils.bind(this,function(Q){4==Q.readyState&&(200<=Q.status&&299>=Q.status?qa(Q.responseText):null!=C&&C(null))}),null!=d?this.parseFileData(d,q,F):this.parseFile(I,q,F)):0==d.indexOf("PK")&&null!=I?(aa=!0,this.importZipFile(I,qa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),
+g,m,!0,null,G,null,null!=ca?mxEvent.isControlDown(ca):null));aa||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=f&&null!=g,qa=!0;f=null!=f?f:0;g=null!=g?g:0;var Q=!1;if(!mxClient.IS_CHROMEAPP&&null!=d)for(var X=Z||this.resampleThreshold,fa=0;fa<d.length;fa++)if("image/svg"!==d[fa].type.substring(0,9)&&"image/"===d[fa].type.substring(0,6)&&d[fa].size>X){Q=!0;break}var ka=mxUtils.bind(this,
+function(){var ia=this.editor.graph,V=ia.gridSize;q=null!=q?q:mxUtils.bind(this,function(la,u,H,P,T,S,da,R,ma){try{return null!=la&&"<mxlibrary"==la.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,la,da)),null):this.importFile(la,u,H,P,T,S,da,R,ma,Y,ca,aa)}catch(ra){return this.handleError(ra),null}});y=null!=y?y:mxUtils.bind(this,function(la){ia.setSelectionCells(la)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var L=d.length,ea=L,O=[],N=mxUtils.bind(this,
+function(la,u){O[la]=u;if(0==--ea){this.spinner.stop();if(null!=C)C(O);else{var H=[];ia.getModel().beginUpdate();try{for(la=0;la<O.length;la++){var P=O[la]();null!=P&&(H=H.concat(P))}}finally{ia.getModel().endUpdate()}}y(H)}}),ba=0;ba<L;ba++)mxUtils.bind(this,function(la){var u=d[la];if(null!=u){var H=new FileReader;H.onload=mxUtils.bind(this,function(P){if(null==F||F(u))if("image/"==u.type.substring(0,6))if("image/svg"==u.type.substring(0,9)){var T=Graph.clipSvgDataUri(P.target.result),S=T.indexOf(",");
+S=decodeURIComponent(escape(atob(T.substring(S+1))));var da=mxUtils.parseXml(S);S=da.getElementsByTagName("svg");if(0<S.length){S=S[0];var R=ca?null:S.getAttribute("content");null!=R&&"<"!=R.charAt(0)&&"%"!=R.charAt(0)&&(R=unescape(window.atob?atob(R):Base64.decode(R,!0)));null!=R&&"%"==R.charAt(0)&&(R=decodeURIComponent(R));null==R||"<mxfile "!==R.substring(0,8)&&"<mxGraphModel "!==R.substring(0,14)?N(la,mxUtils.bind(this,function(){try{if(null!=da){var xa=da.getElementsByTagName("svg");if(0<xa.length){var ta=
+xa[0],Aa=ta.getAttribute("width"),Ca=ta.getAttribute("height");Aa=null!=Aa&&"%"!=Aa.charAt(Aa.length-1)?parseFloat(Aa):NaN;Ca=null!=Ca&&"%"!=Ca.charAt(Ca.length-1)?parseFloat(Ca):NaN;var Ba=ta.getAttribute("viewBox");if(null==Ba||0==Ba.length)ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);else if(isNaN(Aa)||isNaN(Ca)){var sa=Ba.split(" ");3<sa.length&&(Aa=parseFloat(sa[2]),Ca=parseFloat(sa[3]))}T=Editor.createSvgDataUri(mxUtils.getXml(ta));var Pa=Math.min(1,Math.min(m/Math.max(1,Aa)),m/Math.max(1,Ca)),
+Ta=q(T,u.type,f+la*V,g+la*V,Math.max(1,Math.round(Aa*Pa)),Math.max(1,Math.round(Ca*Pa)),u.name);if(isNaN(Aa)||isNaN(Ca)){var Oa=new Image;Oa.onload=mxUtils.bind(this,function(){Aa=Math.max(1,Oa.width);Ca=Math.max(1,Oa.height);Ta[0].geometry.width=Aa;Ta[0].geometry.height=Ca;ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);T=Editor.createSvgDataUri(mxUtils.getXml(ta));var Xa=T.indexOf(";");0<Xa&&(T=T.substring(0,Xa)+T.substring(T.indexOf(",",Xa+1)));ia.setCellStyles("image",T,[Ta[0]])});Oa.src=Editor.createSvgDataUri(mxUtils.getXml(ta))}return Ta}}}catch(Xa){}return null})):
+N(la,mxUtils.bind(this,function(){return q(R,"text/xml",f+la*V,g+la*V,0,0,u.name)}))}else N(la,mxUtils.bind(this,function(){return null}))}else{S=!1;if("image/png"==u.type){var ma=ca?null:this.extractGraphModelFromPng(P.target.result);if(null!=ma&&0<ma.length){var ra=new Image;ra.src=P.target.result;N(la,mxUtils.bind(this,function(){return q(ma,"text/xml",f+la*V,g+la*V,ra.width,ra.height,u.name)}));S=!0}}S||(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(P.target.result,mxUtils.bind(this,function(xa){this.resizeImage(xa,P.target.result,mxUtils.bind(this,function(ta,Aa,Ca){N(la,mxUtils.bind(this,function(){if(null!=ta&&ta.length<G){var Ba=qa&&this.isResampleImageSize(u.size,Z)?Math.min(1,Math.min(m/Aa,m/Ca)):1;return q(ta,u.type,f+la*V,g+la*V,Math.round(Aa*Ba),Math.round(Ca*Ba),u.name)}this.handleError({message:mxResources.get("imageTooBig")});
+return null}))}),qa,m,Z,u.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else T=P.target.result,q(T,u.type,f+la*V,g+la*V,240,160,u.name,function(xa){N(la,function(){return xa})},u)});/(\.v(dx|sdx?))($|\?)/i.test(u.name)||/(\.vs(x|sx?))($|\?)/i.test(u.name)?q(null,u.type,f+la*V,g+la*V,240,160,u.name,function(P){N(la,function(){return P})},u):"image"==u.type.substring(0,5)||"application/pdf"==u.type?H.readAsDataURL(u):H.readAsText(u)}})(ba)});
+if(Q){Q=[];for(fa=0;fa<d.length;fa++)Q.push(d[fa]);d=Q;this.confirmImageResize(function(ia){qa=ia;ka()},I)}else ka()};EditorUi.prototype.isBlankFile=function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():
+null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,
+!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",
+action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>f};EditorUi.prototype.resizeImage=function(d,f,g,m,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),I=Math.max(1,d.height);if(m&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,I/q);if(1<G){var Z=Math.round(C/G),ca=Math.round(I/G),aa=document.createElement("canvas");aa.width=Z;aa.height=ca;aa.getContext("2d").drawImage(d,0,0,Z,
+ca);var Y=aa.toDataURL();if(Y.length<f.length){var qa=document.createElement("canvas");qa.width=Z;qa.height=ca;var Q=qa.toDataURL();Y!==Q&&(f=Y,C=Z,I=ca)}}}catch(X){}g(f,C,I)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var m=new Image;m.onload=function(){m.width=0<m.width?m.width:120;m.height=0<m.height?m.height:120;f(m)};null!=g&&(m.onerror=g);m.src=d}catch(q){if(null!=g)g(q);else throw q;}};
+EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?urlParams.rough:d)};var D=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&
+(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());var d=this,f=this.editor.graph;Editor.isDarkMode()&&(f.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(f.panningHandler.isPanningTrigger=function(X){var fa=X.getEvent();return null==X.getState()&&!mxEvent.isMouseEvent(fa)&&!f.freehand.isDrawing()||mxEvent.isPopupTrigger(fa)&&(null==X.getState()||mxEvent.isControlDown(fa)||mxEvent.isShiftDown(fa))});
+f.cellEditor.editPlantUmlData=function(X,fa,ka){var ia=JSON.parse(ka);fa=new TextareaDialog(d,mxResources.get("plantUml")+":",ia.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generatePlantUmlImage(V,ia.format,function(L,ea,O){d.spinner.stop();f.getModel().beginUpdate();try{if("txt"==ia.format)f.labelChanged(X,"<pre>"+L+"</pre>"),f.updateCellSize(X,!0);else{f.setCellStyles("image",d.convertDataUri(L),[X]);var N=f.model.getGeometry(X);null!=N&&(N=N.clone(),
+N.width=ea,N.height=O,f.cellsResized([X],[N],!1))}f.setAttributeForCell(X,"plantUmlData",JSON.stringify({data:V,format:ia.format}))}finally{f.getModel().endUpdate()}},function(L){d.handleError(L)})},null,null,400,220);d.showDialog(fa.container,420,300,!0,!0);fa.init()};f.cellEditor.editMermaidData=function(X,fa,ka){var ia=JSON.parse(ka);fa=new TextareaDialog(d,mxResources.get("mermaid")+":",ia.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generateMermaidImage(V,
+ia.config,function(L,ea,O){d.spinner.stop();f.getModel().beginUpdate();try{f.setCellStyles("image",L,[X]);var N=f.model.getGeometry(X);null!=N&&(N=N.clone(),N.width=Math.max(N.width,ea),N.height=Math.max(N.height,O),f.cellsResized([X],[N],!1));f.setAttributeForCell(X,"mermaidData",JSON.stringify({data:V,config:ia.config},null,2))}finally{f.getModel().endUpdate()}},function(L){d.handleError(L)})},null,null,400,220);d.showDialog(fa.container,420,300,!0,!0);fa.init()};var g=f.cellEditor.startEditing;
+f.cellEditor.startEditing=function(X,fa){try{var ka=this.graph.getAttributeForCell(X,"plantUmlData");if(null!=ka)this.editPlantUmlData(X,fa,ka);else if(ka=this.graph.getAttributeForCell(X,"mermaidData"),null!=ka)this.editMermaidData(X,fa,ka);else{var ia=f.getCellStyle(X);"1"==mxUtils.getValue(ia,"metaEdit","0")?d.showDataDialog(X):g.apply(this,arguments)}}catch(V){d.handleError(V)}};f.getLinkTitle=function(X){return d.getLinkTitle(X)};f.customLinkClicked=function(X){var fa=!1;try{d.handleCustomLink(X),
+fa=!0}catch(ka){d.handleError(ka)}return fa};var m=f.parseBackgroundImage;f.parseBackgroundImage=function(X){var fa=m.apply(this,arguments);null!=fa&&null!=fa.src&&Graph.isPageLink(fa.src)&&(fa={originalSrc:fa.src});return fa};var q=f.setBackgroundImage;f.setBackgroundImage=function(X){null!=X&&null!=X.originalSrc&&(X=d.createImageForPageLink(X.originalSrc,d.currentPage,this));q.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));
+this.editor.addListener("pageMoved",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(X,fa){X=null!=f.backgroundImage?f.backgroundImage.originalSrc:null;if(null!=X){var ka=X.indexOf(",");if(0<ka)for(X=X.substring(ka+1),fa=fa.getProperty("patches"),ka=0;ka<fa.length;ka++)if(null!=fa[ka][EditorUi.DIFF_UPDATE]&&null!=fa[ka][EditorUi.DIFF_UPDATE][X]||null!=fa[ka][EditorUi.DIFF_REMOVE]&&0<=mxUtils.indexOf(fa[ka][EditorUi.DIFF_REMOVE],
+X)){f.refreshBackgroundImage();break}}}));var y=f.getBackgroundImageObject;f.getBackgroundImageObject=function(X,fa){var ka=y.apply(this,arguments);if(null!=ka&&null!=ka.originalSrc)if(!fa)ka={src:ka.originalSrc};else if(fa&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var ia=this.stylesheet,V=this.shapeForegroundColor,L=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";ka=d.createImageForPageLink(ka.originalSrc);
+this.shapeBackgroundColor=L;this.shapeForegroundColor=V;this.stylesheet=ia}return ka};var F=this.clearDefaultStyle;this.clearDefaultStyle=function(){F.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var C=
+d.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(X){X=null!=X?X:"";"1"==urlParams.dev&&(X+=(0<X.length?"&":"?")+"dev=1");return C.apply(this,arguments)};var I=f.addClickHandler;f.addClickHandler=function(X,fa,ka){var ia=fa;fa=function(V,L){if(null==L){var ea=mxEvent.getSource(V);"a"==ea.nodeName.toLowerCase()&&(L=ea.getAttribute("href"))}null!=L&&f.isCustomLink(L)&&(mxEvent.isTouchEvent(V)||!mxEvent.isPopupTrigger(V))&&f.customLinkClicked(L)&&mxEvent.consume(V);null!=ia&&ia(V,L)};I.call(this,
+X,fa,ka)};D.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(f.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var G=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(X,fa,ka){d.editor.graph.isSelectionEmpty()?G.apply(this,arguments):d.menus.addMenuItems(X,"delete - cut copy copyAsImage - duplicate".split(" "),null,ka)}}d.actions.get("print").funct=function(){d.showDialog((new PrintDialog(d)).container,360,null!=d.pages&&1<d.pages.length?
+470:390,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var Z=f.getExportVariables;f.getExportVariables=function(){var X=Z.apply(this,arguments),fa=d.getCurrentFile();null!=fa&&(X.filename=fa.getTitle());X.pagecount=null!=d.pages?d.pages.length:1;X.page=null!=d.currentPage?d.currentPage.getName():"";X.pagenumber=null!=d.pages&&null!=d.currentPage?mxUtils.indexOf(d.pages,d.currentPage)+1:1;return X};var ca=f.getGlobalVariable;f.getGlobalVariable=function(X){var fa=d.getCurrentFile();
+return"filename"==X&&null!=fa?fa.getTitle():"page"==X&&null!=d.currentPage?d.currentPage.getName():"pagenumber"==X?null!=d.currentPage&&null!=d.pages?mxUtils.indexOf(d.pages,d.currentPage)+1:1:"pagecount"==X?null!=d.pages?d.pages.length:1:ca.apply(this,arguments)};var aa=f.labelLinkClicked;f.labelLinkClicked=function(X,fa,ka){var ia=fa.getAttribute("href");if(null==ia||!f.isCustomLink(ia)||!mxEvent.isTouchEvent(ka)&&mxEvent.isPopupTrigger(ka))aa.apply(this,arguments);else{if(!f.isEnabled()||null!=
+X&&f.isCellLocked(X.cell))f.customLinkClicked(ia),f.getRubberband().reset();mxEvent.consume(ka)}};this.editor.getOrCreateFilename=function(){var X=d.defaultFilename,fa=d.getCurrentFile();null!=fa&&(X=null!=fa.getTitle()?fa.getTitle():X);return X};var Y=this.actions.get("print");Y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);Y.visible=Y.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),
+this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.addListener("realtimeStateChanged",mxUtils.bind(this,function(){this.updateUserElement()}));this.spinner=this.createSpinner(null,null,
+24);Graph.fileSupport&&f.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(X){var fa=f.cellEditor.text2,ka=null;null!=fa&&(mxEvent.addListener(fa,"dragleave",function(ia){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);ia.stopPropagation();ia.preventDefault()}),mxEvent.addListener(fa,"dragover",mxUtils.bind(this,function(ia){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(fa));ia.stopPropagation();ia.preventDefault()})),mxEvent.addListener(fa,"drop",
+mxUtils.bind(this,function(ia){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ia.dataTransfer.files.length)this.importFiles(ia.dataTransfer.files,0,0,this.maxImageSize,function(L,ea,O,N,ba,la){f.insertImage(L,ba,la)},function(){},function(L){return"image/"==L.type.substring(0,6)},function(L){for(var ea=0;ea<L.length;ea++)L[ea]()},mxEvent.isControlDown(ia));else if(0<=mxUtils.indexOf(ia.dataTransfer.types,"text/uri-list")){var V=ia.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(V)?
+this.loadImage(decodeURIComponent(V),mxUtils.bind(this,function(L){var ea=Math.max(1,L.width);L=Math.max(1,L.height);var O=this.maxImageSize;O=Math.min(1,Math.min(O/Math.max(1,ea)),O/Math.max(1,L));f.insertImage(decodeURIComponent(V),ea*O,L*O)})):document.execCommand("insertHTML",!1,ia.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(ia.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,ia.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(ia.dataTransfer.types,"text/plain")&&
+document.execCommand("insertHTML",!1,ia.dataTransfer.getData("text/plain"));ia.stopPropagation();ia.preventDefault()})))}));this.isSettingsEnabled()&&(Y=this.editor.graph.view,Y.setUnit(mxSettings.getUnit()),Y.addListener("unitChanged",function(X,fa){mxSettings.setUnit(fa.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,
+Y.unit),this.refresh());if("1"==urlParams.styledev){Y=document.getElementById("geFooter");null!=Y&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),
+this.styleInput.value)})),Y.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(X,fa){0<this.editor.graph.getSelectionCount()?(X=this.editor.graph.getSelectionCell(),X=this.editor.graph.getModel().getStyle(X),this.styleInput.value=X||"",this.styleInput.style.visibility="visible"):this.styleInput.style.visibility="hidden"})));var qa=this.isSelectionAllowed;this.isSelectionAllowed=function(X){return mxEvent.getSource(X)==this.styleInput?
+!0:qa.apply(this,arguments)}}Y=document.getElementById("geInfo");null!=Y&&Y.parentNode.removeChild(Y);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var Q=null;mxEvent.addListener(f.container,"dragleave",function(X){f.isEnabled()&&(null!=Q&&(Q.parentNode.removeChild(Q),Q=null),X.stopPropagation(),X.preventDefault())});mxEvent.addListener(f.container,"dragover",mxUtils.bind(this,function(X){null==Q&&(!mxClient.IS_IE||10<document.documentMode)&&(Q=this.highlightElement(f.container));
+null!=this.sidebar&&this.sidebar.hideTooltip();X.stopPropagation();X.preventDefault()}));mxEvent.addListener(f.container,"drop",mxUtils.bind(this,function(X){null!=Q&&(Q.parentNode.removeChild(Q),Q=null);if(f.isEnabled()){var fa=mxUtils.convertPoint(f.container,mxEvent.getClientX(X),mxEvent.getClientY(X)),ka=X.dataTransfer.files,ia=f.view.translate,V=f.view.scale,L=fa.x/V-ia.x,ea=fa.y/V-ia.y;if(0<ka.length)fa=1==ka.length&&this.isBlankFile()&&!this.canUndo()&&("image/svg"===ka[0].type.substring(0,
+9)||"image/"!==ka[0].type.substring(0,6)||/(\.drawio.png)$/i.test(ka[0].name)),"1"!=urlParams.embed&&(mxEvent.isShiftDown(X)||fa)?(!mxEvent.isShiftDown(X)&&fa&&null!=this.getCurrentFile()&&this.fileLoaded(null),this.openFiles(ka,!0)):(mxEvent.isAltDown(X)&&(ea=L=null),this.importFiles(ka,L,ea,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(X),null,null,mxEvent.isShiftDown(X),X));else{mxEvent.isAltDown(X)&&(ea=L=0);var O=0<=mxUtils.indexOf(X.dataTransfer.types,"text/uri-list")?X.dataTransfer.getData("text/uri-list"):
+null;ka=this.extractGraphModelFromEvent(X,null!=this.pages);if(null!=ka)f.setSelectionCells(this.importXml(ka,L,ea,!0));else if(0<=mxUtils.indexOf(X.dataTransfer.types,"text/html")){var N=X.dataTransfer.getData("text/html");ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(N);var ba=null;fa=ka.getElementsByTagName("img");null!=fa&&1==fa.length?(N=fa[0].getAttribute("src"),null==N&&(N=fa[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(N)||(ba=!0)):(fa=ka.getElementsByTagName("a"),
+null!=fa&&1==fa.length?N=fa[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(N=mxUtils.getTextContent(ka[0]))));var la=!0,u=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(N,L,ea,!0,ba,null,la,mxEvent.isControlDown(X)))});ba&&null!=N&&N.length>this.resampleThreshold?this.confirmImageResize(function(H){la=H;u()},mxEvent.isControlDown(X)):u()}else null!=O&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(O)?this.loadImage(decodeURIComponent(O),mxUtils.bind(this,
+function(H){var P=Math.max(1,H.width);H=Math.max(1,H.height);var T=this.maxImageSize;T=Math.min(1,Math.min(T/Math.max(1,P)),T/Math.max(1,H));f.setSelectionCell(f.insertVertex(null,null,"",L,ea,P*T,H*T,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+O+";"))}),mxUtils.bind(this,function(H){f.setSelectionCells(this.insertTextAt(O,L,ea,!0))})):0<=mxUtils.indexOf(X.dataTransfer.types,"text/plain")&&f.setSelectionCells(this.insertTextAt(X.dataTransfer.getData("text/plain"),
+L,ea,!0))}}X.stopPropagation();X.preventDefault()}),!1)}f.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var d=this.editor.graph;d.container.addEventListener("paste",mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=
+g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(I,G,Z,ca,aa,Y){d.insertImage(I,aa,Y)},function(){},function(I){return"image/"==I.type.substring(0,6)},function(I){for(var G=0;G<I.length;G++)I[G]()});else{var C=this.editor.graph.getInsertPoint();this.importFiles([F.getAsFile()],C.x,C.y,this.maxImageSize);mxEvent.consume(f)}break}}}}catch(I){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function d(){window.setTimeout(function(){g.innerHTML=
+"&nbsp;";g.focus();document.execCommand("selectAll",!1,null)},0)}var f=this.editor.graph,g=document.createElement("div");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck","false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow=
+"hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var m=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||
+f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||m||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",f.container.appendChild(g),m=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!m||224!=F&&17!=
+F&&91!=F&&93!=F||(m=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),this.copyCells(g),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,"cut",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),this.copyCells(g,!0),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,
+"paste",mxUtils.bind(this,function(y){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&(g.innerHTML="&nbsp;",g.focus(),null!=y.clipboardData&&this.pasteCells(y,g,!0,!0),mxEvent.isConsumed(y)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(y,g,!1,!0)}),0))}),!0);var q=this.isSelectionAllowed;this.isSelectionAllowed=function(y){return mxEvent.getSource(y)==g?!0:q.apply(this,arguments)}};EditorUi.prototype.setSketchMode=function(d){this.spinner.spin(document.body,mxResources.get("working")+
+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetSketchMode(d);null==urlParams.rough&&(mxSettings.settings.sketchMode=d,mxSettings.save());this.fireEvent(new mxEventObject("sketchModeChanged"))}),0)};EditorUi.prototype.setPagesVisible=function(d){Editor.pagesVisible!=d&&(Editor.pagesVisible=d,mxSettings.settings.pagesVisible=d,mxSettings.save(),this.fireEvent(new mxEventObject("pagesVisibleChanged")))};EditorUi.prototype.setSidebarTitles=function(d,f){this.sidebar.sidebarTitles!=
+d&&(this.sidebar.sidebarTitles=d,this.sidebar.refresh(),this.isSettingsEnabled()&&f&&(mxSettings.settings.sidebarTitles=d,mxSettings.save()),this.fireEvent(new mxEventObject("sidebarTitlesChanged")))};EditorUi.prototype.setInlineFullscreen=function(d){Editor.inlineFullscreen!=d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),
+"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(m,q,y){null==m[q]&&(m[q]=y)},g=this.editor.graph;Editor.sketchMode=d;this.menus.defaultFontSize=d?20:16;g.defaultVertexStyle=mxUtils.clone(Graph.prototype.defaultVertexStyle);f(g.defaultVertexStyle,"fontSize",this.menus.defaultFontSize);g.defaultEdgeStyle=mxUtils.clone(Graph.prototype.defaultEdgeStyle);
+f(g.defaultEdgeStyle,"fontSize",this.menus.defaultFontSize-4);f(g.defaultEdgeStyle,"edgeStyle","none");f(g.defaultEdgeStyle,"rounded","0");f(g.defaultEdgeStyle,"curved","1");f(g.defaultEdgeStyle,"jettySize","auto");f(g.defaultEdgeStyle,"orthogonalLoop","1");f(g.defaultEdgeStyle,"endArrow","open");f(g.defaultEdgeStyle,"endSize","14");f(g.defaultEdgeStyle,"startSize","14");d&&(f(g.defaultVertexStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultVertexStyle,"fontSource",Editor.sketchFontSource),f(g.defaultVertexStyle,
+"hachureGap","4"),f(g.defaultVertexStyle,"sketch","1"),f(g.defaultEdgeStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultEdgeStyle,"fontSource",Editor.sketchFontSource),f(g.defaultEdgeStyle,"sketch","1"),f(g.defaultEdgeStyle,"hachureGap","4"),f(g.defaultEdgeStyle,"sourcePerimeterSpacing","8"),f(g.defaultEdgeStyle,"targetPerimeterSpacing","8"));g.currentVertexStyle=mxUtils.clone(g.defaultVertexStyle);g.currentEdgeStyle=mxUtils.clone(g.defaultEdgeStyle);this.clearDefaultStyle()}};EditorUi.prototype.getLinkTitle=
+function(d){var f=Graph.prototype.getLinkTitle.apply(this,arguments);if(Graph.isPageLink(d)){var g=d.indexOf(",");0<g&&(f=this.getPageById(d.substring(g+1)),f=null!=f?f.getName():mxResources.get("pageNotFound"))}else"data:"==d.substring(0,5)&&(f=mxResources.get("action"));return f};EditorUi.prototype.handleCustomLink=function(d){if(Graph.isPageLink(d)){var f=d.indexOf(",");if(d=this.getPageById(d.substring(f+1)))this.selectPage(d);else throw Error(mxResources.get("pageNotFound")||"Page not found");
+}else this.editor.graph.handleCustomLink(d)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){Editor.pagesVisible=mxSettings.settings.pagesVisible;ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(d){d.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=
+mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(d){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(d,f){"1"!=urlParams["ext-fonts"]?mxSettings.setCustomFonts(this.menus.customFonts):(d=f.getProperty("customFonts"),this.menus.customFonts=d,mxSettings.setCustomFonts(d));mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());
+this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(d,f){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=null!=this.editor.graph.defaultPageFormat?this.editor.graph.defaultPageFormat:mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(d,f){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));
+this.editor.graph.view.gridColor=mxSettings.getGridColor(Editor.isDarkMode());this.editor.graph.view.defaultDarkGridColor=mxSettings.getGridColor(!0);this.editor.graph.view.defaultGridColor=mxSettings.getGridColor(!1);this.addListener("gridColorChanged",mxUtils.bind(this,function(d,f){mxSettings.setGridColor(this.editor.graph.view.gridColor,Editor.isDarkMode());mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(d,
+f){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&(null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes?(this.sidebar.searchShapes(decodeURIComponent(urlParams["search-shapes"])),this.sidebar.showEntries("search")):(this.sidebar.showPalette("search",mxSettings.settings.search),this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),
+mxSettings.save())));this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyImage=function(d,f,g){try{null!=navigator.clipboard&&this.spinner.spin(document.body,mxResources.get("exporting"))&&this.editor.exportToCanvas(mxUtils.bind(this,function(m,q){try{this.spinner.stop();var y=this.createImageDataUri(m,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,
+F,C,mxUtils.bind(this,function(I){this.handleError(I)}))}catch(I){this.handleError(I)}}),null,null,null,mxUtils.bind(this,function(m){this.spinner.stop();this.handleError(m)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(m){this.handleError(m)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,m){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,
+"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](m)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerText="";else{var m=mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(m));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(m,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",
+!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,m){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=
+this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),m);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,d,[F]);else{q.model.beginUpdate();try{q.labelChanged(F,d),Graph.isLink(d)&&q.setLinkForCell(F,d)}finally{q.model.endUpdate()}}q.setSelectionCell(F)}else y=q.getInsertPoint(),q.isMouseInsertPoint()&&(F=0,q.lastPasteXml==d&&0<q.pasteCounter&&
+q.pasteCounter--),y=this.insertTextAt(d,y.x+F,y.y+F,!0),q.setSelectionCells(y);q.isSelectionEmpty()||(q.scrollCellToVisible(q.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(q.view.getState(q.getSelectionCell())));return y};EditorUi.prototype.pasteCells=function(d,f,g,m){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var I=
+decodeURIComponent(F);this.isCompatibleString(I)&&(C=!0,F=I)}catch(ca){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,C))}F=q.getElementsByTagName("span");if(null!=F&&0<F.length&&"application/vnd.lucid.chart.objects"===F[0].getAttribute("data-lucid-type"))g=F[0].getAttribute("data-lucid-content"),null!=g&&0<g.length&&(this.convertLucidChart(g,
+mxUtils.bind(this,function(ca){var aa=this.editor.graph;aa.lastPasteXml==ca?aa.pasteCounter++:(aa.lastPasteXml=ca,aa.pasteCounter=0);var Y=aa.pasteCounter*aa.gridSize;aa.setSelectionCells(this.importXml(ca,Y,Y));aa.scrollCellToVisible(aa.getSelectionCell())}),mxUtils.bind(this,function(ca){this.handleError(ca)})),mxEvent.consume(d));else{y=y?q.innerHTML:mxUtils.trim(null==q.innerText?mxUtils.getTextContent(q):q.innerText);C=!1;try{var G=y.lastIndexOf("%3E");0<=G&&G<y.length-3&&(y=y.substring(0,G+
+3))}catch(ca){}try{F=q.getElementsByTagName("span"),(I=null!=F&&0<F.length?mxUtils.trim(decodeURIComponent(F[0].textContent)):decodeURIComponent(y))&&(this.isCompatibleString(I)||0==I.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))&&(C=!0,y=I)}catch(ca){}try{if(null!=y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(ca){console.log("Miro import error:",
+ca)}this.pasteXml(y,m,C,d);try{mxEvent.consume(d)}catch(ca){}}else if(!g){var Z=this.editor.graph;Z.lastPasteXml=null;Z.pasteCounter=0}}catch(ca){this.handleError(ca)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(m){null!=f&&(f.parentNode.removeChild(f),f=null);m.stopPropagation();m.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(m){(this.editor.graph.isEnabled()||
+"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());m.stopPropagation();m.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(m){null!=f&&(f.parentNode.removeChild(f),f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<m.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(m.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(m)&&
+!mxEvent.isShiftDown(m)):this.openFiles(m.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(m);if(null==q){var y=null!=m.dataTransfer?m.dataTransfer:m.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?m.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),
+y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,null,!0)):this.isRemoteFileFormat(q)?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(q))).send(mxUtils.bind(this,function(F){200<=F.getStatus()&&
+299>=F.getStatus()&&this.openLocalFile(F.getText(),null,!0)})):/^https?:\/\//.test(q)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(q):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}m.stopPropagation();m.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var m=document.body;var q=document.documentElement;
+var y=(m.clientWidth||q.clientWidth)-3;m=Math.max(m.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,m=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border="3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,m-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):
+document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),m=new mxGraphModel;g.decode(f,m);f=m.getChildAt(m.getRoot(),0);for(g=0;g<m.getChildCount(f);g++)d.push(m.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,m,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":
+/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(I){this.handleError(I,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,m)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||
+/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.isOffline()?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):this.parseFile(g,mxUtils.bind(this,function(C){4==C.readyState&&(this.spinner.stop(),
+200<=C.status&&299>=C.status?y(C.responseText):this.handleError({message:mxResources.get(413==C.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,m)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();
+null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,m)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==
+g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,m=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,m,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=0;g<d.length;g++)mxUtils.bind(this,function(m){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,m.name,m,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();
+this.handleError(y);window.openFile=null});"image"!==m.type.substring(0,5)&&"application/pdf"!==m.type||"image/svg"===m.type.substring(0,9)?q.readAsText(m):q.readAsDataURL(m)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,m,q){var y=this.getCurrentFile(),F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,
+d,f||this.defaultFilename,g,m,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(d,f),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=
+y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):F()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var d={};if(null!=this.pages)for(var f=0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=
+function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var m=this.editor.graph,q=m.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));m.model.isEdge(d)&&(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=m.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(m.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=
+function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=d?"":"none";this.editor.graph.setEnabled(d);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=d?"":"hidden",this.ruler.vRuler.container.style.visibility=d?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=d?"":"hidden");
+d||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=
+window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,m,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));if(null==f||0==f.length)f=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,f,{}));this.mode=App.MODE_EMBED;this.setFileData(f);if(q)try{var y=this.editor.graph;y.setGridEnabled(!1);y.pageVisible=!1;var F=y.model.cells,C;for(C in F){var I=F[C];null!=
+I&&null!=I.style&&(I.style+=";sketch=1;"+(-1==I.style.indexOf("fontFamily=")||-1<I.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=m?m:!1;this.updateUi();
+window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(d,f){null!=d?d.getPublicUrl(f):f(null)};EditorUi.prototype.createLoadMessage=function(d){var f=this.editor.graph;return{event:d,
+pageVisible:f.pageVisible,translate:f.view.translate,bounds:f.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:f.view.scale,page:f.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(d){var f=this.editor.graph;f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var m=f.background;if(null==m||m==mxConstants.NONE)m=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,
+null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,m,1,this.embedExportBorder)}else d||g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=
+!1,"1"!=urlParams.embed&&this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,m=!1,q=null,y=mxUtils.bind(this,function(I,G){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,y);mxEvent.addListener(window,"message",mxUtils.bind(this,function(I){if(I.source==
+(window.opener||window.parent)){var G=I.data,Z=null,ca=mxUtils.bind(this,function(R){if(null!=R&&"function"===typeof R.charAt&&"<"!=R.charAt(0))try{Editor.isPngDataUrl(R)?R=Editor.extractGraphModelFromPng(R):"data:image/svg+xml;base64,"==R.substring(0,26)?R=atob(R.substring(26)):"data:image/svg+xml;utf8,"==R.substring(0,24)&&(R=R.substring(24)),null!=R&&("%"==R.charAt(0)?R=decodeURIComponent(R):"<"!=R.charAt(0)&&(R=Graph.decompress(R)))}catch(ma){}return R});if("json"==urlParams.proto){var aa=!1;
+try{G=JSON.parse(G),EditorUi.debug("EditorUi.installMessageHandler",[this],"evt",[I],"data",[G])}catch(R){G=null}try{if(null==G)return;if("dialog"==G.action){this.showError(null!=G.titleKey?mxResources.get(G.titleKey):G.title,null!=G.messageKey?mxResources.get(G.messageKey):G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayouts(this.editor.graph.createLayouts(G.layouts));return}if("prompt"==
+G.action){this.spinner.stop();var Y=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(R){null!=R?F.postMessage(JSON.stringify({event:"prompt",value:R,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",message:G}),"*")},null!=G.titleKey?mxResources.get(G.titleKey):G.title);this.showDialog(Y.container,300,80,!0,!1);Y.init();return}if("draft"==G.action){var qa=ca(G.xml);this.spinner.stop();Y=new DraftDialog(this,mxResources.get("draftFound",
+[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",message:G}),"*")}),G.editKey?mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),
+"*")}):null);this.showDialog(Y.container,640,480,!0,!1,mxUtils.bind(this,function(R){R&&this.actions.get("exit").funct()}));try{Y.init()}catch(R){F.postMessage(JSON.stringify({event:"draft",error:R.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();var Q=1==G.enableRecent,X=1==G.enableSearch,fa=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ia=new TemplatesDialog(this,function(R,ma,ra){R=R||this.emptyDiagramXml;
+F.postMessage(JSON.stringify({event:"template",xml:R,blank:R==this.emptyDiagramXml,name:ma,tempUrl:ra.url,libs:ra.libs,builtIn:null!=ra.info&&null!=ra.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=ka?ka.id:null,Q?mxUtils.bind(this,function(R,ma,ra){this.remoteInvoke("getRecentDiagrams",[ra],null,R,ma)}):null,X?mxUtils.bind(this,function(R,ma,ra,xa){this.remoteInvoke("searchDiagrams",[R,xa],null,ma,ra)}):null,mxUtils.bind(this,
+function(R,ma,ra){this.remoteInvoke("getFileContent",[R.url],null,ma,ra)}),null,fa?mxUtils.bind(this,function(R){this.remoteInvoke("getCustomTemplates",null,null,R,function(){R({},0)})}):null,!1,!1,!0,!0);this.showDialog(ia.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}Y=new NewDialog(this,!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(R,ma,ra,xa){R=R||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:R,blank:R==this.emptyDiagramXml,
+name:ma,tempUrl:ra,libs:xa,builtIn:!0,message:G}),"*"):(d(R,I,R!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,Q?mxUtils.bind(this,function(R){this.remoteInvoke("getRecentDiagrams",[null],null,R,function(){R(null,"Network Error!")})}):null,X?mxUtils.bind(this,function(R,ma){this.remoteInvoke("searchDiagrams",[R,null],null,ma,function(){ma(null,"Network Error!")})}):null,mxUtils.bind(this,function(R,ma,ra){F.postMessage(JSON.stringify({event:"template",
+docUrl:R,info:ma,name:ra}),"*")}),null,null,fa?mxUtils.bind(this,function(R){this.remoteInvoke("getCustomTemplates",null,null,R,function(){R({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(R){this.sidebar.hideTooltip();R&&this.actions.get("exit").funct()}));Y.init();return}if("textContent"==G.action){var V=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:V,message:G}),"*");return}if("status"==G.action){null!=
+G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var L=null!=G.messageKey?mxResources.get(G.messageKey):G.message;null==G.show||G.show?this.spinner.spin(document.body,L):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=
+G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var ea=null!=G.xml?G.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var O=this.editor.graph,N=mxUtils.bind(this,function(R){this.editor.graph.setEnabled(!0);this.spinner.stop();var ma=this.createLoadMessage("export");ma.format=
+G.format;ma.message=G;ma.data=R;ma.xml=ea;F.postMessage(JSON.stringify(ma),"*")}),ba=mxUtils.bind(this,function(R){null==R&&(R=Editor.blankImage);"xmlpng"==G.format&&(R=Editor.writeGraphModelToPng(R,"tEXt","mxfile",encodeURIComponent(ea)));O!=this.editor.graph&&O.container.parentNode.removeChild(O.container);N(R)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var u=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=
+la){var R=O.getGlobalVariable;O=this.createTemporaryGraph(O.getStylesheet());for(var ma,ra=0;ra<this.pages.length;ra++)if(this.pages[ra].getId()==la){ma=this.updatePageRoot(this.pages[ra]);break}null==ma&&(ma=this.currentPage);O.getGlobalVariable=function(Ca){return"page"==Ca?ma.getName():"pagenumber"==Ca?1:R.apply(this,arguments)};document.body.appendChild(O.container);O.model.setRoot(ma.root)}if(null!=G.layerIds){var xa=O.model,ta=xa.getChildCells(xa.getRoot()),Aa={};for(ra=0;ra<G.layerIds.length;ra++)Aa[G.layerIds[ra]]=
+!0;for(ra=0;ra<ta.length;ra++)xa.setVisible(ta[ra],Aa[ta[ra].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ca){ba(Ca.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ba(null)}),null,null,G.scale,G.transparent,G.shadow,null,O,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length&&(g=!0,this.setFileData(ea),g=!1);u()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&
+0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(ea))).send(mxUtils.bind(this,function(R){200<=R.getStatus()&&299>=R.getStatus()?N("data:image/png;base64,"+R.getText()):ba(null)}),mxUtils.bind(this,function(){ba(null)}))}}else u=mxUtils.bind(this,function(){var R=this.createLoadMessage("export");R.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&
+1<this.pages.length)){var ma=this.getXmlFileData();R.xml=mxUtils.getXml(ma);R.data=this.getFileData(null,null,!0,null,null,null,ma);R.format=G.format}else if("html"==G.format)ma=this.editor.getGraphXml(),R.data=this.getHtml(ma,this.editor.graph),R.xml=mxUtils.getXml(ma),R.format=G.format;else{mxSvgCanvas2D.prototype.foAltText=null;ma=null!=G.background?G.background:this.editor.graph.background;ma==mxConstants.NONE&&(ma=null);R.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);R.format=
+"svg";var ra=mxUtils.bind(this,function(xa){this.editor.graph.setEnabled(!0);this.spinner.stop();R.data=Editor.createSvgDataUri(xa);F.postMessage(JSON.stringify(R),"*")});if("xmlsvg"==G.format)(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))&&this.getEmbeddedSvg(R.xml,this.editor.graph,null,!0,ra,null,null,G.embedImages,ma,G.scale,G.border,G.shadow,G.keepTheme);else if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,
+null!=G.spinKey?mxResources.get(G.spinKey):G.spin))this.editor.graph.setEnabled(!1),ma=this.editor.graph.getSvg(ma,G.scale,G.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||G.shadow,null,G.keepTheme),(this.editor.graph.shadowVisible||G.shadow)&&this.editor.graph.addSvgShadow(ma),this.embedFonts(ma,mxUtils.bind(this,function(xa){G.embedImages||null==G.embedImages?this.editor.convertImages(xa,mxUtils.bind(this,function(ta){ra(mxUtils.getXml(ta))})):ra(mxUtils.getXml(xa))}));return}F.postMessage(JSON.stringify(R),
+"*")}),null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(G.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(u)},0):u()):u();return}if("load"==G.action){aa=G.toSketch;m=1==G.autosave;this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var H=
+Editor.sketchMode;this.doSetSketchMode(G.rough);H!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(H=Editor.darkMode,this.doSetDarkMode(G.dark),H!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=G.border&&(this.embedExportBorder=G.border);null!=G.background&&(this.embedExportBackground=G.background);null!=G.viewport&&(this.embedViewport=G.viewport);this.embedExitPoint=null;if(null!=G.rect){var P=this.embedExportBorder;this.diagramContainer.style.border=
+"2px solid #295fcc";this.diagramContainer.style.top=G.rect.top+"px";this.diagramContainer.style.left=G.rect.left+"px";this.diagramContainer.style.height=G.rect.height+"px";this.diagramContainer.style.width=G.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";Z=mxUtils.bind(this,function(){var R=this.editor.graph,ma=R.maxFitScale;R.maxFitScale=G.maxFitScale;R.fit(2*P);R.maxFitScale=ma;R.container.scrollTop-=2*P;R.container.scrollLeft-=2*P;this.fireEvent(new mxEventObject("editInlineStart",
+"data",[G]))})}null!=G.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=G.noExitBtn);null!=G.title&&null!=this.buttonContainer&&(qa=document.createElement("span"),mxUtils.write(qa,G.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(qa),this.embedFilenameSpan=qa);try{G.libs&&this.sidebar.showEntries(G.libs)}catch(R){}G=null!=G.xmlpng?this.extractGraphModelFromPng(G.xmlpng):null!=G.descriptor?G.descriptor:
+G.xml}else{if("merge"==G.action){var T=this.getCurrentFile();null!=T&&(qa=ca(G.xml),null!=qa&&""!=qa&&T.mergeFile(new LocalFile(this,qa),function(){F.postMessage(JSON.stringify({event:"merge",message:G}),"*")},function(R){F.postMessage(JSON.stringify({event:"merge",message:G,error:R}),"*")}))}else"remoteInvokeReady"==G.action?this.handleRemoteInvokeReady(F):"remoteInvoke"==G.action?this.handleRemoteInvoke(G,I.origin):"remoteInvokeResponse"==G.action?this.handleRemoteInvokeResponse(G):F.postMessage(JSON.stringify({error:"unknownMessage",
+data:JSON.stringify(G)}),"*");return}}catch(R){this.handleError(R)}}var S=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),da=mxUtils.bind(this,function(R,ma){g=!0;try{d(R,ma,null,aa)}catch(ra){this.handleError(ra)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=S();m&&null==f&&(f=mxUtils.bind(this,function(ra,xa){ra=S();ra==q||g||(xa=this.createLoadMessage("autosave"),xa.xml=
+ra,(window.opener||window.parent).postMessage(JSON.stringify(xa),"*"));q=ra}),this.editor.graph.model.addListener(mxEvent.CHANGE,f),this.editor.graph.addListener("gridSizeChanged",f),this.editor.graph.addListener("shadowVisibleChanged",f),this.addListener("pageFormatChanged",f),this.addListener("pageScaleChanged",f),this.addListener("backgroundColorChanged",f),this.addListener("backgroundImageChanged",f),this.addListener("foldingEnabledChanged",f),this.addListener("mathEnabledChanged",f),this.addListener("gridEnabledChanged",
+f),this.addListener("guidesEnabledChanged",f),this.addListener("pageViewChanged",f));if("1"==urlParams.returnbounds||"json"==urlParams.proto)ma=this.createLoadMessage("load"),ma.xml=R,F.postMessage(JSON.stringify(ma),"*");null!=Z&&Z()});null!=G&&"function"===typeof G.substring&&"data:application/vnd.visio;base64,"==G.substring(0,34)?(ca="0M8R4KGxGuE"==G.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(G.substring(G.indexOf(",")+1)),function(R){da(R,I)},mxUtils.bind(this,function(R){this.handleError(R)}),
+ca)):null!=G&&"function"===typeof G.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(G,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(G,mxUtils.bind(this,function(R){4==R.readyState&&200<=R.status&&299>=R.status&&"<mxGraphModel"==R.responseText.substring(0,13)&&da(R.responseText,I)}),""):null!=G&&"function"===typeof G.substring&&this.isLucidChartData(G)?this.convertLucidChart(G,mxUtils.bind(this,function(R){da(R)}),mxUtils.bind(this,
+function(R){this.handleError(R)})):null==G||"object"!==typeof G||null==G.format||null==G.data&&null==G.url?(G=ca(G),da(G,I)):this.loadDescriptor(G,mxUtils.bind(this,function(R){da(S(),I)}),mxUtils.bind(this,function(R){this.handleError(R,mxResources.get("errorLoadingFile"))}))}}));var F=window.opener||window.parent;y="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";F.postMessage(y,"*");if("json"==urlParams.proto){var C=this.editor.graph.openLink;this.editor.graph.openLink=
+function(I,G,Z){C.apply(this,arguments);F.postMessage(JSON.stringify({event:"openLink",href:I,target:G,allowOpener:Z}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";
+var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var m="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,m);f.setAttribute("title",m);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),
+d.appendChild(f),"1"==urlParams.saveAndExit&&(f=document.createElement("a"),mxUtils.write(f,mxResources.get("saveAndExit")),f.setAttribute("title",mxResources.get("saveAndExit")),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),d.appendChild(f),g=f);"1"!=urlParams.noExitBtn&&(f=document.createElement("a"),g="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),
+mxUtils.write(f,g),f.setAttribute("title",g),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),d.appendChild(f),g=f);g.style.marginRight="20px";this.toolbar.container.appendChild(d);this.toolbar.staticElements.push(d);d.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=
+new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.loadOrgChartLayouts=function(d){var f=mxUtils.bind(this,function(){this.loadingOrgChart=!1;this.spinner.stop();d()});
+"undefined"!==typeof mxOrgChartLayout||this.loadingOrgChart||this.isOffline(!0)?f():this.spinner.spin(document.body,mxResources.get("loading"))&&(this.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.importCsv=function(d,f){this.loadOrgChartLayouts(mxUtils.bind(this,
+function(){this.doImportCsv(d,f)}))};EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},I=this.editor.graph,G=null,Z=null,ca=null,aa=null,Y=null,qa=null,Q=null,X="whiteSpace=wrap;html=1;",fa=null,ka=null,ia="",V="auto",L="auto",ea=!1,O=null,N=null,ba=40,la=40,u=100,H=0,P=function(){null!=f?f(ua):(I.setSelectionCells(ua),I.scrollCellToVisible(I.getSelectionCell()))},T=I.getFreeInsertPoint(),S=T.x,da=T.y;T=da;var R=null,ma="auto";ka=null;
+for(var ra=[],xa=null,ta=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),Aa++;if("#"!=d.charAt(1)){var Ca=d.indexOf(":");if(0<Ca){var Ba=mxUtils.trim(d.substring(1,Ca)),sa=mxUtils.trim(d.substring(Ca+1));"label"==Ba?R=I.sanitizeHtml(sa):"labelname"==Ba&&0<sa.length&&"-"!=sa?Y=sa:"labels"==Ba&&0<sa.length&&"-"!=sa?Q=JSON.parse(sa):"style"==Ba?
+Z=sa:"parentstyle"==Ba?X=sa:"unknownStyle"==Ba&&"-"!=sa?qa=sa:"stylename"==Ba&&0<sa.length&&"-"!=sa?aa=sa:"styles"==Ba&&0<sa.length&&"-"!=sa?ca=JSON.parse(sa):"vars"==Ba&&0<sa.length&&"-"!=sa?G=JSON.parse(sa):"identity"==Ba&&0<sa.length&&"-"!=sa?fa=sa:"parent"==Ba&&0<sa.length&&"-"!=sa?ka=sa:"namespace"==Ba&&0<sa.length&&"-"!=sa?ia=sa:"width"==Ba?V=sa:"height"==Ba?L=sa:"collapsed"==Ba&&"-"!=sa?ea="true"==sa:"left"==Ba&&0<sa.length?O=sa:"top"==Ba&&0<sa.length?N=sa:"ignore"==Ba?ta=sa.split(","):"connect"==
+Ba?ra.push(JSON.parse(sa)):"link"==Ba?xa=sa:"padding"==Ba?H=parseFloat(sa):"edgespacing"==Ba?ba=parseFloat(sa):"nodespacing"==Ba?la=parseFloat(sa):"levelspacing"==Ba?u=parseFloat(sa):"layout"==Ba&&(ma=sa)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));var Pa=this.editor.csvToArray(g[Aa].replace(/\r$/,""));Ca=d=null;Ba=[];for(sa=0;sa<Pa.length;sa++)fa==Pa[sa]&&(d=sa),ka==Pa[sa]&&(Ca=sa),Ba.push(mxUtils.trim(Pa[sa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,
+""));null==R&&(R="%"+Ba[0]+"%");if(null!=ra)for(var Ta=0;Ta<ra.length;Ta++)null==C[ra[Ta].to]&&(C[ra[Ta].to]={});fa=[];for(sa=Aa+1;sa<g.length;sa++){var Oa=this.editor.csvToArray(g[sa].replace(/\r$/,""));if(null==Oa){var Xa=40<g[sa].length?g[sa].substring(0,40)+"...":g[sa];throw Error(Xa+" ("+sa+"):\n"+mxResources.get("containsValidationErrors"));}0<Oa.length&&fa.push(Oa)}I.model.beginUpdate();try{for(sa=0;sa<fa.length;sa++){Oa=fa[sa];var Ga=null,eb=null!=d?ia+Oa[d]:null;g=!1;null!=eb&&(Ga=I.model.getCell(eb),
+g=null==Ga||0<=mxUtils.indexOf(m,Ga));var bb=new mxCell(R,new mxGeometry(S,T,0,0),Z||"whiteSpace=wrap;html=1;");bb.collapsed=ea;bb.vertex=!0;bb.id=eb;null==Ga||g||I.model.setCollapsed(Ga,ea);for(var z=0;z<Oa.length;z++)I.setAttributeForCell(bb,Ba[z],Oa[z]),null==Ga||g||I.setAttributeForCell(Ga,Ba[z],Oa[z]);if(null!=Y&&null!=Q){var K=Q[bb.getAttribute(Y)];null!=K&&(I.labelChanged(bb,K),null==Ga||g||I.cellLabelChanged(Ga,K))}if(null!=aa&&null!=ca){var M=ca[bb.getAttribute(aa)];null!=M&&(bb.style=M)}I.setAttributeForCell(bb,
+"placeholders","1");bb.style=I.replacePlaceholders(bb,bb.style,G);null==Ga||g?I.fireEvent(new mxEventObject("cellsInserted","cells",[bb])):(I.model.setStyle(Ga,bb.style),0>mxUtils.indexOf(y,Ga)&&y.push(Ga),I.fireEvent(new mxEventObject("cellsInserted","cells",[Ga])));g=null!=Ga;Ga=bb;if(!g)for(Ta=0;Ta<ra.length;Ta++)C[ra[Ta].to][Ga.getAttribute(ra[Ta].to)]=Ga;null!=xa&&"link"!=xa&&(I.setLinkForCell(Ga,Ga.getAttribute(xa)),I.setAttributeForCell(Ga,xa,null));var U=this.editor.graph.getPreferredSizeForCell(Ga);
+ka=null!=Ca?I.model.getCell(ia+Oa[Ca]):null;if(Ga.vertex){Xa=null!=ka?0:S;Aa=null!=ka?0:da;null!=O&&null!=Ga.getAttribute(O)&&(Ga.geometry.x=Xa+parseFloat(Ga.getAttribute(O)));null!=N&&null!=Ga.getAttribute(N)&&(Ga.geometry.y=Aa+parseFloat(Ga.getAttribute(N)));var W="@"==V.charAt(0)?Ga.getAttribute(V.substring(1)):null;Ga.geometry.width=null!=W&&"auto"!=W?parseFloat(Ga.getAttribute(V.substring(1))):"auto"==V||"auto"==W?U.width+H:parseFloat(V);var ha="@"==L.charAt(0)?Ga.getAttribute(L.substring(1)):
+null;Ga.geometry.height=null!=ha&&"auto"!=ha?parseFloat(ha):"auto"==L||"auto"==ha?U.height+H:parseFloat(L);T+=Ga.geometry.height+la}g?(null==F[eb]&&(F[eb]=[]),F[eb].push(Ga)):(m.push(Ga),null!=ka?(ka.style=I.replacePlaceholders(ka,X,G),I.addCell(Ga,ka),q.push(ka)):y.push(I.addCell(Ga)))}for(sa=0;sa<q.length;sa++)W="@"==V.charAt(0)?q[sa].getAttribute(V.substring(1)):null,ha="@"==L.charAt(0)?q[sa].getAttribute(L.substring(1)):null,"auto"!=V&&"auto"!=W||"auto"!=L&&"auto"!=ha||I.updateGroupBounds([q[sa]],
+H,!0);var na=y.slice(),ua=y.slice();for(Ta=0;Ta<ra.length;Ta++){var pa=ra[Ta];for(sa=0;sa<m.length;sa++){Ga=m[sa];var za=mxUtils.bind(this,function(Za,cb,fb){var qb=cb.getAttribute(fb.from);if(null!=qb&&""!=qb){qb=qb.split(",");for(var ub=0;ub<qb.length;ub++){var ab=C[fb.to][qb[ub]];if(null==ab&&null!=qa){ab=new mxCell(qb[ub],new mxGeometry(S,da,0,0),qa);ab.style=I.replacePlaceholders(cb,ab.style,G);var db=this.editor.graph.getPreferredSizeForCell(ab);ab.geometry.width=db.width+H;ab.geometry.height=
+db.height+H;C[fb.to][qb[ub]]=ab;ab.vertex=!0;ab.id=qb[ub];y.push(I.addCell(ab))}if(null!=ab){db=fb.label;null!=fb.fromlabel&&(db=(cb.getAttribute(fb.fromlabel)||"")+(db||""));null!=fb.sourcelabel&&(db=I.replacePlaceholders(cb,fb.sourcelabel,G)+(db||""));null!=fb.tolabel&&(db=(db||"")+(ab.getAttribute(fb.tolabel)||""));null!=fb.targetlabel&&(db=(db||"")+I.replacePlaceholders(ab,fb.targetlabel,G));var kb="target"==fb.placeholders==!fb.invert?ab:Za;kb=null!=fb.style?I.replacePlaceholders(kb,fb.style,
+G):I.createCurrentEdgeStyle();db=I.insertEdge(null,null,db||"",fb.invert?ab:Za,fb.invert?Za:ab,kb);if(null!=fb.labels)for(kb=0;kb<fb.labels.length;kb++){var ib=fb.labels[kb],ob=new mxCell(ib.label||kb,new mxGeometry(null!=ib.x?ib.x:0,null!=ib.y?ib.y:0,0,0),"resizable=0;html=1;");ob.vertex=!0;ob.connectable=!1;ob.geometry.relative=!0;null!=ib.placeholders&&(ob.value=I.replacePlaceholders("target"==ib.placeholders==!fb.invert?ab:Za,ob.value,G));if(null!=ib.dx||null!=ib.dy)ob.geometry.offset=new mxPoint(null!=
+ib.dx?ib.dx:0,null!=ib.dy?ib.dy:0);db.insert(ob)}ua.push(db);mxUtils.remove(fb.invert?Za:ab,na)}}}});za(Ga,Ga,pa);if(null!=F[Ga.id])for(z=0;z<F[Ga.id].length;z++)za(Ga,F[Ga.id][z],pa)}}if(null!=ta)for(sa=0;sa<m.length;sa++)for(Ga=m[sa],z=0;z<ta.length;z++)I.setAttributeForCell(Ga,mxUtils.trim(ta[z]),null);if(0<y.length){var Da=new mxParallelEdgeLayout(I);Da.spacing=ba;Da.checkOverlap=!0;var Ma=function(){0<Da.spacing&&Da.execute(I.getDefaultParent());for(var Za=0;Za<y.length;Za++){var cb=I.getCellGeometry(y[Za]);
+cb.x=Math.round(I.snap(cb.x));cb.y=Math.round(I.snap(cb.y));"auto"==V&&(cb.width=Math.round(I.snap(cb.width)));"auto"==L&&(cb.height=Math.round(I.snap(cb.height)))}};if("["==ma.charAt(0)){var La=P;I.view.validate();this.executeLayouts(I.createLayouts(JSON.parse(ma)),function(){Ma();La()});P=null}else if("circle"==ma){var Ua=new mxCircleLayout(I);Ua.disableEdgeStyle=!1;Ua.resetEdges=!1;var Sa=Ua.isVertexIgnored;Ua.isVertexIgnored=function(Za){return Sa.apply(this,arguments)||0>mxUtils.indexOf(y,Za)};
+this.executeLayout(function(){Ua.execute(I.getDefaultParent());Ma()},!0,P);P=null}else if("horizontaltree"==ma||"verticaltree"==ma||"auto"==ma&&ua.length==2*y.length-1&&1==na.length){I.view.validate();var Fa=new mxCompactTreeLayout(I,"horizontaltree"==ma);Fa.levelDistance=la;Fa.edgeRouting=!1;Fa.resetEdges=!1;this.executeLayout(function(){Fa.execute(I.getDefaultParent(),0<na.length?na[0]:null)},!0,P);P=null}else if("horizontalflow"==ma||"verticalflow"==ma||"auto"==ma&&1==na.length){I.view.validate();
+var va=new mxHierarchicalLayout(I,"horizontalflow"==ma?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);va.intraCellSpacing=la;va.parallelEdgeSpacing=ba;va.interRankCellSpacing=u;va.disableEdgeStyle=!1;this.executeLayout(function(){va.execute(I.getDefaultParent(),ua);I.moveCells(ua,S,da)},!0,P);P=null}else if("orgchart"==ma){I.view.validate();var ya=new mxOrgChartLayout(I,2,u,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(Za){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,Za)};
+this.executeLayout(function(){ya.execute(I.getDefaultParent());Ma()},!0,P);P=null}else if("organic"==ma||"auto"==ma&&ua.length>y.length){I.view.validate();var Ja=new mxFastOrganicLayout(I);Ja.forceConstant=3*la;Ja.disableEdgeStyle=!1;Ja.resetEdges=!1;var Qa=Ja.isVertexIgnored;Ja.isVertexIgnored=function(Za){return Qa.apply(this,arguments)||0>mxUtils.indexOf(y,Za)};this.executeLayout(function(){Ja.execute(I.getDefaultParent());Ma()},!0,P);P=null}}this.hideDialog()}finally{I.model.endUpdate()}null!=
+P&&P()}}catch(Za){this.handleError(Za)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
+m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
+f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);
+this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);
+this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};
+EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,
+f=this.getCurrentFile(),g=this.getSelectionState(),m=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(m);this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());this.actions.get("guides").setEnabled(m);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(m);this.actions.get("connectionArrows").setEnabled(m);this.actions.get("connectionPoints").setEnabled(m);this.actions.get("copyStyle").setEnabled(m&&!d.isSelectionEmpty());
+this.actions.get("pasteStyle").setEnabled(m&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(m);this.actions.get("createRevision").setEnabled(m);this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(m&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=
+this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);
+f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(m&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=
+!1,ExportDialog.exportFile=function(d,f,g,m,q,y,F,C){var I=d.editor.graph;if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,"svg",mxUtils.getXml(I.getSvg(m,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),Z=I.getGraphBounds(),ca=Math.floor(Z.width*q/I.view.scale),aa=Math.floor(Z.height*q/I.view.scale);if(G.length<=MAX_REQUEST_SIZE&&ca*aa<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=
+g&&"jpeg"!=g||!d.isExportToCanvas()){var Y={globalVars:I.getExportVariables()};C&&(Y.grid={size:I.gridSize,steps:I.view.gridSteps,color:I.view.gridColor});d.saveRequest(f,g,function(qa,Q){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(Q||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Y))+(0<F?"&dpi="+F:"")+"&bg="+(null!=m?m:"none")+"&w="+ca+"&h="+aa+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==m||
+"none"==m,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var m=d;this.currentPage!=this.pages[g]&&(m=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),m.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+
+m.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var m=document.createElement("h3");mxUtils.write(m,mxUtils.htmlEntities(d));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(m);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";
+q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var I=JSON.parse(decodeURIComponent(C.substring(1)));y[I[0]]={id:I[0],title:I[1],downloadUrl:I[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerText="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+
+"</div>";else for(var Z=0;Z<G.length;Z++){var ca=G[Z];y[ca.id]&&(f[ca.id]=ca);var aa=this.addCheckbox(q,ca.title,y[ca.id]);(function(Y,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Y.id]=Y:delete f[Y.id]})})(ca,aa)}},mxUtils.bind(this,function(G){q.innerText="";var Z=document.createElement("div");Z.style.padding="8px";Z.style.textAlign="center";mxUtils.write(Z,mxResources.get("error")+": ");mxUtils.write(Z,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));q.appendChild(Z)}));
+g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,Z;for(Z in f)null==y[Z]&&(G++,mxUtils.bind(this,function(ca){this.remoteInvoke("getFileContent",[ca.downloadUrl],null,mxUtils.bind(this,function(aa){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,aa,ca))}catch(Y){this.handleError(Y,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&this.spinner.stop();this.handleError(null,
+mxResources.get("errorLoadingFile"))}))})(f[Z]));for(Z in y)f[Z]||this.closeLibrary(new RemoteLibrary(this,null,y[Z]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},
+setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==g)throw Error("No callback for "+
+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,m,q){var y=!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&m.apply(this,arguments)}),I=mxUtils.bind(this,function(){window.clearTimeout(F);y&&q.apply(this,
+arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:C,error:I});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,Z){var ca={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=Z?ca.error={errResp:Z}:null!=G&&(ca.resp=G);this.remoteWin.postMessage(JSON.stringify(ca),
+"*")});try{var m=d.funtionName,q=this.remoteInvokableFns[m];if(null!=q&&"function"===typeof this[m]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+m+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),this[m].apply(this,C);else{var I=this[m].apply(this,C);
+g([I])}}else g(null,"Invalid Call: "+m+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var m=g.open("database",2);m.onupgradeneeded=function(q){try{var y=m.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",{keyPath:"title"}),y.createObjectStore("filesInfo",
+{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(F){null!=f&&f(F)}};m.onsuccess=mxUtils.bind(this,function(q){var y=m.result;this.database=y;EditorUi.migrateStorageFiles&&(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=document.createElement("iframe");C.style.display=
+"none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(C);var I=!0,G=!1,Z,ca=0,aa=mxUtils.bind(this,function(){G=!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Y=mxUtils.bind(this,function(){ca++;qa()}),qa=mxUtils.bind(this,function(){try{if(ca>=Z.length)aa();else{var X=Z[ca];StorageFile.getFileContent(this,X,mxUtils.bind(this,
+function(fa){null==fa||".scratchpad"==X&&fa==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[X]}),"*"):Y()}),Y)}}catch(fa){console.log(fa)}}),Q=mxUtils.bind(this,function(X){try{this.setDatabaseItem(null,[{title:X.title,size:X.data.length,lastModified:Date.now(),type:X.isLib?"L":"F"},{title:X.title,data:X.data}],Y,Y,["filesInfo","files"])}catch(fa){console.log(fa)}});F=mxUtils.bind(this,function(X){try{if(X.source==
+C.contentWindow){var fa={};try{fa=JSON.parse(X.data)}catch(ka){}"init"==fa.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=fa.event||G||(I?null!=fa.resp&&0<fa.resp.length&&null!=fa.resp[0]?(Z=fa.resp[0],I=!1,qa()):aa():null!=fa.resp&&0<fa.resp.length&&null!=fa.resp[0]?Q(fa.resp[0]):Y())}}catch(ka){console.log(ka)}});window.addEventListener("message",
+F)}})));d(y);y.onversionchange=function(){y.close()}});m.onerror=f;m.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,f,g,m,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=m;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=m&&m(C)}}),m)};
+EditorUi.prototype.removeDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){m=m||"objects";Array.isArray(m)||(m=[m],d=[d]);q=q.transaction(m,"readwrite");q.oncomplete=f;q.onerror=g;for(var y=0;y<m.length;y++)q.objectStore(m[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){try{m=m||"objects";var y=q.transaction([m],"readonly").objectStore(m).get(d);y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=
+g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";
+var q=m.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};
+EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=function(d,f,g){var m=this.getCurrentFile();null!=m?m.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,f){var g=this.getCurrentFile();
+return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==
+DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,f,g,m,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,m,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};
+EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa,Y,qa,
+Q){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,m,q,y,F,C,I,G,Z,ca,aa,Y,qa,Q)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,m)};EditorUi.prototype.convertImageToDataUri=function(d,
+f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=
+function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===m.substring(0,8)||"<?xml"===m.substring(0,
+5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
+var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ia=ca.getElementsByTagName("div"),V=0,L=0;L<ia.length;L++)"none"!=ia[L].style.display&&ia[L].parentNode==ca&&V++;aa.style.display=0==V?"block":"none"}function d(ia,V,L,ea){function O(){V.removeChild(la);V.removeChild(u);ba.style.display="block";N.style.display="block"}I={div:V,comment:ia,saveCallback:L,deleteOnCancel:ea};var N=V.querySelector(".geCommentTxt"),ba=V.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
+la.className="geCommentEditTxtArea";la.style.minHeight=N.offsetHeight+"px";la.value=ia.content;V.insertBefore(la,N);var u=document.createElement("div");u.className="geCommentEditBtns";var H=mxUtils.button(mxResources.get("cancel"),function(){ea?(V.parentNode.removeChild(V),E()):O();I=null});H.className="geCommentEditBtn";u.appendChild(H);var P=mxUtils.button(mxResources.get("save"),function(){N.innerText="";ia.content=la.value;mxUtils.write(N,ia.content);O();L(ia);I=null});mxEvent.addListener(la,
+"keydown",mxUtils.bind(this,function(T){mxEvent.isConsumed(T)||((mxEvent.isControlDown(T)||mxClient.IS_MAC&&mxEvent.isMetaDown(T))&&13==T.keyCode?(P.click(),mxEvent.consume(T)):27==T.keyCode&&(H.click(),mxEvent.consume(T)))}));P.focus();P.className="geCommentEditBtn gePrimaryBtn";u.appendChild(P);V.insertBefore(u,N);ba.style.display="none";N.style.display="none";la.focus()}function f(ia,V){V.innerText="";ia=new Date(ia.modifiedDate);var L=b.timeSince(ia);null==L&&(L=mxResources.get("lessThanAMinute"));
+mxUtils.write(V,mxResources.get("timeAgo",[L],"{1} ago"));V.setAttribute("title",ia.toLocaleDateString()+" "+ia.toLocaleTimeString())}function g(ia){var V=document.createElement("img");V.className="geCommentBusyImg";V.src=IMAGE_PATH+"/spin.gif";ia.appendChild(V);ia.busyImg=V}function m(ia){ia.style.border="1px solid red";ia.removeChild(ia.busyImg)}function q(ia){ia.style.border="";ia.removeChild(ia.busyImg)}function y(ia,V,L,ea,O){function N(da,R,ma){var ra=document.createElement("li");ra.className=
+"geCommentAction";var xa=document.createElement("a");xa.className="geCommentActionLnk";mxUtils.write(xa,da);ra.appendChild(xa);mxEvent.addListener(xa,"click",function(ta){R(ta,ia);ta.preventDefault();mxEvent.consume(ta)});S.appendChild(ra);ma&&(ra.style.display="none")}function ba(){function da(ra){R.push(ma);if(null!=ra.replies)for(var xa=0;xa<ra.replies.length;xa++)ma=ma.nextSibling,da(ra.replies[xa])}var R=[],ma=u;da(ia);return{pdiv:ma,replies:R}}function la(da,R,ma,ra,xa){function ta(){g(sa);
+ia.addReply(Ba,function(Pa){Ba.id=Pa;ia.replies.push(Ba);q(sa);ma&&ma()},function(Pa){Aa();m(sa);b.handleError(Pa,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},ra,xa)}function Aa(){d(Ba,sa,function(Pa){ta()},!0)}var Ca=ba().pdiv,Ba=b.newComment(da,b.getCurrentUser());Ba.pCommentId=ia.id;null==ia.replies&&(ia.replies=[]);var sa=y(Ba,ia.replies,Ca,ea+1);R?Aa():ta()}if(O||!ia.isResolved){aa.style.display="none";var u=document.createElement("div");u.className="geCommentContainer";
+u.setAttribute("data-commentId",ia.id);u.style.marginLeft=20*ea+5+"px";ia.isResolved&&!Editor.isDarkMode()&&(u.style.backgroundColor="ghostWhite");var H=document.createElement("div");H.className="geCommentHeader";var P=document.createElement("img");P.className="geCommentUserImg";P.src=ia.user.pictureUrl||Editor.userImage;H.appendChild(P);P=document.createElement("div");P.className="geCommentHeaderTxt";H.appendChild(P);var T=document.createElement("div");T.className="geCommentUsername";mxUtils.write(T,
+ia.user.displayName||"");P.appendChild(T);T=document.createElement("div");T.className="geCommentDate";T.setAttribute("data-commentId",ia.id);f(ia,T);P.appendChild(T);u.appendChild(H);H=document.createElement("div");H.className="geCommentTxt";mxUtils.write(H,ia.content||"");u.appendChild(H);ia.isLocked&&(u.style.opacity="0.5");H=document.createElement("div");H.className="geCommentActions";var S=document.createElement("ul");S.className="geCommentActionsList";H.appendChild(S);F||ia.isLocked||0!=ea&&
+!C||N(mxResources.get("reply"),function(){la("",!0)},ia.isResolved);P=b.getCurrentUser();null==P||P.id!=ia.user.id||F||ia.isLocked||(N(mxResources.get("edit"),function(){function da(){d(ia,u,function(){g(u);ia.editComment(ia.content,function(){q(u)},function(R){m(u);da();b.handleError(R,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}da()},ia.isResolved),N(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(u);ia.deleteComment(function(da){if(!0===
+da){da=u.querySelector(".geCommentTxt");da.innerText="";mxUtils.write(da,mxResources.get("msgDeleted"));var R=u.querySelectorAll(".geCommentAction");for(da=0;da<R.length;da++)R[da].parentNode.removeChild(R[da]);q(u);u.style.opacity="0.5"}else{R=ba(ia).replies;for(da=0;da<R.length;da++)ca.removeChild(R[da]);for(da=0;da<V.length;da++)if(V[da]==ia){V.splice(da,1);break}aa.style.display=0==ca.getElementsByTagName("div").length?"block":"none"}},function(da){m(u);b.handleError(da,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
+ia.isResolved));F||ia.isLocked||0!=ea||N(ia.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(da){function R(){var ma=da.target;ma.innerText="";ia.isResolved=!ia.isResolved;mxUtils.write(ma,ia.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var ra=ia.isResolved?"none":"",xa=ba(ia).replies,ta=Editor.isDarkMode()?"transparent":ia.isResolved?"ghostWhite":"white",Aa=0;Aa<xa.length;Aa++){xa[Aa].style.backgroundColor=ta;for(var Ca=xa[Aa].querySelectorAll(".geCommentAction"),
+Ba=0;Ba<Ca.length;Ba++)Ca[Ba]!=ma.parentNode&&(Ca[Ba].style.display=ra);Q||(xa[Aa].style.display="none")}E()}ia.isResolved?la(mxResources.get("reOpened")+": ",!0,R,!1,!0):la(mxResources.get("markedAsResolved"),!1,R,!0)});u.appendChild(H);null!=L?ca.insertBefore(u,L.nextSibling):ca.appendChild(u);for(L=0;null!=ia.replies&&L<ia.replies.length;L++)H=ia.replies[L],H.isResolved=ia.isResolved,y(H,ia.replies,null,ea+1,O);null!=I&&(I.comment.id==ia.id?(O=ia.content,ia.content=I.comment.content,d(ia,u,I.saveCallback,
+I.deleteOnCancel),ia.content=O):null==I.comment.id&&I.comment.pCommentId==ia.id&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel)));return u}}var F=!b.canComment(),C=b.canReplyToReplies(),I=null,G=document.createElement("div");G.className="geCommentsWin";G.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var Z=EditorUi.compactUi?"26px":"30px",ca=document.createElement("div");ca.className="geCommentsList";ca.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:
+"whiteSmoke";ca.style.bottom=parseInt(Z)+7+"px";G.appendChild(ca);var aa=document.createElement("span");aa.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(aa,mxResources.get("noCommentsFound"));var Y=document.createElement("div");Y.className="geToolbarContainer geCommentsToolbar";Y.style.height=Z;Y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";Y.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";Z=document.createElement("a");Z.className=
+"geButton";if(!F){var qa=Z.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ia){function V(){d(L,ea,function(O){g(ea);b.addComment(O,function(N){O.id=N;X.push(O);q(ea)},function(N){m(ea);V();b.handleError(N,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var L=b.newComment("",b.getCurrentUser()),ea=y(L,X,null,0);V();ia.preventDefault();
+mxEvent.consume(ia)});Y.appendChild(qa)}qa=Z.cloneNode();qa.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';qa.setAttribute("title",mxResources.get("showResolved"));var Q=!1;Editor.isDarkMode()&&(qa.style.filter="invert(100%)");mxEvent.addListener(qa,"click",function(ia){this.className=(Q=!Q)?"geButton geCheckedBtn":"geButton";fa();ia.preventDefault();mxEvent.consume(ia)});Y.appendChild(qa);b.commentsRefreshNeeded()&&(qa=Z.cloneNode(),qa.innerHTML='<img src="'+
+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',qa.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(qa.style.filter="invert(100%)"),mxEvent.addListener(qa,"click",function(ia){fa();ia.preventDefault();mxEvent.consume(ia)}),Y.appendChild(qa));b.commentsSaveNeeded()&&(Z=Z.cloneNode(),Z.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',Z.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(Z.style.filter="invert(100%)"),
+mxEvent.addListener(Z,"click",function(ia){t();ia.preventDefault();mxEvent.consume(ia)}),Y.appendChild(Z));G.appendChild(Y);var X=[],fa=mxUtils.bind(this,function(){this.hasError=!1;if(null!=I)try{I.div=I.div.cloneNode(!0);var ia=I.div.querySelector(".geCommentEditTxtArea"),V=I.div.querySelector(".geCommentEditBtns");I.comment.content=ia.value;ia.parentNode.removeChild(ia);V.parentNode.removeChild(V)}catch(L){b.handleError(L)}ca.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+
+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(L){function ea(O){if(null!=O){O.sort(function(ba,la){return new Date(ba.modifiedDate)-new Date(la.modifiedDate)});for(var N=0;N<O.length;N++)ea(O[N].replies)}}L.sort(function(O,N){return new Date(O.modifiedDate)-new Date(N.modifiedDate)});ca.innerText="";ca.appendChild(aa);aa.style.display="block";X=L;for(L=0;L<X.length;L++)ea(X[L].replies),
+y(X[L],X,null,0,Q);null!=I&&null==I.comment.id&&null==I.comment.pCommentId&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel))},mxUtils.bind(this,function(L){ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(L&&L.message?": "+L.message:""));this.hasError=!0})):ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});fa();this.refreshComments=fa;Y=mxUtils.bind(this,function(){function ia(N){var ba=L[N.id];if(null!=ba)for(f(N,ba),ba=0;null!=N.replies&&ba<N.replies.length;ba++)ia(N.replies[ba])}
+if(this.window.isVisible()){for(var V=ca.querySelectorAll(".geCommentDate"),L={},ea=0;ea<V.length;ea++){var O=V[ea];L[O.getAttribute("data-commentId")]=O}for(ea=0;ea<X.length;ea++)ia(X[ea])}});setInterval(Y,6E4);this.refreshCommentsTime=Y;this.window=new mxWindow(mxResources.get("comments"),G,e,k,n,D,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);
+this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(ia,V){var L=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;ia=Math.max(0,Math.min(ia,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));V=Math.max(0,Math.min(V,L-this.table.clientHeight-48));this.getX()==ia&&this.getY()==V||mxWindow.prototype.setLocation.apply(this,arguments)};var ka=
+mxUtils.bind(this,function(){var ia=this.window.getX(),V=this.window.getY();this.window.setLocation(ia,V)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,
+e);q.appendChild(y);null!=g&&(y=document.createElement("div"),y.style.padding="6px 0 6px 0",e=document.createElement("img"),e.setAttribute("src",g),y.appendChild(e),q.appendChild(y));g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";var F=document.createElement("input");F.setAttribute("type","checkbox");t=mxUtils.button(t||mxResources.get("cancel"),function(){b.hideDialog();null!=n&&n(F.checked)});t.className="geBtn";null!=d&&(t.innerHTML=d+"<br>"+t.innerHTML,
+t.style.paddingBottom="8px",t.style.paddingTop="8px",t.style.height="auto",t.style.width="40%");b.editor.cancelFirst&&g.appendChild(t);var C=mxUtils.button(D||mxResources.get("ok"),function(){b.hideDialog();null!=k&&k(F.checked)});g.appendChild(C);null!=E?(C.innerHTML=E+"<br>"+C.innerHTML+"<br>",C.style.paddingBottom="8px",C.style.paddingTop="8px",C.style.height="auto",C.className="geBtn",C.style.width="40%"):C.className="geBtn gePrimaryBtn";b.editor.cancelFirst||g.appendChild(t);q.appendChild(g);
+f?(g.style.marginTop="10px",y=document.createElement("p"),y.style.marginTop="20px",y.style.marginBottom="0px",y.appendChild(F),D=document.createElement("span"),mxUtils.write(D," "+mxResources.get("rememberThisSetting")),y.appendChild(D),q.appendChild(y),mxEvent.addListener(D,"click",function(I){F.checked=!F.checked;mxEvent.consume(I)})):g.style.marginTop="12px";this.init=function(){C.focus()};this.container=q};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,k){this.ui=b;this.page=e;this.previous=this.name=k}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,k){this.ui=b;this.oldIndex=e;this.newIndex=k}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,k){this.ui=b;this.previousPage=this.page=e;this.neverShown=!0;null!=e&&(this.neverShown=null==e.viewState,this.ui.updatePageRoot(e),null!=k&&(e.viewState=k,this.neverShown=!1))}
@@ -3870,40 +3870,40 @@ f=new EmbedDialog(this,this.getLinkForPage(b,t,f));this.showDialog(f.container,4
n));return n};b.beforeDecode=function(e,k,n){n.ui=e.ui;n.relatedPage=n.ui.getPageById(k.getAttribute("relatedPage"));if(null==n.relatedPage){var D=k.ownerDocument.createElement("diagram");D.setAttribute("id",k.getAttribute("relatedPage"));D.setAttribute("name",k.getAttribute("name"));n.relatedPage=new DiagramPage(D);D=k.getAttribute("viewState");null!=D&&(n.relatedPage.viewState=JSON.parse(D),k.removeAttribute("viewState"));k=k.cloneNode(!0);D=k.firstChild;if(null!=D)for(n.relatedPage.root=e.decodeCell(D,
!1),n=D.nextSibling,D.parentNode.removeChild(D),D=n;null!=D;){n=D.nextSibling;if(D.nodeType==mxConstants.NODETYPE_ELEMENT){var t=D.getAttribute("id");null==e.lookup(t)&&e.decodeCell(D)}D.parentNode.removeChild(D);D=n}}return k};b.afterDecode=function(e,k,n){n.index=n.previousIndex;return n};mxCodecRegistry.register(b)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(n,D,t,E,d){D=null!=D?D:!1;null==t&&(t=this.getFoldableCells(this.getSelectionCells(),n));this.stopEditing();this.model.beginUpdate();try{for(var f=t.slice(),g=0;g<t.length;g++)"1"==mxUtils.getValue(this.getCurrentCellStyle(t[g]),"treeFolding","0")&&this.foldTreeCell(n,t[g]);t=f;t=b.apply(this,arguments)}finally{this.model.endUpdate()}return t};Graph.prototype.foldTreeCell=
function(n,D){this.model.beginUpdate();try{var t=[];this.traverse(D,!0,mxUtils.bind(this,function(d,f){var g=null!=f&&this.isTreeEdge(f);g&&t.push(f);d==D||null!=f&&!g||t.push(d);return(null==f||g)&&(d==D||!this.model.isCollapsed(d))}));this.model.setCollapsed(D,n);for(var E=0;E<t.length;E++)this.model.setVisible(t[E],!n)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(n){return!this.isEdgeIgnored(n)};Graph.prototype.getTreeEdges=function(n,D,t,E,d,f){return this.model.filterCells(this.getEdges(n,
-D,t,E,d,f),mxUtils.bind(this,function(g){return this.isTreeEdge(g)}))};Graph.prototype.getIncomingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!1,!0,!1)};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function n(J){return I.isVertex(J)&&t(J)}function D(J){var W=
-!1;null!=J&&(W="1"==C.getCurrentCellStyle(J).treeMoving);return W}function t(J){var W=!1;null!=J&&(J=I.getParent(J),W=C.view.getState(J),W="tree"==(null!=W?W.style:C.getCellStyle(J)).containerType);return W}function E(J){var W=!1;null!=J&&(J=I.getParent(J),W=C.view.getState(J),C.view.getState(J),W=null!=(null!=W?W.style:C.getCellStyle(J)).childLayout);return W}function d(J){J=C.view.getState(J);if(null!=J){var W=C.getIncomingTreeEdges(J.cell);if(0<W.length&&(W=C.view.getState(W[0]),null!=W&&(W=W.absolutePoints,
-null!=W&&0<W.length&&(W=W[W.length-1],null!=W)))){if(W.y==J.y&&Math.abs(W.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_SOUTH;if(W.y==J.y+J.height&&Math.abs(W.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_NORTH;if(W.x>J.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(J,W){W=null!=W?W:!0;C.model.beginUpdate();try{var Q=C.model.getParent(J),S=C.getIncomingTreeEdges(J),ha=C.cloneCells([S[0],J]);C.model.setTerminal(ha[0],C.model.getTerminal(S[0],
-!0),!0);var la=d(J),u=Q.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ha[1].geometry.x+=W?J.geometry.width+10:-ha[1].geometry.width-10:ha[1].geometry.y+=W?J.geometry.height+10:-ha[1].geometry.height-10;C.view.currentRoot!=Q&&(ha[1].geometry.x-=u.x,ha[1].geometry.y-=u.y);var H=C.view.getState(J),O=C.view.scale;if(null!=H){var T=mxRectangle.fromRectangle(H);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?T.x+=(W?J.geometry.width+10:-ha[1].geometry.width-
-10)*O:T.y+=(W?J.geometry.height+10:-ha[1].geometry.height-10)*O;var R=C.getOutgoingTreeEdges(C.model.getTerminal(S[0],!0));if(null!=R){for(var da=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,P=u=S=0;P<R.length;P++){var ma=C.model.getTerminal(R[P],!1);if(la==d(ma)){var ra=C.view.getState(ma);ma!=J&&null!=ra&&(da&&W!=ra.getCenterX()<H.getCenterX()||!da&&W!=ra.getCenterY()<H.getCenterY())&&mxUtils.intersects(T,ra)&&(S=10+Math.max(S,(Math.min(T.x+T.width,ra.x+ra.width)-Math.max(T.x,
-ra.x))/O),u=10+Math.max(u,(Math.min(T.y+T.height,ra.y+ra.height)-Math.max(T.y,ra.y))/O))}}da?u=0:S=0;for(P=0;P<R.length;P++)if(ma=C.model.getTerminal(R[P],!1),la==d(ma)&&(ra=C.view.getState(ma),ma!=J&&null!=ra&&(da&&W!=ra.getCenterX()<H.getCenterX()||!da&&W!=ra.getCenterY()<H.getCenterY()))){var xa=[];C.traverse(ra.cell,!0,function(ta,Aa){var Ca=null!=Aa&&C.isTreeEdge(Aa);Ca&&xa.push(Aa);(null==Aa||Ca)&&xa.push(ta);return null==Aa||Ca});C.moveCells(xa,(W?1:-1)*S,(W?1:-1)*u)}}}return C.addCells(ha,
-Q)}finally{C.model.endUpdate()}}function g(J){C.model.beginUpdate();try{var W=d(J),Q=C.getIncomingTreeEdges(J),S=C.cloneCells([Q[0],J]);C.model.setTerminal(Q[0],S[1],!1);C.model.setTerminal(S[0],S[1],!0);C.model.setTerminal(S[0],J,!1);var ha=C.model.getParent(J),la=ha.geometry,u=[];C.view.currentRoot!=ha&&(S[1].geometry.x-=la.x,S[1].geometry.y-=la.y);C.traverse(J,!0,function(T,R){var da=null!=R&&C.isTreeEdge(R);da&&u.push(R);(null==R||da)&&u.push(T);return null==R||da});var H=J.geometry.width+40,
-O=J.geometry.height+40;W==mxConstants.DIRECTION_SOUTH?H=0:W==mxConstants.DIRECTION_NORTH?(H=0,O=-O):W==mxConstants.DIRECTION_WEST?(H=-H,O=0):W==mxConstants.DIRECTION_EAST&&(O=0);C.moveCells(u,H,O);return C.addCells(S,ha)}finally{C.model.endUpdate()}}function m(J,W){C.model.beginUpdate();try{var Q=C.model.getParent(J),S=C.getIncomingTreeEdges(J),ha=d(J);0==S.length&&(S=[C.createEdge(Q,null,"",null,null,C.createCurrentEdgeStyle())],ha=W);var la=C.cloneCells([S[0],J]);C.model.setTerminal(la[0],J,!0);
-if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],la[1],!1);var u=C.getCellStyle(la[1]).newEdgeStyle;if(null!=u)try{var H=JSON.parse(u),O;for(O in H)C.setCellStyles(O,H[O],[la[0]]),"edgeStyle"==O&&"elbowEdgeStyle"==H[O]&&C.setCellStyles("elbow",ha==mxConstants.DIRECTION_SOUTH||ha==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(ra){}}S=C.getOutgoingTreeEdges(J);var T=Q.geometry;W=[];C.view.currentRoot==Q&&(T=new mxRectangle);for(u=0;u<S.length;u++){var R=C.model.getTerminal(S[u],
-!1);null!=R&&W.push(R)}var da=C.view.getBounds(W),P=C.view.translate,ma=C.view.scale;ha==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==da?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-P.x-T.x+10,la[1].geometry.y+=la[1].geometry.height-T.y+40):ha==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==da?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-P.x+-T.x+10,la[1].geometry.y-=la[1].geometry.height+T.y+40):(la[1].geometry.x=ha==mxConstants.DIRECTION_WEST?
-la[1].geometry.x-(la[1].geometry.width+T.x+40):la[1].geometry.x+(la[1].geometry.width-T.x+40),la[1].geometry.y=null==da?J.geometry.y+(J.geometry.height-la[1].geometry.height)/2:(da.y+da.height)/ma-P.y+-T.y+10);return C.addCells(la,Q)}finally{C.model.endUpdate()}}function q(J,W,Q){J=C.getOutgoingTreeEdges(J);Q=C.view.getState(Q);var S=[];if(null!=Q&&null!=J){for(var ha=0;ha<J.length;ha++){var la=C.view.getState(C.model.getTerminal(J[ha],!1));null!=la&&(!W&&Math.min(la.x+la.width,Q.x+Q.width)>=Math.max(la.x,
-Q.x)||W&&Math.min(la.y+la.height,Q.y+Q.height)>=Math.max(la.y,Q.y))&&S.push(la)}S.sort(function(u,H){return W?u.x+u.width-H.x-H.width:u.y+u.height-H.y-H.height})}return S}function y(J,W){var Q=d(J),S=W==mxConstants.DIRECTION_EAST||W==mxConstants.DIRECTION_WEST;(Q==mxConstants.DIRECTION_EAST||Q==mxConstants.DIRECTION_WEST)==S&&Q!=W?F.actions.get("selectParent").funct():Q==W?(W=C.getOutgoingTreeEdges(J),null!=W&&0<W.length&&C.setSelectionCell(C.model.getTerminal(W[0],!1))):(Q=C.getIncomingTreeEdges(J),
-null!=Q&&0<Q.length&&(S=q(C.model.getTerminal(Q[0],!0),S,J),J=C.view.getState(J),null!=J&&(J=mxUtils.indexOf(S,J),0<=J&&(J+=W==mxConstants.DIRECTION_NORTH||W==mxConstants.DIRECTION_WEST?-1:1,0<=J&&J<=S.length-1&&C.setSelectionCell(S[J].cell)))))}var F=this,C=F.editor.graph,I=C.getModel(),G=F.menus.createPopupMenu;F.menus.createPopupMenu=function(J,W,Q){G.apply(this,arguments);if(1==C.getSelectionCount()){W=C.getSelectionCell();var S=C.getOutgoingTreeEdges(W);J.addSeparator();0<S.length&&(n(C.getSelectionCell())&&
-this.addMenuItems(J,["selectChildren"],null,Q),this.addMenuItems(J,["selectDescendants"],null,Q));n(C.getSelectionCell())?(J.addSeparator(),0<C.getIncomingTreeEdges(W).length&&this.addMenuItems(J,["selectSiblings","selectParent"],null,Q)):0<C.model.getEdgeCount(W)&&this.addMenuItems(J,["selectConnections"],null,Q)}};F.actions.addAction("selectChildren",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getOutgoingTreeEdges(J);if(null!=J){for(var W=[],Q=0;Q<J.length;Q++)W.push(C.model.getTerminal(J[Q],
-!1));C.setSelectionCells(W)}}},null,null,"Alt+Shift+X");F.actions.addAction("selectSiblings",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getIncomingTreeEdges(J);if(null!=J&&0<J.length&&(J=C.getOutgoingTreeEdges(C.model.getTerminal(J[0],!0)),null!=J)){for(var W=[],Q=0;Q<J.length;Q++)W.push(C.model.getTerminal(J[Q],!1));C.setSelectionCells(W)}}},null,null,"Alt+Shift+S");F.actions.addAction("selectParent",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=
-C.getSelectionCell();J=C.getIncomingTreeEdges(J);null!=J&&0<J.length&&C.setSelectionCell(C.model.getTerminal(J[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(J,W){J=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(J)){if(null!=W&&mxEvent.isAltDown(W))C.setSelectionCells(C.model.getTreeEdges(J,null==W||!mxEvent.isShiftDown(W),null==W||!mxEvent.isControlDown(W)));else{var Q=[];C.traverse(J,!0,function(S,ha){var la=null!=ha&&C.isTreeEdge(ha);la&&Q.push(ha);
-null!=ha&&!la||null!=W&&mxEvent.isShiftDown(W)||Q.push(S);return null==ha||la})}C.setSelectionCells(Q)}},null,null,"Alt+Shift+D");var aa=C.removeCells;C.removeCells=function(J,W){W=null!=W?W:!0;null==J&&(J=this.getDeletableCells(this.getSelectionCells()));W&&(J=this.getDeletableCells(this.addAllEdges(J)));for(var Q=[],S=0;S<J.length;S++){var ha=J[S];I.isEdge(ha)&&t(ha)&&(Q.push(ha),ha=I.getTerminal(ha,!1));if(n(ha)){var la=[];C.traverse(ha,!0,function(u,H){var O=null!=H&&C.isTreeEdge(H);O&&la.push(H);
-(null==H||O)&&la.push(u);return null==H||O});0<la.length&&(Q=Q.concat(la),ha=C.getIncomingTreeEdges(J[S]),J=J.concat(ha))}else null!=ha&&Q.push(J[S])}J=Q;return aa.apply(this,arguments)};F.hoverIcons.getStateAt=function(J,W,Q){return n(J.cell)?null:this.graph.view.getState(this.graph.getCellAt(W,Q))};var ca=C.duplicateCells;C.duplicateCells=function(J,W){J=null!=J?J:this.getSelectionCells();for(var Q=J.slice(0),S=0;S<Q.length;S++){var ha=C.view.getState(Q[S]);if(null!=ha&&n(ha.cell)){var la=C.getIncomingTreeEdges(ha.cell);
-for(ha=0;ha<la.length;ha++)mxUtils.remove(la[ha],J)}}this.model.beginUpdate();try{var u=ca.call(this,J,W);if(u.length==J.length)for(S=0;S<J.length;S++)if(n(J[S])){var H=C.getIncomingTreeEdges(u[S]);la=C.getIncomingTreeEdges(J[S]);if(0==H.length&&0<la.length){var O=this.cloneCell(la[0]);this.addEdge(O,C.getDefaultParent(),this.model.getTerminal(la[0],!0),u[S])}}}finally{this.model.endUpdate()}return u};var ba=C.moveCells;C.moveCells=function(J,W,Q,S,ha,la,u){var H=null;this.model.beginUpdate();try{var O=
-ha,T=this.getCurrentCellStyle(ha);if(null!=J&&n(ha)&&"1"==mxUtils.getValue(T,"treeFolding","0")){for(var R=0;R<J.length;R++)if(n(J[R])||C.model.isEdge(J[R])&&null==C.model.getTerminal(J[R],!0)){ha=C.model.getParent(J[R]);break}if(null!=O&&ha!=O&&null!=this.view.getState(J[0])){var da=C.getIncomingTreeEdges(J[0]);if(0<da.length){var P=C.view.getState(C.model.getTerminal(da[0],!0));if(null!=P){var ma=C.view.getState(O);null!=ma&&(W=(ma.getCenterX()-P.getCenterX())/C.view.scale,Q=(ma.getCenterY()-P.getCenterY())/
-C.view.scale)}}}}H=ba.apply(this,arguments);if(null!=H&&null!=J&&H.length==J.length)for(R=0;R<H.length;R++)if(this.model.isEdge(H[R]))n(O)&&0>mxUtils.indexOf(H,this.model.getTerminal(H[R],!0))&&this.model.setTerminal(H[R],O,!0);else if(n(J[R])&&(da=C.getIncomingTreeEdges(J[R]),0<da.length))if(!S)n(O)&&0>mxUtils.indexOf(J,this.model.getTerminal(da[0],!0))&&this.model.setTerminal(da[0],O,!0);else if(0==C.getIncomingTreeEdges(H[R]).length){T=O;if(null==T||T==C.model.getParent(J[R]))T=C.model.getTerminal(da[0],
-!0);S=this.cloneCell(da[0]);this.addEdge(S,C.getDefaultParent(),T,H[R])}}finally{this.model.endUpdate()}return H};if(null!=F.sidebar){var Z=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(J,W,Q,S){var ha=C.model,la=null;ha.beginUpdate();try{if(la=Z.apply(this,arguments),n(J))for(var u=0;u<la.length;u++)if(ha.isEdge(la[u])&&null==ha.getTerminal(la[u],!0)){ha.setTerminal(la[u],J,!0);var H=C.getCellGeometry(la[u]);H.points=null;null!=H.getTerminalPoint(!0)&&H.setTerminalPoint(null,!0)}}finally{ha.endUpdate()}return la}}var qa=
-{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},N=F.onKeyDown;F.onKeyDown=function(J){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var W=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==J.which?W=mxEvent.isShiftDown(J)?g(C.getSelectionCell()):m(C.getSelectionCell()):13==J.which&&(W=f(C.getSelectionCell(),!mxEvent.isShiftDown(J))));if(null!=W&&0<W.length)1==
-W.length&&C.model.isEdge(W[0])?C.setSelectionCell(C.model.getTerminal(W[0],!1)):C.setSelectionCell(W[W.length-1]),null!=F.hoverIcons&&F.hoverIcons.update(C.view.getState(C.getSelectionCell())),C.startEditingAtCell(C.getSelectionCell()),mxEvent.consume(J);else if(mxEvent.isAltDown(J)&&mxEvent.isShiftDown(J)){var Q=qa[J.keyCode];null!=Q&&(Q.funct(J),mxEvent.consume(J))}else 37==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(J)):38==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_NORTH),
-mxEvent.consume(J)):39==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(J)):40==J.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(J))}}catch(S){F.handleError(S)}mxEvent.isConsumed(J)||N.apply(this,arguments)};var Y=C.connectVertex;C.connectVertex=function(J,W,Q,S,ha,la,u){var H=C.getIncomingTreeEdges(J);if(n(J)){var O=d(J),T=O==mxConstants.DIRECTION_EAST||O==mxConstants.DIRECTION_WEST,R=W==mxConstants.DIRECTION_EAST||W==mxConstants.DIRECTION_WEST;
-return O==W||0==H.length?m(J,W):T==R?g(J):f(J,W!=mxConstants.DIRECTION_NORTH&&W!=mxConstants.DIRECTION_WEST)}return Y.apply(this,arguments)};C.getSubtree=function(J){var W=[J];!D(J)&&!n(J)||E(J)||C.traverse(J,!0,function(Q,S){var ha=null!=S&&C.isTreeEdge(S);ha&&0>mxUtils.indexOf(W,S)&&W.push(S);(null==S||ha)&&0>mxUtils.indexOf(W,Q)&&W.push(Q);return null==S||ha});return W};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
-n(this.state.cell))&&!E(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(J){this.graph.graphHandler.start(this.state.cell,
-mxEvent.getClientX(J),mxEvent.getClientY(J),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(J);this.graph.isMouseDown=!0;F.hoverIcons.reset();mxEvent.consume(J)})))};var ka=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){ka.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=
-this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var ja=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(J){ja.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=J?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(J,W){V.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==
-typeof Sidebar){var k=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var n=k.apply(this,arguments),D=this.graph;return n.concat([this.addEntry("tree container",function(){var t=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=!0;var E=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
-E.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);t.insert(f);t.insert(E);t.insert(d);return sb.createVertexTemplateFromCells([t],t.geometry.width,
-t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var t=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=!0;var E=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');E.vertex=!0;var d=new mxCell("Topic",
-new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);
-var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
+D,t,E,d,f),mxUtils.bind(this,function(g){return this.isTreeEdge(g)}))};Graph.prototype.getIncomingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!1,!0,!1)};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function n(L){return I.isVertex(L)&&t(L)}function D(L){var ea=
+!1;null!=L&&(ea="1"==C.getCurrentCellStyle(L).treeMoving);return ea}function t(L){var ea=!1;null!=L&&(L=I.getParent(L),ea=C.view.getState(L),ea="tree"==(null!=ea?ea.style:C.getCellStyle(L)).containerType);return ea}function E(L){var ea=!1;null!=L&&(L=I.getParent(L),ea=C.view.getState(L),C.view.getState(L),ea=null!=(null!=ea?ea.style:C.getCellStyle(L)).childLayout);return ea}function d(L){L=C.view.getState(L);if(null!=L){var ea=C.getIncomingTreeEdges(L.cell);if(0<ea.length&&(ea=C.view.getState(ea[0]),
+null!=ea&&(ea=ea.absolutePoints,null!=ea&&0<ea.length&&(ea=ea[ea.length-1],null!=ea)))){if(ea.y==L.y&&Math.abs(ea.x-L.getCenterX())<L.width/2)return mxConstants.DIRECTION_SOUTH;if(ea.y==L.y+L.height&&Math.abs(ea.x-L.getCenterX())<L.width/2)return mxConstants.DIRECTION_NORTH;if(ea.x>L.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(L,ea){ea=null!=ea?ea:!0;C.model.beginUpdate();try{var O=C.model.getParent(L),N=C.getIncomingTreeEdges(L),ba=C.cloneCells([N[0],
+L]);C.model.setTerminal(ba[0],C.model.getTerminal(N[0],!0),!0);var la=d(L),u=O.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ba[1].geometry.x+=ea?L.geometry.width+10:-ba[1].geometry.width-10:ba[1].geometry.y+=ea?L.geometry.height+10:-ba[1].geometry.height-10;C.view.currentRoot!=O&&(ba[1].geometry.x-=u.x,ba[1].geometry.y-=u.y);var H=C.view.getState(L),P=C.view.scale;if(null!=H){var T=mxRectangle.fromRectangle(H);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?
+T.x+=(ea?L.geometry.width+10:-ba[1].geometry.width-10)*P:T.y+=(ea?L.geometry.height+10:-ba[1].geometry.height-10)*P;var S=C.getOutgoingTreeEdges(C.model.getTerminal(N[0],!0));if(null!=S){for(var da=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,R=u=N=0;R<S.length;R++){var ma=C.model.getTerminal(S[R],!1);if(la==d(ma)){var ra=C.view.getState(ma);ma!=L&&null!=ra&&(da&&ea!=ra.getCenterX()<H.getCenterX()||!da&&ea!=ra.getCenterY()<H.getCenterY())&&mxUtils.intersects(T,ra)&&(N=10+Math.max(N,
+(Math.min(T.x+T.width,ra.x+ra.width)-Math.max(T.x,ra.x))/P),u=10+Math.max(u,(Math.min(T.y+T.height,ra.y+ra.height)-Math.max(T.y,ra.y))/P))}}da?u=0:N=0;for(R=0;R<S.length;R++)if(ma=C.model.getTerminal(S[R],!1),la==d(ma)&&(ra=C.view.getState(ma),ma!=L&&null!=ra&&(da&&ea!=ra.getCenterX()<H.getCenterX()||!da&&ea!=ra.getCenterY()<H.getCenterY()))){var xa=[];C.traverse(ra.cell,!0,function(ta,Aa){var Ca=null!=Aa&&C.isTreeEdge(Aa);Ca&&xa.push(Aa);(null==Aa||Ca)&&xa.push(ta);return null==Aa||Ca});C.moveCells(xa,
+(ea?1:-1)*N,(ea?1:-1)*u)}}}return C.addCells(ba,O)}finally{C.model.endUpdate()}}function g(L){C.model.beginUpdate();try{var ea=d(L),O=C.getIncomingTreeEdges(L),N=C.cloneCells([O[0],L]);C.model.setTerminal(O[0],N[1],!1);C.model.setTerminal(N[0],N[1],!0);C.model.setTerminal(N[0],L,!1);var ba=C.model.getParent(L),la=ba.geometry,u=[];C.view.currentRoot!=ba&&(N[1].geometry.x-=la.x,N[1].geometry.y-=la.y);C.traverse(L,!0,function(T,S){var da=null!=S&&C.isTreeEdge(S);da&&u.push(S);(null==S||da)&&u.push(T);
+return null==S||da});var H=L.geometry.width+40,P=L.geometry.height+40;ea==mxConstants.DIRECTION_SOUTH?H=0:ea==mxConstants.DIRECTION_NORTH?(H=0,P=-P):ea==mxConstants.DIRECTION_WEST?(H=-H,P=0):ea==mxConstants.DIRECTION_EAST&&(P=0);C.moveCells(u,H,P);return C.addCells(N,ba)}finally{C.model.endUpdate()}}function m(L,ea){C.model.beginUpdate();try{var O=C.model.getParent(L),N=C.getIncomingTreeEdges(L),ba=d(L);0==N.length&&(N=[C.createEdge(O,null,"",null,null,C.createCurrentEdgeStyle())],ba=ea);var la=C.cloneCells([N[0],
+L]);C.model.setTerminal(la[0],L,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],la[1],!1);var u=C.getCellStyle(la[1]).newEdgeStyle;if(null!=u)try{var H=JSON.parse(u),P;for(P in H)C.setCellStyles(P,H[P],[la[0]]),"edgeStyle"==P&&"elbowEdgeStyle"==H[P]&&C.setCellStyles("elbow",ba==mxConstants.DIRECTION_SOUTH||ba==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(ra){}}N=C.getOutgoingTreeEdges(L);var T=O.geometry;ea=[];C.view.currentRoot==O&&(T=new mxRectangle);for(u=
+0;u<N.length;u++){var S=C.model.getTerminal(N[u],!1);null!=S&&ea.push(S)}var da=C.view.getBounds(ea),R=C.view.translate,ma=C.view.scale;ba==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==da?L.geometry.x+(L.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-R.x-T.x+10,la[1].geometry.y+=la[1].geometry.height-T.y+40):ba==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==da?L.geometry.x+(L.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-R.x+-T.x+10,la[1].geometry.y-=la[1].geometry.height+
+T.y+40):(la[1].geometry.x=ba==mxConstants.DIRECTION_WEST?la[1].geometry.x-(la[1].geometry.width+T.x+40):la[1].geometry.x+(la[1].geometry.width-T.x+40),la[1].geometry.y=null==da?L.geometry.y+(L.geometry.height-la[1].geometry.height)/2:(da.y+da.height)/ma-R.y+-T.y+10);return C.addCells(la,O)}finally{C.model.endUpdate()}}function q(L,ea,O){L=C.getOutgoingTreeEdges(L);O=C.view.getState(O);var N=[];if(null!=O&&null!=L){for(var ba=0;ba<L.length;ba++){var la=C.view.getState(C.model.getTerminal(L[ba],!1));
+null!=la&&(!ea&&Math.min(la.x+la.width,O.x+O.width)>=Math.max(la.x,O.x)||ea&&Math.min(la.y+la.height,O.y+O.height)>=Math.max(la.y,O.y))&&N.push(la)}N.sort(function(u,H){return ea?u.x+u.width-H.x-H.width:u.y+u.height-H.y-H.height})}return N}function y(L,ea){var O=d(L),N=ea==mxConstants.DIRECTION_EAST||ea==mxConstants.DIRECTION_WEST;(O==mxConstants.DIRECTION_EAST||O==mxConstants.DIRECTION_WEST)==N&&O!=ea?F.actions.get("selectParent").funct():O==ea?(ea=C.getOutgoingTreeEdges(L),null!=ea&&0<ea.length&&
+C.setSelectionCell(C.model.getTerminal(ea[0],!1))):(O=C.getIncomingTreeEdges(L),null!=O&&0<O.length&&(N=q(C.model.getTerminal(O[0],!0),N,L),L=C.view.getState(L),null!=L&&(L=mxUtils.indexOf(N,L),0<=L&&(L+=ea==mxConstants.DIRECTION_NORTH||ea==mxConstants.DIRECTION_WEST?-1:1,0<=L&&L<=N.length-1&&C.setSelectionCell(N[L].cell)))))}var F=this,C=F.editor.graph,I=C.getModel(),G=F.menus.createPopupMenu;F.menus.createPopupMenu=function(L,ea,O){G.apply(this,arguments);if(1==C.getSelectionCount()){ea=C.getSelectionCell();
+var N=C.getOutgoingTreeEdges(ea);L.addSeparator();0<N.length&&(n(C.getSelectionCell())&&this.addMenuItems(L,["selectChildren"],null,O),this.addMenuItems(L,["selectDescendants"],null,O));n(C.getSelectionCell())?(L.addSeparator(),0<C.getIncomingTreeEdges(ea).length&&this.addMenuItems(L,["selectSiblings","selectParent"],null,O)):0<C.model.getEdgeCount(ea)&&this.addMenuItems(L,["selectConnections"],null,O)}};F.actions.addAction("selectChildren",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var L=
+C.getSelectionCell();L=C.getOutgoingTreeEdges(L);if(null!=L){for(var ea=[],O=0;O<L.length;O++)ea.push(C.model.getTerminal(L[O],!1));C.setSelectionCells(ea)}}},null,null,"Alt+Shift+X");F.actions.addAction("selectSiblings",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var L=C.getSelectionCell();L=C.getIncomingTreeEdges(L);if(null!=L&&0<L.length&&(L=C.getOutgoingTreeEdges(C.model.getTerminal(L[0],!0)),null!=L)){for(var ea=[],O=0;O<L.length;O++)ea.push(C.model.getTerminal(L[O],!1));C.setSelectionCells(ea)}}},
+null,null,"Alt+Shift+S");F.actions.addAction("selectParent",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var L=C.getSelectionCell();L=C.getIncomingTreeEdges(L);null!=L&&0<L.length&&C.setSelectionCell(C.model.getTerminal(L[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(L,ea){L=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(L)){if(null!=ea&&mxEvent.isAltDown(ea))C.setSelectionCells(C.model.getTreeEdges(L,null==ea||!mxEvent.isShiftDown(ea),null==
+ea||!mxEvent.isControlDown(ea)));else{var O=[];C.traverse(L,!0,function(N,ba){var la=null!=ba&&C.isTreeEdge(ba);la&&O.push(ba);null!=ba&&!la||null!=ea&&mxEvent.isShiftDown(ea)||O.push(N);return null==ba||la})}C.setSelectionCells(O)}},null,null,"Alt+Shift+D");var Z=C.removeCells;C.removeCells=function(L,ea){ea=null!=ea?ea:!0;null==L&&(L=this.getDeletableCells(this.getSelectionCells()));ea&&(L=this.getDeletableCells(this.addAllEdges(L)));for(var O=[],N=0;N<L.length;N++){var ba=L[N];I.isEdge(ba)&&t(ba)&&
+(O.push(ba),ba=I.getTerminal(ba,!1));if(n(ba)){var la=[];C.traverse(ba,!0,function(u,H){var P=null!=H&&C.isTreeEdge(H);P&&la.push(H);(null==H||P)&&la.push(u);return null==H||P});0<la.length&&(O=O.concat(la),ba=C.getIncomingTreeEdges(L[N]),L=L.concat(ba))}else null!=ba&&O.push(L[N])}L=O;return Z.apply(this,arguments)};F.hoverIcons.getStateAt=function(L,ea,O){return n(L.cell)?null:this.graph.view.getState(this.graph.getCellAt(ea,O))};var ca=C.duplicateCells;C.duplicateCells=function(L,ea){L=null!=L?
+L:this.getSelectionCells();for(var O=L.slice(0),N=0;N<O.length;N++){var ba=C.view.getState(O[N]);if(null!=ba&&n(ba.cell)){var la=C.getIncomingTreeEdges(ba.cell);for(ba=0;ba<la.length;ba++)mxUtils.remove(la[ba],L)}}this.model.beginUpdate();try{var u=ca.call(this,L,ea);if(u.length==L.length)for(N=0;N<L.length;N++)if(n(L[N])){var H=C.getIncomingTreeEdges(u[N]);la=C.getIncomingTreeEdges(L[N]);if(0==H.length&&0<la.length){var P=this.cloneCell(la[0]);this.addEdge(P,C.getDefaultParent(),this.model.getTerminal(la[0],
+!0),u[N])}}}finally{this.model.endUpdate()}return u};var aa=C.moveCells;C.moveCells=function(L,ea,O,N,ba,la,u){var H=null;this.model.beginUpdate();try{var P=ba,T=this.getCurrentCellStyle(ba);if(null!=L&&n(ba)&&"1"==mxUtils.getValue(T,"treeFolding","0")){for(var S=0;S<L.length;S++)if(n(L[S])||C.model.isEdge(L[S])&&null==C.model.getTerminal(L[S],!0)){ba=C.model.getParent(L[S]);break}if(null!=P&&ba!=P&&null!=this.view.getState(L[0])){var da=C.getIncomingTreeEdges(L[0]);if(0<da.length){var R=C.view.getState(C.model.getTerminal(da[0],
+!0));if(null!=R){var ma=C.view.getState(P);null!=ma&&(ea=(ma.getCenterX()-R.getCenterX())/C.view.scale,O=(ma.getCenterY()-R.getCenterY())/C.view.scale)}}}}H=aa.apply(this,arguments);if(null!=H&&null!=L&&H.length==L.length)for(S=0;S<H.length;S++)if(this.model.isEdge(H[S]))n(P)&&0>mxUtils.indexOf(H,this.model.getTerminal(H[S],!0))&&this.model.setTerminal(H[S],P,!0);else if(n(L[S])&&(da=C.getIncomingTreeEdges(L[S]),0<da.length))if(!N)n(P)&&0>mxUtils.indexOf(L,this.model.getTerminal(da[0],!0))&&this.model.setTerminal(da[0],
+P,!0);else if(0==C.getIncomingTreeEdges(H[S]).length){T=P;if(null==T||T==C.model.getParent(L[S]))T=C.model.getTerminal(da[0],!0);N=this.cloneCell(da[0]);this.addEdge(N,C.getDefaultParent(),T,H[S])}}finally{this.model.endUpdate()}return H};if(null!=F.sidebar){var Y=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(L,ea,O,N){var ba=C.model,la=null;ba.beginUpdate();try{if(la=Y.apply(this,arguments),n(L))for(var u=0;u<la.length;u++)if(ba.isEdge(la[u])&&null==ba.getTerminal(la[u],!0)){ba.setTerminal(la[u],
+L,!0);var H=C.getCellGeometry(la[u]);H.points=null;null!=H.getTerminalPoint(!0)&&H.setTerminalPoint(null,!0)}}finally{ba.endUpdate()}return la}}var qa={88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},Q=F.onKeyDown;F.onKeyDown=function(L){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var ea=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==L.which?ea=mxEvent.isShiftDown(L)?
+g(C.getSelectionCell()):m(C.getSelectionCell()):13==L.which&&(ea=f(C.getSelectionCell(),!mxEvent.isShiftDown(L))));if(null!=ea&&0<ea.length)1==ea.length&&C.model.isEdge(ea[0])?C.setSelectionCell(C.model.getTerminal(ea[0],!1)):C.setSelectionCell(ea[ea.length-1]),null!=F.hoverIcons&&F.hoverIcons.update(C.view.getState(C.getSelectionCell())),C.startEditingAtCell(C.getSelectionCell()),mxEvent.consume(L);else if(mxEvent.isAltDown(L)&&mxEvent.isShiftDown(L)){var O=qa[L.keyCode];null!=O&&(O.funct(L),mxEvent.consume(L))}else 37==
+L.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(L)):38==L.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(L)):39==L.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(L)):40==L.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(L))}}catch(N){F.handleError(N)}mxEvent.isConsumed(L)||Q.apply(this,arguments)};var X=C.connectVertex;C.connectVertex=function(L,ea,O,N,ba,la,u){var H=C.getIncomingTreeEdges(L);
+if(n(L)){var P=d(L),T=P==mxConstants.DIRECTION_EAST||P==mxConstants.DIRECTION_WEST,S=ea==mxConstants.DIRECTION_EAST||ea==mxConstants.DIRECTION_WEST;return P==ea||0==H.length?m(L,ea):T==S?g(L):f(L,ea!=mxConstants.DIRECTION_NORTH&&ea!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(L){var ea=[L];!D(L)&&!n(L)||E(L)||C.traverse(L,!0,function(O,N){var ba=null!=N&&C.isTreeEdge(N);ba&&0>mxUtils.indexOf(ea,N)&&ea.push(N);(null==N||ba)&&0>mxUtils.indexOf(ea,O)&&ea.push(O);
+return null==N||ba});return ea};var fa=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){fa.apply(this,arguments);(D(this.state.cell)||n(this.state.cell))&&!E(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height=
+"24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(L){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(L),mxEvent.getClientY(L),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(L);this.graph.isMouseDown=!0;F.hoverIcons.reset();mxEvent.consume(L)})))};var ka=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=
+function(){ka.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var ia=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(L){ia.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=L?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=
+function(L,ea){V.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var k=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var n=k.apply(this,arguments),D=this.graph;return n.concat([this.addEntry("tree container",function(){var t=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=
+!0;var E=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');E.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
+f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);t.insert(f);t.insert(E);t.insert(d);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var t=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=!0;var E=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
+E.vertex=!0;var d=new mxCell("Topic",new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;
+E.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');q.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
y.geometry.relative=!0;y.edge=!0;E.insertEdge(y,!0);q.insertEdge(y,!1);var F=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');F.vertex=!0;var C=new mxCell("",new mxGeometry(0,
0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");C.geometry.relative=!0;C.edge=!0;E.insertEdge(C,!0);F.insertEdge(C,!1);t.insert(f);t.insert(m);t.insert(y);t.insert(C);t.insert(E);t.insert(d);t.insert(g);t.insert(q);t.insert(F);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var t=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
@@ -3917,27 +3917,27 @@ m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);t.insert(
E.geometry.setTerminalPoint(new mxPoint(0,0),!0);E.geometry.relative=!0;E.edge=!0;t.insertEdge(E,!1);return sb.createVertexTemplateFromCells([t,E],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree sub sections",function(){var t=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");t.vertex=!0;var E=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");
E.geometry.setTerminalPoint(new mxPoint(110,-40),!0);E.geometry.relative=!0;E.edge=!0;t.insertEdge(E,!1);var d=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");f.geometry.setTerminalPoint(new mxPoint(110,-40),!0);f.geometry.relative=
!0;f.edge=!0;d.insertEdge(f,!1);return sb.createVertexTemplateFromCells([E,f,t,d],220,60,"Sub Sections")})])}}})();EditorUi.windowed="0"!=urlParams.windows;
-EditorUi.initMinimalTheme=function(){function b(N,Y){if(EditorUi.windowed){var ea=N.editor.graph;ea.popupMenuHandler.hideMenu();if(null==N.formatWindow){Y="1"==urlParams.sketch?Math.max(10,N.diagramContainer.clientWidth-241):Math.max(10,N.diagramContainer.clientWidth-248);var ka="1"==urlParams.winCtrls&&"1"==urlParams.sketch?80:60;ea="1"==urlParams.embedInline?580:"1"==urlParams.sketch?580:Math.min(566,ea.container.clientHeight-10);N.formatWindow=new t(N,mxResources.get("format"),Y,ka,240,ea,function(V){var J=
-N.createFormat(V);J.init();N.addListener("darkModeChanged",mxUtils.bind(this,function(){J.refresh()}));return J});N.formatWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){N.formatWindow.window.fit()}));N.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80)}else N.formatWindow.window.setVisible(null!=Y?Y:!N.formatWindow.window.isVisible())}else{if(null==N.formatElt){N.formatElt=D();var ja=N.createFormat(N.formatElt);ja.init();N.formatElt.style.border="none";N.formatElt.style.width=
-"240px";N.formatElt.style.borderLeft="1px solid gray";N.formatElt.style.right="0px";N.addListener("darkModeChanged",mxUtils.bind(this,function(){ja.refresh()}))}ea=N.diagramContainer.parentNode;null!=N.formatElt.parentNode?(N.formatElt.parentNode.removeChild(N.formatElt),ea.style.right="0px"):(ea.parentNode.appendChild(N.formatElt),ea.style.right=N.formatElt.style.width)}}function e(N,Y){function ea(J,W){var Q=N.menus.get(J);J=V.addMenu(W,mxUtils.bind(this,function(){Q.funct.apply(this,arguments)}));
-J.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;";J.className="geTitle";Y.appendChild(J);return J}var ka=document.createElement("div");ka.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";ka.className="geTitle";var ja=document.createElement("span");ja.style.fontSize="18px";ja.style.marginRight=
-"5px";ja.innerHTML="+";ka.appendChild(ja);mxUtils.write(ka,mxResources.get("moreShapes"));Y.appendChild(ka);mxEvent.addListener(ka,"click",function(){N.actions.get("shapes").funct()});var V=new Menubar(N,Y);!Editor.enableCustomLibraries||"1"==urlParams.embed&&"1"!=urlParams.libraries?ka.style.bottom="0":null!=N.actions.get("newLibrary")?(ka=document.createElement("div"),ka.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;",
-ka.className="geTitle",ja=document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("newLibrary")),ka.appendChild(ja),Y.appendChild(ka),mxEvent.addListener(ka,"click",N.actions.get("newLibrary").funct),ka=document.createElement("div"),ka.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",ka.className="geTitle",ja=
-document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("openLibrary")),ka.appendChild(ja),Y.appendChild(ka),mxEvent.addListener(ka,"click",N.actions.get("openLibrary").funct)):(ka=ea("newLibrary",mxResources.get("newLibrary")),ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="0",ka=ea("openLibraryFrom",mxResources.get("openLibraryFrom")),ka.style.borderLeft="1px solid lightgray",
-ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="50%");Y.appendChild(N.sidebar.container);Y.style.overflow="hidden"}function k(N,Y){if(EditorUi.windowed){var ea=N.editor.graph;ea.popupMenuHandler.hideMenu();if(null==N.sidebarWindow){Y=Math.min(ea.container.clientWidth-10,218);var ka="1"==urlParams.embedInline?650:Math.min(ea.container.clientHeight-40,650);N.sidebarWindow=new t(N,mxResources.get("shapes"),"1"==urlParams.sketch&&
-"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(ea.container.clientHeight-ka)/2):56,Y-6,ka-6,function(ja){e(N,ja)});N.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){N.sidebarWindow.window.fit()}));N.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);N.sidebarWindow.window.setVisible(!0);isLocalStorage&&N.getLocalData("sidebar",function(ja){N.sidebar.showEntries(ja,null,!0)});N.restoreLibraries()}else N.sidebarWindow.window.setVisible(null!=
-Y?Y:!N.sidebarWindow.window.isVisible())}else null==N.sidebarElt&&(N.sidebarElt=D(),e(N,N.sidebarElt),N.sidebarElt.style.border="none",N.sidebarElt.style.width="210px",N.sidebarElt.style.borderRight="1px solid gray"),ea=N.diagramContainer.parentNode,null!=N.sidebarElt.parentNode?(N.sidebarElt.parentNode.removeChild(N.sidebarElt),ea.style.left="0px"):(ea.parentNode.appendChild(N.sidebarElt),ea.style.left=N.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||
-"undefined"===typeof window.Menus)window.uiTheme=null;else{var n=0;try{n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(N){}var D=function(){var N=document.createElement("div");N.className="geSidebarContainer";N.style.position="absolute";N.style.width="100%";N.style.height="100%";N.style.border="1px solid whiteSmoke";N.style.overflowX="hidden";N.style.overflowY="auto";return N},t=function(N,Y,ea,ka,ja,V,J){var W=D();J(W);this.window=new mxWindow(Y,W,ea,ka,
-ja,V,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(Q,S){var ha=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;Q=Math.max(0,Math.min(Q,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));S=Math.max(0,Math.min(S,ha-la.clientHeight-
-2));this.getX()==Q&&this.getY()==S||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&(this.window.div.onselectstart=mxUtils.bind(this,function(Q){null==Q&&(Q=window.event);return null!=Q&&N.isSelectionAllowed(Q)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=
+EditorUi.initMinimalTheme=function(){function b(Q,X){if(EditorUi.windowed){var fa=Q.editor.graph;fa.popupMenuHandler.hideMenu();if(null==Q.formatWindow){X="1"==urlParams.sketch?Math.max(10,Q.diagramContainer.clientWidth-241):Math.max(10,Q.diagramContainer.clientWidth-248);var ka="1"==urlParams.winCtrls&&"1"==urlParams.sketch?80:60;fa="1"==urlParams.embedInline?580:"1"==urlParams.sketch?580:Math.min(566,fa.container.clientHeight-10);Q.formatWindow=new t(Q,mxResources.get("format"),X,ka,240,fa,function(V){var L=
+Q.createFormat(V);L.init();Q.addListener("darkModeChanged",mxUtils.bind(this,function(){L.refresh()}));return L});Q.formatWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){Q.formatWindow.window.fit()}));Q.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80)}else Q.formatWindow.window.setVisible(null!=X?X:!Q.formatWindow.window.isVisible())}else{if(null==Q.formatElt){Q.formatElt=D();var ia=Q.createFormat(Q.formatElt);ia.init();Q.formatElt.style.border="none";Q.formatElt.style.width=
+"240px";Q.formatElt.style.borderLeft="1px solid gray";Q.formatElt.style.right="0px";Q.addListener("darkModeChanged",mxUtils.bind(this,function(){ia.refresh()}))}fa=Q.diagramContainer.parentNode;null!=Q.formatElt.parentNode?(Q.formatElt.parentNode.removeChild(Q.formatElt),fa.style.right="0px"):(fa.parentNode.appendChild(Q.formatElt),fa.style.right=Q.formatElt.style.width)}}function e(Q,X){function fa(L,ea){var O=Q.menus.get(L);L=V.addMenu(ea,mxUtils.bind(this,function(){O.funct.apply(this,arguments)}));
+L.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;";L.className="geTitle";X.appendChild(L);return L}var ka=document.createElement("div");ka.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";ka.className="geTitle";var ia=document.createElement("span");ia.style.fontSize="18px";ia.style.marginRight=
+"5px";ia.innerHTML="+";ka.appendChild(ia);mxUtils.write(ka,mxResources.get("moreShapes"));X.appendChild(ka);mxEvent.addListener(ka,"click",function(){Q.actions.get("shapes").funct()});var V=new Menubar(Q,X);!Editor.enableCustomLibraries||"1"==urlParams.embed&&"1"!=urlParams.libraries?ka.style.bottom="0":null!=Q.actions.get("newLibrary")?(ka=document.createElement("div"),ka.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;",
+ka.className="geTitle",ia=document.createElement("span"),ia.style.cssText="position:relative;top:6px;",mxUtils.write(ia,mxResources.get("newLibrary")),ka.appendChild(ia),X.appendChild(ka),mxEvent.addListener(ka,"click",Q.actions.get("newLibrary").funct),ka=document.createElement("div"),ka.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",ka.className="geTitle",ia=
+document.createElement("span"),ia.style.cssText="position:relative;top:6px;",mxUtils.write(ia,mxResources.get("openLibrary")),ka.appendChild(ia),X.appendChild(ka),mxEvent.addListener(ka,"click",Q.actions.get("openLibrary").funct)):(ka=fa("newLibrary",mxResources.get("newLibrary")),ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="0",ka=fa("openLibraryFrom",mxResources.get("openLibraryFrom")),ka.style.borderLeft="1px solid lightgray",
+ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="50%");X.appendChild(Q.sidebar.container);X.style.overflow="hidden"}function k(Q,X){if(EditorUi.windowed){var fa=Q.editor.graph;fa.popupMenuHandler.hideMenu();if(null==Q.sidebarWindow){X=Math.min(fa.container.clientWidth-10,218);var ka="1"==urlParams.embedInline?650:Math.min(fa.container.clientHeight-40,650);Q.sidebarWindow=new t(Q,mxResources.get("shapes"),"1"==urlParams.sketch&&
+"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(fa.container.clientHeight-ka)/2):56,X-6,ka-6,function(ia){e(Q,ia)});Q.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){Q.sidebarWindow.window.fit()}));Q.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);Q.sidebarWindow.window.setVisible(!0);isLocalStorage&&Q.getLocalData("sidebar",function(ia){Q.sidebar.showEntries(ia,null,!0)});Q.restoreLibraries()}else Q.sidebarWindow.window.setVisible(null!=
+X?X:!Q.sidebarWindow.window.isVisible())}else null==Q.sidebarElt&&(Q.sidebarElt=D(),e(Q,Q.sidebarElt),Q.sidebarElt.style.border="none",Q.sidebarElt.style.width="210px",Q.sidebarElt.style.borderRight="1px solid gray"),fa=Q.diagramContainer.parentNode,null!=Q.sidebarElt.parentNode?(Q.sidebarElt.parentNode.removeChild(Q.sidebarElt),fa.style.left="0px"):(fa.parentNode.appendChild(Q.sidebarElt),fa.style.left=Q.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||
+"undefined"===typeof window.Menus)window.uiTheme=null;else{var n=0;try{n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(Q){}var D=function(){var Q=document.createElement("div");Q.className="geSidebarContainer";Q.style.position="absolute";Q.style.width="100%";Q.style.height="100%";Q.style.border="1px solid whiteSmoke";Q.style.overflowX="hidden";Q.style.overflowY="auto";return Q},t=function(Q,X,fa,ka,ia,V,L){var ea=D();L(ea);this.window=new mxWindow(X,ea,fa,
+ka,ia,V,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(O,N){var ba=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;O=Math.max(0,Math.min(O,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));N=Math.max(0,Math.min(N,ba-la.clientHeight-
+2));this.getX()==O&&this.getY()==N||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&(this.window.div.onselectstart=mxUtils.bind(this,function(O){null==O&&(O=window.event);return null!=O&&Q.isSelectionAllowed(O)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=
Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke-width="2" style="stroke-opacity:0.4" stroke="#ffffff"/><path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');
mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity=
"0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight="1"==urlParams.sketch?1:46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert="1"!=urlParams.sketch&&!mxClient.IS_IOS&&!mxClient.IS_ANDROID;
-EditorUi.prototype.setDarkMode=function(N){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(N);null==urlParams.dark&&(mxSettings.settings.darkMode=N,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var E=document.createElement("link");E.setAttribute("rel","stylesheet");E.setAttribute("href",STYLE_PATH+"/dark.css");E.setAttribute("charset","UTF-8");E.setAttribute("type",
-"text/css");EditorUi.prototype.doSetDarkMode=function(N){if(Editor.darkMode!=N){var Y=this.editor.graph;Editor.darkMode=N;this.spinner.opts.color=Editor.isDarkMode()?"#c0c0c0":"#000";Y.view.gridColor=Editor.isDarkMode()?Y.view.defaultDarkGridColor:Y.view.defaultGridColor;Y.defaultPageBackgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";Y.defaultPageBorderColor=Editor.isDarkMode()?"#505759":"#ffffff";Y.shapeBackgroundColor=Editor.isDarkMode()?Editor.darkColor:
-"#ffffff";Y.shapeForegroundColor=Editor.isDarkMode()?Editor.lightColor:"#000000";Y.defaultThemeName=Editor.isDarkMode()?"darkTheme":"default-style2";Y.graphHandler.previewColor=Editor.isDarkMode()?"#cccccc":"black";document.body.style.backgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";Y.loadStylesheet();null!=this.actions.layersWindow&&(N=this.actions.layersWindow.window.isVisible(),this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),
-this.actions.layersWindow=null,N&&window.setTimeout(this.actions.get("layers").funct,0));null!=this.menus.commentsWindow&&(this.menus.commentsWindow.window.setVisible(!1),this.menus.commentsWindow.destroy(),this.menus.commentsWindow=null);null!=this.ruler&&this.ruler.updateStyle();Graph.prototype.defaultPageBackgroundColor=Y.defaultPageBackgroundColor;Graph.prototype.defaultPageBorderColor=Y.defaultPageBorderColor;Graph.prototype.shapeBackgroundColor=Y.shapeBackgroundColor;Graph.prototype.shapeForegroundColor=
-Y.shapeForegroundColor;Graph.prototype.defaultThemeName=Y.defaultThemeName;StyleFormatPanel.prototype.defaultStrokeColor=Editor.isDarkMode()?"#cccccc":"black";BaseFormatPanel.prototype.buttonBackgroundColor=Editor.isDarkMode()?Editor.darkColor:"white";Format.inactiveTabBackgroundColor=Editor.isDarkMode()?"black":"#f0f0f0";Dialog.backdropColor=Editor.isDarkMode()?Editor.darkColor:"white";mxConstants.DROP_TARGET_COLOR=Editor.isDarkMode()?"#00ff00":"#0000FF";Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?
+EditorUi.prototype.setDarkMode=function(Q){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(Q);null==urlParams.dark&&(mxSettings.settings.darkMode=Q,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var E=document.createElement("link");E.setAttribute("rel","stylesheet");E.setAttribute("href",STYLE_PATH+"/dark.css");E.setAttribute("charset","UTF-8");E.setAttribute("type",
+"text/css");EditorUi.prototype.doSetDarkMode=function(Q){if(Editor.darkMode!=Q){var X=this.editor.graph;Editor.darkMode=Q;this.spinner.opts.color=Editor.isDarkMode()?"#c0c0c0":"#000";X.view.gridColor=Editor.isDarkMode()?X.view.defaultDarkGridColor:X.view.defaultGridColor;X.defaultPageBackgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";X.defaultPageBorderColor=Editor.isDarkMode()?"#505759":"#ffffff";X.shapeBackgroundColor=Editor.isDarkMode()?Editor.darkColor:
+"#ffffff";X.shapeForegroundColor=Editor.isDarkMode()?Editor.lightColor:"#000000";X.defaultThemeName=Editor.isDarkMode()?"darkTheme":"default-style2";X.graphHandler.previewColor=Editor.isDarkMode()?"#cccccc":"black";document.body.style.backgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";X.loadStylesheet();null!=this.actions.layersWindow&&(Q=this.actions.layersWindow.window.isVisible(),this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),
+this.actions.layersWindow=null,Q&&window.setTimeout(this.actions.get("layers").funct,0));null!=this.menus.commentsWindow&&(this.menus.commentsWindow.window.setVisible(!1),this.menus.commentsWindow.destroy(),this.menus.commentsWindow=null);null!=this.ruler&&this.ruler.updateStyle();Graph.prototype.defaultPageBackgroundColor=X.defaultPageBackgroundColor;Graph.prototype.defaultPageBorderColor=X.defaultPageBorderColor;Graph.prototype.shapeBackgroundColor=X.shapeBackgroundColor;Graph.prototype.shapeForegroundColor=
+X.shapeForegroundColor;Graph.prototype.defaultThemeName=X.defaultThemeName;StyleFormatPanel.prototype.defaultStrokeColor=Editor.isDarkMode()?"#cccccc":"black";BaseFormatPanel.prototype.buttonBackgroundColor=Editor.isDarkMode()?Editor.darkColor:"white";Format.inactiveTabBackgroundColor=Editor.isDarkMode()?"black":"#f0f0f0";Dialog.backdropColor=Editor.isDarkMode()?Editor.darkColor:"white";mxConstants.DROP_TARGET_COLOR=Editor.isDarkMode()?"#00ff00":"#0000FF";Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?
Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;d.innerHTML=Editor.createMinimalCss();Editor.darkMode?null==E.parentNode&&document.getElementsByTagName("head")[0].appendChild(E):null!=E.parentNode&&E.parentNode.removeChild(E)}};Editor.createMinimalCss=function(){return"* { -webkit-font-smoothing: antialiased; }html body td.mxWindowTitle > div > img { padding: 8px 4px; }"+(Editor.isDarkMode()?
"html body td.mxWindowTitle > div > img { margin: -4px; }html body .geToolbarContainer .geMenuItem, html body .geToolbarContainer .geToolbarButton, html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem,html body .geMenubarContainer .geToolbarButton { filter: invert(1); }html body div.geToolbarContainer a.geInverted { filter: none; }html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem { color: #353535; }html > body > div > .geToolbarContainer { border: 1px solid #c0c0c0 !important; box-shadow: none !important; }html > body.geEditor > div > a.geItem { background-color: #2a2a2a; color: #cccccc; border-color: #505759; }html body .geTabContainer, html body .geTabContainer div, html body .geMenubarContainer { border-color: #505759 !important; }html body .mxCellEditor { color: #f0f0f0; }":
"html body div.geToolbarContainer a.geInverted { filter: invert(1); }html body.geEditor .geTabContainer div { border-color: #e5e5e5 !important; }")+'html > body > div > a.geItem { background-color: #ffffff; color: #707070; border-top: 1px solid lightgray; border-left: 1px solid lightgray; }html body .geMenubarContainer { border-bottom:1px solid lightgray;background-color:#ffffff; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body .geSidebarContainer *:not(svg *) { font-size:9pt; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }table.mxWindow * :not(svg *) { font-size:13px; }html body .mxWindow { z-index: 3; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700; border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; cursor: pointer; user-select: none; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }.geStatus > div { box-sizing: border-box; max-width: 100%; text-overflow: ellipsis; }html body .geMenubarContainer .geStatus { margin-top: 0px !important; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity: 0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding: 2px; display: inline-block; }html body .mxWindow input[type="checkbox"] {padding: 0px; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: '+
@@ -3947,101 +3947,101 @@ Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMo
(Editor.isDarkMode()?Editor.darkColor:"rgb(249, 249, 249)")+" !important; color: #A0A0A0 !important; } html div.geActivePage { background: "+(Editor.isDarkMode()?Editor.darkColor:"#fff")+" !important; "+(Editor.isDarkMode()?"":"color: #353535 !important; } ")+"html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.4) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: "+
(Editor.isDarkMode()?"#cccccc":"#353535")+"; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: "+(Editor.isDarkMode()?"#000000":"#29b6f2")+"; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: "+(Editor.isDarkMode()?"#cccccc":"#ffffff")+" !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }html body td.mxWindowTitle { padding-right: 14px; }html td.mxWindowTitle div { top: 0px !important; }"+
(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"")+("1"==urlParams.sketch?"a.geStatus > div { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }":"")};var d=document.createElement("style");d.type="text/css";d.innerHTML=Editor.createMinimalCss();document.getElementsByTagName("head")[0].appendChild(d);Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var f=EditorUi.prototype.updateTabContainer;
-EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(N,
-Y){null!=Y.shortcut&&900>n&&!mxClient.IS_IOS?N.firstChild.nextSibling.setAttribute("title",Y.shortcut):m.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var N=this.userElement;N.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+N.style.display;N.className="geToolbarButton";N.innerText="";N.style.backgroundImage="url("+Editor.userImage+")";N.style.backgroundPosition="center center";
-N.style.backgroundRepeat="no-repeat";N.style.backgroundSize="24px 24px";N.style.height="24px";N.style.width="24px";N.style.cssFloat="right";N.setAttribute("title",mxResources.get("changeUser"));if("none"!=N.style.display){N.style.display="inline-block";var Y=this.getCurrentFile();if(null!=Y&&Y.isRealtimeEnabled()&&Y.isRealtimeSupported()){var ea=document.createElement("img");ea.setAttribute("border","0");ea.style.position="absolute";ea.style.left="18px";ea.style.top="2px";ea.style.width="12px";ea.style.height=
-"12px";var ka=Y.getRealtimeError();Y=Y.getRealtimeState();var ja=mxResources.get("realtimeCollaboration");1==Y?(ea.src=Editor.syncImage,ja+=" ("+mxResources.get("online")+")"):(ea.src=Editor.syncProblemImage,ja=null!=ka&&null!=ka.message?ja+(" ("+ka.message+")"):ja+(" ("+mxResources.get("disconnected")+")"));ea.setAttribute("title",ja);N.style.paddingRight="4px";N.appendChild(ea)}}}};var y=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){y.apply(this,arguments);if(null!=
-this.shareButton){var N=this.shareButton;N.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";N.className="geToolbarButton";N.innerText="";N.style.backgroundImage="url("+Editor.shareImage+")";N.style.backgroundPosition="center center";N.style.backgroundRepeat="no-repeat";N.style.backgroundSize="24px 24px";N.style.height="24px";N.style.width="24px";"1"==urlParams.sketch&&(this.shareButton.style.display="none")}null!=this.buttonContainer&&(this.buttonContainer.style.marginTop=
-"-2px",this.buttonContainer.style.paddingTop="4px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer&&"1"!=urlParams.embedInline){var N=document.createElement("div");N.style.display="inline-block";N.style.position="relative";N.style.marginTop="6px";N.style.marginRight="4px";var Y=document.createElement("a");Y.className="geMenuItem gePrimaryBtn";Y.style.marginLeft="8px";Y.style.padding="6px";if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var ea="1"==urlParams.publishClose?
-mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(Y,ea);Y.setAttribute("title",ea);mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));N.appendChild(Y)}}else mxUtils.write(Y,mxResources.get("save")),Y.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),N.appendChild(Y),"1"==urlParams.saveAndExit&&(Y=document.createElement("a"),
-mxUtils.write(Y,mxResources.get("saveAndExit")),Y.setAttribute("title",mxResources.get("saveAndExit")),Y.className="geMenuItem",Y.style.marginLeft="6px",Y.style.padding="6px",mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),N.appendChild(Y));"1"!=urlParams.noExitBtn&&(Y=document.createElement("a"),ea="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(Y,ea),Y.setAttribute("title",ea),Y.className="geMenuItem",
-Y.style.marginLeft="6px",Y.style.padding="6px",mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),N.appendChild(Y));this.buttonContainer.appendChild(N);this.buttonContainer.style.top="6px";this.editor.fireEvent(new mxEventObject("statusChanged"))}};var F=Sidebar.prototype.getTooltipOffset;Sidebar.prototype.getTooltipOffset=function(N,Y){if(null==this.editorUi.sidebarWindow||mxUtils.isAncestorNode(this.editorUi.picker,N)){var ea=mxUtils.getOffset(this.editorUi.picker);
-ea.x+=this.editorUi.picker.offsetWidth+4;ea.y+=N.offsetTop-Y.height/2+16;return ea}var ka=F.apply(this,arguments);ea=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);ka.x+=ea.x-16;ka.y+=ea.y;return ka};var C=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(N,Y,ea){var ka=this.editorUi.editor.graph;N.smartSeparators=!0;C.apply(this,arguments);"1"==urlParams.sketch?ka.isEnabled()&&(N.addSeparator(),1==ka.getSelectionCount()&&this.addMenuItems(N,["-","lockUnlock"],null,
-ea)):1==ka.getSelectionCount()?(ka.isCellFoldable(ka.getSelectionCell())&&this.addMenuItems(N,ka.isCellCollapsed(Y)?["expand"]:["collapse"],null,ea),this.addMenuItems(N,["collapsible","-","lockUnlock","enterGroup"],null,ea),N.addSeparator(),this.addSubmenu("layout",N)):ka.isSelectionEmpty()&&ka.isEnabled()?(N.addSeparator(),this.addMenuItems(N,["editData"],null,ea),N.addSeparator(),this.addSubmenu("layout",N),this.addSubmenu("insert",N),this.addMenuItems(N,["-","exitGroup"],null,ea)):ka.isEnabled()&&
-this.addMenuItems(N,["-","lockUnlock"],null,ea)};var I=Menus.prototype.addPopupMenuEditItems;Menus.prototype.addPopupMenuEditItems=function(N,Y,ea){I.apply(this,arguments);this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(N,["copyAsImage"],null,ea)};EditorUi.prototype.toggleFormatPanel=function(N){null!=this.formatWindow?this.formatWindow.window.setVisible(null!=N?N:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};
+EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(Q,
+X){null!=X.shortcut&&900>n&&!mxClient.IS_IOS?Q.firstChild.nextSibling.setAttribute("title",X.shortcut):m.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var Q=this.userElement;Q.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+Q.style.display;Q.className="geToolbarButton";Q.innerText="";Q.style.backgroundImage="url("+Editor.userImage+")";Q.style.backgroundPosition="center center";
+Q.style.backgroundRepeat="no-repeat";Q.style.backgroundSize="24px 24px";Q.style.height="24px";Q.style.width="24px";Q.style.cssFloat="right";Q.setAttribute("title",mxResources.get("changeUser"));if("none"!=Q.style.display){Q.style.display="inline-block";var X=this.getCurrentFile();if(null!=X&&X.isRealtimeEnabled()&&X.isRealtimeSupported()){var fa=document.createElement("img");fa.setAttribute("border","0");fa.style.position="absolute";fa.style.left="18px";fa.style.top="2px";fa.style.width="12px";fa.style.height=
+"12px";var ka=X.getRealtimeError();X=X.getRealtimeState();var ia=mxResources.get("realtimeCollaboration");1==X?(fa.src=Editor.syncImage,ia+=" ("+mxResources.get("online")+")"):(fa.src=Editor.syncProblemImage,ia=null!=ka&&null!=ka.message?ia+(" ("+ka.message+")"):ia+(" ("+mxResources.get("disconnected")+")"));fa.setAttribute("title",ia);Q.style.paddingRight="4px";Q.appendChild(fa)}}}};var y=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){y.apply(this,arguments);if(null!=
+this.shareButton){var Q=this.shareButton;Q.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";Q.className="geToolbarButton";Q.innerText="";Q.style.backgroundImage="url("+Editor.shareImage+")";Q.style.backgroundPosition="center center";Q.style.backgroundRepeat="no-repeat";Q.style.backgroundSize="24px 24px";Q.style.height="24px";Q.style.width="24px";"1"==urlParams.sketch&&(this.shareButton.style.display="none")}null!=this.buttonContainer&&(this.buttonContainer.style.marginTop=
+"-2px",this.buttonContainer.style.paddingTop="4px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer&&"1"!=urlParams.embedInline){var Q=document.createElement("div");Q.style.display="inline-block";Q.style.position="relative";Q.style.marginTop="6px";Q.style.marginRight="4px";var X=document.createElement("a");X.className="geMenuItem gePrimaryBtn";X.style.marginLeft="8px";X.style.padding="6px";if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var fa="1"==urlParams.publishClose?
+mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(X,fa);X.setAttribute("title",fa);mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));Q.appendChild(X)}}else mxUtils.write(X,mxResources.get("save")),X.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),Q.appendChild(X),"1"==urlParams.saveAndExit&&(X=document.createElement("a"),
+mxUtils.write(X,mxResources.get("saveAndExit")),X.setAttribute("title",mxResources.get("saveAndExit")),X.className="geMenuItem",X.style.marginLeft="6px",X.style.padding="6px",mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),Q.appendChild(X));"1"!=urlParams.noExitBtn&&(X=document.createElement("a"),fa="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(X,fa),X.setAttribute("title",fa),X.className="geMenuItem",
+X.style.marginLeft="6px",X.style.padding="6px",mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),Q.appendChild(X));this.buttonContainer.appendChild(Q);this.buttonContainer.style.top="6px";this.editor.fireEvent(new mxEventObject("statusChanged"))}};var F=Sidebar.prototype.getTooltipOffset;Sidebar.prototype.getTooltipOffset=function(Q,X){if(null==this.editorUi.sidebarWindow||mxUtils.isAncestorNode(this.editorUi.picker,Q)){var fa=mxUtils.getOffset(this.editorUi.picker);
+fa.x+=this.editorUi.picker.offsetWidth+4;fa.y+=Q.offsetTop-X.height/2+16;return fa}var ka=F.apply(this,arguments);fa=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);ka.x+=fa.x-16;ka.y+=fa.y;return ka};var C=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(Q,X,fa){var ka=this.editorUi.editor.graph;Q.smartSeparators=!0;C.apply(this,arguments);"1"==urlParams.sketch?ka.isEnabled()&&(Q.addSeparator(),1==ka.getSelectionCount()&&this.addMenuItems(Q,["-","lockUnlock"],null,
+fa)):1==ka.getSelectionCount()?(ka.isCellFoldable(ka.getSelectionCell())&&this.addMenuItems(Q,ka.isCellCollapsed(X)?["expand"]:["collapse"],null,fa),this.addMenuItems(Q,["collapsible","-","lockUnlock","enterGroup"],null,fa),Q.addSeparator(),this.addSubmenu("layout",Q)):ka.isSelectionEmpty()&&ka.isEnabled()?(Q.addSeparator(),this.addMenuItems(Q,["editData"],null,fa),Q.addSeparator(),this.addSubmenu("layout",Q),this.addSubmenu("insert",Q),this.addMenuItems(Q,["-","exitGroup"],null,fa)):ka.isEnabled()&&
+this.addMenuItems(Q,["-","lockUnlock"],null,fa)};var I=Menus.prototype.addPopupMenuEditItems;Menus.prototype.addPopupMenuEditItems=function(Q,X,fa){I.apply(this,arguments);this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(Q,["copyAsImage"],null,fa)};EditorUi.prototype.toggleFormatPanel=function(Q){null!=this.formatWindow?this.formatWindow.window.setVisible(null!=Q?Q:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};
var G=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&
(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);null!=this.menus.findReplaceWindow&&(this.menus.findReplaceWindow.window.setVisible(!1),this.menus.findReplaceWindow.window.destroy(),
-this.menus.findReplaceWindow=null);G.apply(this,arguments)};var aa=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(N){aa.apply(this,arguments);if(N){var Y=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;1E3<=Y&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=Y||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),
-null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var ca=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(N){N=ca.apply(this,arguments);var Y=this.editorUi,ea=Y.editor.graph;if(ea.isEnabled()&&"1"==urlParams.sketch){var ka=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(ja,V){Y.setSketchMode(!Editor.sketchMode);null!=V&&mxEvent.isShiftDown(V)||ea.updateCellStyles({sketch:ja?
-"1":null},ea.getVerticesAndEdges())},{install:function(ja){this.listener=function(){ja(Editor.sketchMode)};Y.addListener("sketchModeChanged",this.listener)},destroy:function(){Y.removeListener(this.listener)}});N.appendChild(ka)}return N};var ba=Menus.prototype.init;Menus.prototype.init=function(){ba.apply(this,arguments);var N=this.editorUi,Y=N.editor.graph;N.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";N.actions.get("createShape").label=mxResources.get("shape")+"...";N.actions.get("outline").label=
-mxResources.get("outline")+"...";N.actions.get("layers").label=mxResources.get("layers")+"...";N.actions.get("tags").label=mxResources.get("tags")+"...";N.actions.get("comments").label=mxResources.get("comments")+"...";var ea=N.actions.put("toggleDarkMode",new Action(mxResources.get("dark"),function(S){N.setDarkMode(!Editor.darkMode)}));ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.isDarkMode()});ea=N.actions.put("toggleSketchMode",new Action(mxResources.get("sketch"),function(S){N.setSketchMode(!Editor.sketchMode)}));
-ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.sketchMode});ea=N.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(S){N.setPagesVisible(!Editor.pagesVisible)}));ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.pagesVisible});N.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){Y.popupMenuHandler.hideMenu();N.showImportCsvDialog()}));N.actions.put("importText",new Action(mxResources.get("text")+"...",
-function(){var S=new ParseDialog(N,"Insert from Text");N.showDialog(S.container,620,420,!0,!1);S.init()}));N.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var S=new ParseDialog(N,"Insert from Text","formatSql");N.showDialog(S.container,620,420,!0,!1);S.init()}));N.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){k(N)},null,null,Editor.ctrlKey+"+Shift+K"));N.actions.put("toggleFormat",new Action(mxResources.get("format")+
-"...",function(){b(N)})).shortcut=N.actions.get("formatPanel").shortcut;EditorUi.enablePlantUml&&!N.isOffline()&&N.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var S=new ParseDialog(N,mxResources.get("plantUml")+"...","plantUml");N.showDialog(S.container,620,420,!0,!1);S.init()}));N.actions.put("mermaid",new Action(mxResources.get("mermaid")+"...",function(){var S=new ParseDialog(N,mxResources.get("mermaid")+"...","mermaid");N.showDialog(S.container,620,420,!0,!1);
-S.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(S,ha){var la=this.editorUi.editor.graph,u=la.getSelectionCell();ka.call(this,S,u,null,ha);this.addMenuItems(S,["editTooltip"],ha);la.model.isVertex(u)&&this.addMenuItems(S,["editGeometry"],ha);this.addMenuItems(S,["-","edit"],ha)})));this.addPopupMenuCellEditItems=function(S,ha,la,u){S.addSeparator();this.addSubmenu("editCell",S,u,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
-function(S,ha){var la=N.getCurrentFile();N.menus.addMenuItems(S,["new"],ha);N.menus.addSubmenu("openFrom",S,ha);isLocalStorage&&this.addSubmenu("openRecent",S,ha);S.addSeparator(ha);null!=la&&la.constructor==DriveFile?N.menus.addMenuItems(S,["save","rename","makeCopy","moveToFolder"],ha):(N.menus.addMenuItems(S,["save","saveAs","-","rename"],ha),N.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(S,["upload"],ha):N.menus.addMenuItems(S,["makeCopy"],
-ha));S.addSeparator(ha);null!=la&&(la.isRevisionHistorySupported()&&N.menus.addMenuItems(S,["revisionHistory"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||N.menus.addMenuItems(S,["synchronize"],ha));N.menus.addMenuItems(S,["autosave"],ha);if(null!=la&&(S.addSeparator(ha),la.constructor==DriveFile&&N.menus.addMenuItems(S,["share"],ha),null!=N.fileNode&&"1"!=urlParams.embedInline)){var u=null!=la.getTitle()?la.getTitle():N.defaultFilename;(la.constructor==
-DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(u)&&!/(\.svg)$/i.test(u))&&this.addMenuItems(S,["-","properties"],ha)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(S,ha){var la=N.getCurrentFile();N.menus.addSubmenu("extras",S,ha,mxResources.get("preferences"));S.addSeparator(ha);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)N.menus.addMenuItems(S,"new open - synchronize - save saveAs -".split(" "),ha);else if("1"==urlParams.embed||N.mode==App.MODE_ATLAS){"1"!=
-urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&N.menus.addMenuItems(S,["-","save"],ha);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||N.mode==App.MODE_ATLAS)N.menus.addMenuItems(S,["saveAndExit"],ha),null!=la&&la.isRevisionHistorySupported()&&N.menus.addMenuItems(S,["revisionHistory"],ha);S.addSeparator(ha)}else N.mode==App.MODE_ATLAS?N.menus.addMenuItems(S,["save","synchronize","-"],ha):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(N.menus.addMenuItems(S,
-["new"],ha),N.menus.addSubmenu("openFrom",S,ha),isLocalStorage&&this.addSubmenu("openRecent",S,ha),S.addSeparator(ha),null!=la&&(la.constructor==DriveFile&&N.menus.addMenuItems(S,["share"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||N.menus.addMenuItems(S,["synchronize"],ha)),S.addSeparator(ha),N.menus.addSubmenu("save",S,ha)):N.menus.addSubmenu("file",S,ha));N.menus.addSubmenu("exportAs",S,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?N.menus.addMenuItems(S,
-["import"],ha):"1"!=urlParams.noFileMenu&&N.menus.addSubmenu("importFrom",S,ha);N.commentsSupported()&&N.menus.addMenuItems(S,["-","comments"],ha);N.menus.addMenuItems(S,"- findReplace outline layers tags - pageSetup".split(" "),ha);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||N.menus.addMenuItems(S,["print"],ha);"1"!=urlParams.sketch&&null!=la&&null!=N.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():N.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
-this.addMenuItems(S,["-","properties"]));S.addSeparator(ha);N.menus.addSubmenu("help",S,ha);"1"==urlParams.embed||N.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||N.mode==App.MODE_ATLAS)&&N.menus.addMenuItems(S,["-","exit"],ha):"1"!=urlParams.noFileMenu&&N.menus.addMenuItems(S,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(S,ha){var la=N.getCurrentFile();null!=la&&la.constructor==DriveFile?N.menus.addMenuItems(S,["save","makeCopy","-","rename","moveToFolder"],ha):(N.menus.addMenuItems(S,
-["save","saveAs","-","rename"],ha),N.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(S,["upload"],ha):N.menus.addMenuItems(S,["makeCopy"],ha));N.menus.addMenuItems(S,["-","autosave"],ha);null!=la&&la.isRevisionHistorySupported()&&N.menus.addMenuItems(S,["-","revisionHistory"],ha)})));var ja=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(S,ha){ja.funct(S,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||N.menus.addMenuItems(S,
-["publishLink"],ha);N.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(S.addSeparator(ha),N.menus.addSubmenu("embed",S,ha))})));var V=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(S,ha){N.menus.addInsertTableCellItem(S,ha)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(S,ha){J.funct(S,ha);this.addMenuItems(S,["-","pageScale","-","ruler"],ha)})))}this.put("extras",new Menu(mxUtils.bind(this,function(S,ha){null!=V&&
-N.menus.addSubmenu("language",S,ha);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&N.mode!=App.MODE_ATLAS&&N.menus.addSubmenu("theme",S,ha);N.menus.addSubmenu("units",S,ha);S.addSeparator(ha);"1"!=urlParams.sketch&&N.menus.addMenuItems(S,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ha);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&N.mode!=App.MODE_ATLAS&&N.menus.addMenuItems(S,["-","showStartScreen",
-"search","scratchpad"],ha);S.addSeparator(ha);"1"==urlParams.sketch?N.menus.addMenuItems(S,"configuration - copyConnect collapseExpand tooltips -".split(" "),ha):(N.mode!=App.MODE_ATLAS&&N.menus.addMenuItem(S,"configuration",ha),!N.isOfflineApp()&&isLocalStorage&&N.mode!=App.MODE_ATLAS&&N.menus.addMenuItem(S,"plugins",ha));EditorUi.isElectronApp&&N.menus.addMenuItems(S,["-","spellCheck","autoBkp","drafts","-"],ha);var la=N.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&
-this.addMenuItems(S,["-","showRemoteCursors","shareCursor","-"],ha);S.addSeparator(ha);N.mode!=App.MODE_ATLAS&&this.addMenuItems(S,["fullscreen"],ha);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(S,["toggleDarkMode"],ha);S.addSeparator(ha)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(S,ha){N.menus.addMenuItems(S,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ha)})));mxUtils.bind(this,
-function(){var S=this.get("insert"),ha=S.funct;S.funct=function(la,u){"1"==urlParams.sketch?(N.insertTemplateEnabled&&!N.isOffline()&&N.menus.addMenuItems(la,["insertTemplate"],u),N.menus.addMenuItems(la,["insertImage","insertLink","-"],u),N.menus.addSubmenu("insertAdvanced",la,u,mxResources.get("advanced")),N.menus.addSubmenu("layout",la,u)):(ha.apply(this,arguments),N.menus.addSubmenu("table",la,u))}})();var W="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
-Q=function(S,ha,la,u){S.addItem(la,null,mxUtils.bind(this,function(){var H=new CreateGraphDialog(N,la,u);N.showDialog(H.container,620,420,!0,!1);H.init()}),ha)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(S,ha){for(var la=0;la<W.length;la++)"-"==W[la]?S.addSeparator(ha):Q(S,ha,mxResources.get(W[la])+"...",W[la])})))};EditorUi.prototype.installFormatToolbar=function(N){var Y=this.editor.graph,ea=document.createElement("div");ea.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
-Y.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(ka,ja){0<Y.getSelectionCount()?(N.appendChild(ea),ea.innerHTML="Selected: "+Y.getSelectionCount()):null!=ea.parentNode&&ea.parentNode.removeChild(ea)}))};var Z=!1;EditorUi.prototype.initFormatWindow=function(){if(!Z&&null!=this.formatWindow){Z=!0;this.formatWindow.window.setClosable(!1);var N=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){N.apply(this,arguments);this.minimized?
-(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(Y){mxEvent.getSource(Y)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var qa=EditorUi.prototype.init;EditorUi.prototype.init=
-function(){function N(va,ya,Na){var Ja=V.menus.get(va),Pa=S.addMenu(mxResources.get(va),mxUtils.bind(this,function(){Ja.funct.apply(this,arguments)}),Q);Pa.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";Pa.style.display="inline-block";Pa.style.boxSizing="border-box";Pa.style.top="6px";Pa.style.marginRight="6px";Pa.style.height="30px";Pa.style.paddingTop="6px";Pa.style.paddingBottom="6px";Pa.style.cursor="pointer";Pa.setAttribute("title",mxResources.get(va));V.menus.menuCreated(Ja,
-Pa,"geMenuItem");null!=Na?(Pa.style.backgroundImage="url("+Na+")",Pa.style.backgroundPosition="center center",Pa.style.backgroundRepeat="no-repeat",Pa.style.backgroundSize="24px 24px",Pa.style.width="34px",Pa.innerText=""):ya||(Pa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Pa.style.backgroundPosition="right 6px center",Pa.style.backgroundRepeat="no-repeat",Pa.style.paddingRight="22px");return Pa}function Y(va,ya,Na,Ja,Pa,Ya){var cb=document.createElement("a");cb.className=
-"1"==urlParams.sketch?"geToolbarButton":"geMenuItem";cb.style.display="inline-block";cb.style.boxSizing="border-box";cb.style.height="30px";cb.style.padding="6px";cb.style.position="relative";cb.style.verticalAlign="top";cb.style.top="0px";"1"==urlParams.sketch&&(cb.style.borderStyle="none",cb.style.boxShadow="none",cb.style.padding="6px",cb.style.margin="0px");null!=V.statusContainer?W.insertBefore(cb,V.statusContainer):W.appendChild(cb);null!=Ya?(cb.style.backgroundImage="url("+Ya+")",cb.style.backgroundPosition=
-"center center",cb.style.backgroundRepeat="no-repeat",cb.style.backgroundSize="24px 24px",cb.style.width="34px"):mxUtils.write(cb,va);mxEvent.addListener(cb,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(fb){fb.preventDefault()}));mxEvent.addListener(cb,"click",function(fb){"disabled"!=cb.getAttribute("disabled")&&ya(fb);mxEvent.consume(fb)});null==Na&&(cb.style.marginRight="4px");null!=Ja&&cb.setAttribute("title",Ja);null!=Pa&&(va=function(){Pa.isEnabled()?(cb.removeAttribute("disabled"),
-cb.style.cursor="pointer"):(cb.setAttribute("disabled","disabled"),cb.style.cursor="default")},Pa.addListener("stateChanged",va),J.addListener("enabledChanged",va),va());return cb}function ea(va,ya,Na){Na=document.createElement("div");Na.className="geMenuItem";Na.style.display="inline-block";Na.style.verticalAlign="top";Na.style.marginRight="6px";Na.style.padding="0 4px 0 4px";Na.style.height="30px";Na.style.position="relative";Na.style.top="0px";"1"==urlParams.sketch&&(Na.style.boxShadow="none");
-for(var Ja=0;Ja<va.length;Ja++)null!=va[Ja]&&("1"==urlParams.sketch&&(va[Ja].style.padding="10px 8px",va[Ja].style.width="30px"),va[Ja].style.margin="0px",va[Ja].style.boxShadow="none",Na.appendChild(va[Ja]));null!=ya&&mxUtils.setOpacity(Na,ya);null!=V.statusContainer&&"1"!=urlParams.sketch?W.insertBefore(Na,V.statusContainer):W.appendChild(Na);return Na}function ka(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(da.style.left=58>R.offsetTop-R.offsetHeight/2?"70px":"10px");else{for(var va=
-W.firstChild;null!=va;){var ya=va.nextSibling;"geMenuItem"!=va.className&&"geItem"!=va.className||va.parentNode.removeChild(va);va=ya}Q=W.firstChild;n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;va=1E3>n||"1"==urlParams.sketch;var Na=null;va||(Na=N("diagram"));ya=va?N("diagram",null,Editor.drawLogoImage):null;null!=ya&&(Na=ya);ea([Na,Y(mxResources.get("shapes"),V.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),V.actions.get("image"),va?Editor.shapesImage:
-null),Y(mxResources.get("format"),V.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+V.actions.get("formatPanel").shortcut+")",V.actions.get("image"),va?Editor.formatImage:null)],va?60:null);ya=N("insert",!0,va?O:null);ea([ya,Y(mxResources.get("delete"),V.actions.get("delete").funct,null,mxResources.get("delete"),V.actions.get("delete"),va?Editor.trashImage:null)],va?60:null);411<=n&&(ea([z,L],60),520<=n&&ea([za,640<=n?Y("",Sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+
-" +)",Sa,Editor.zoomInImage):null,640<=n?Y("",$a.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",$a,Editor.zoomOutImage):null],60))}null!=Na&&(mxEvent.disableContextMenu(Na),mxEvent.addGestureListeners(Na,mxUtils.bind(this,function(Ja){(mxEvent.isShiftDown(Ja)||mxEvent.isAltDown(Ja)||mxEvent.isMetaDown(Ja)||mxEvent.isControlDown(Ja)||mxEvent.isPopupTrigger(Ja))&&V.appIconClicked(Ja)}),null,null));ya=V.menus.get("language");null!=ya&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=
-n&&"1"!=urlParams.sketch?(null==Ma&&(ya=S.addMenu("",ya.funct),ya.setAttribute("title",mxResources.get("language")),ya.className="geToolbarButton",ya.style.backgroundImage="url("+Editor.globeImage+")",ya.style.backgroundPosition="center center",ya.style.backgroundRepeat="no-repeat",ya.style.backgroundSize="24px 24px",ya.style.position="absolute",ya.style.height="24px",ya.style.width="24px",ya.style.zIndex="1",ya.style.right="8px",ya.style.cursor="pointer",ya.style.top="1"==urlParams.embed?"12px":
-"11px",W.appendChild(ya),Ma=ya),V.buttonContainer.style.paddingRight="34px"):(V.buttonContainer.style.paddingRight="4px",null!=Ma&&(Ma.parentNode.removeChild(Ma),Ma=null))}qa.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 ja=document.createElement("div");ja.style.cssText=
-"position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";ja.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(ja);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=
+this.menus.findReplaceWindow=null);G.apply(this,arguments)};var Z=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(Q){Z.apply(this,arguments);if(Q){var X=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;1E3<=X&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=X||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),
+null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var ca=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(Q){Q=ca.apply(this,arguments);var X=this.editorUi,fa=X.editor.graph;if(fa.isEnabled()&&"1"==urlParams.sketch){var ka=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(ia,V){X.setSketchMode(!Editor.sketchMode);null!=V&&mxEvent.isShiftDown(V)||fa.updateCellStyles({sketch:ia?
+"1":null},fa.getVerticesAndEdges())},{install:function(ia){this.listener=function(){ia(Editor.sketchMode)};X.addListener("sketchModeChanged",this.listener)},destroy:function(){X.removeListener(this.listener)}});Q.appendChild(ka)}return Q};var aa=Menus.prototype.init;Menus.prototype.init=function(){aa.apply(this,arguments);var Q=this.editorUi,X=Q.editor.graph;Q.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";Q.actions.get("createShape").label=mxResources.get("shape")+"...";Q.actions.get("outline").label=
+mxResources.get("outline")+"...";Q.actions.get("layers").label=mxResources.get("layers")+"...";Q.actions.get("tags").label=mxResources.get("tags")+"...";Q.actions.get("comments").label=mxResources.get("comments")+"...";var fa=Q.actions.put("toggleDarkMode",new Action(mxResources.get("dark"),function(N){Q.setDarkMode(!Editor.darkMode)}));fa.setToggleAction(!0);fa.setSelectedCallback(function(){return Editor.isDarkMode()});fa=Q.actions.put("toggleSketchMode",new Action(mxResources.get("sketch"),function(N){Q.setSketchMode(!Editor.sketchMode)}));
+fa.setToggleAction(!0);fa.setSelectedCallback(function(){return Editor.sketchMode});fa=Q.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(N){Q.setPagesVisible(!Editor.pagesVisible)}));fa.setToggleAction(!0);fa.setSelectedCallback(function(){return Editor.pagesVisible});Q.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){X.popupMenuHandler.hideMenu();Q.showImportCsvDialog()}));Q.actions.put("importText",new Action(mxResources.get("text")+"...",
+function(){var N=new ParseDialog(Q,"Insert from Text");Q.showDialog(N.container,620,420,!0,!1);N.init()}));Q.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var N=new ParseDialog(Q,"Insert from Text","formatSql");Q.showDialog(N.container,620,420,!0,!1);N.init()}));Q.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){k(Q)},null,null,Editor.ctrlKey+"+Shift+K"));Q.actions.put("toggleFormat",new Action(mxResources.get("format")+
+"...",function(){b(Q)})).shortcut=Q.actions.get("formatPanel").shortcut;EditorUi.enablePlantUml&&!Q.isOffline()&&Q.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var N=new ParseDialog(Q,mxResources.get("plantUml")+"...","plantUml");Q.showDialog(N.container,620,420,!0,!1);N.init()}));Q.actions.put("mermaid",new Action(mxResources.get("mermaid")+"...",function(){var N=new ParseDialog(Q,mxResources.get("mermaid")+"...","mermaid");Q.showDialog(N.container,620,420,!0,!1);
+N.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(N,ba){var la=this.editorUi.editor.graph,u=la.getSelectionCell();ka.call(this,N,u,null,ba);this.addMenuItems(N,["editTooltip"],ba);la.model.isVertex(u)&&this.addMenuItems(N,["editGeometry"],ba);this.addMenuItems(N,["-","edit"],ba)})));this.addPopupMenuCellEditItems=function(N,ba,la,u){N.addSeparator();this.addSubmenu("editCell",N,u,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
+function(N,ba){var la=Q.getCurrentFile();Q.menus.addMenuItems(N,["new"],ba);Q.menus.addSubmenu("openFrom",N,ba);isLocalStorage&&this.addSubmenu("openRecent",N,ba);N.addSeparator(ba);null!=la&&la.constructor==DriveFile?Q.menus.addMenuItems(N,["save","rename","makeCopy","moveToFolder"],ba):(Q.menus.addMenuItems(N,["save","saveAs","-","rename"],ba),Q.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(N,["upload"],ba):Q.menus.addMenuItems(N,["makeCopy"],
+ba));N.addSeparator(ba);null!=la&&(la.isRevisionHistorySupported()&&Q.menus.addMenuItems(N,["revisionHistory"],ba),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||Q.menus.addMenuItems(N,["synchronize"],ba));Q.menus.addMenuItems(N,["autosave"],ba);if(null!=la&&(N.addSeparator(ba),la.constructor==DriveFile&&Q.menus.addMenuItems(N,["share"],ba),null!=Q.fileNode&&"1"!=urlParams.embedInline)){var u=null!=la.getTitle()?la.getTitle():Q.defaultFilename;(la.constructor==
+DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(u)&&!/(\.svg)$/i.test(u))&&this.addMenuItems(N,["-","properties"],ba)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(N,ba){var la=Q.getCurrentFile();Q.menus.addSubmenu("extras",N,ba,mxResources.get("preferences"));N.addSeparator(ba);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)Q.menus.addMenuItems(N,"new open - synchronize - save saveAs -".split(" "),ba);else if("1"==urlParams.embed||Q.mode==App.MODE_ATLAS){"1"!=
+urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&Q.menus.addMenuItems(N,["-","save"],ba);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||Q.mode==App.MODE_ATLAS)Q.menus.addMenuItems(N,["saveAndExit"],ba),null!=la&&la.isRevisionHistorySupported()&&Q.menus.addMenuItems(N,["revisionHistory"],ba);N.addSeparator(ba)}else Q.mode==App.MODE_ATLAS?Q.menus.addMenuItems(N,["save","synchronize","-"],ba):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(Q.menus.addMenuItems(N,
+["new"],ba),Q.menus.addSubmenu("openFrom",N,ba),isLocalStorage&&this.addSubmenu("openRecent",N,ba),N.addSeparator(ba),null!=la&&(la.constructor==DriveFile&&Q.menus.addMenuItems(N,["share"],ba),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||Q.menus.addMenuItems(N,["synchronize"],ba)),N.addSeparator(ba),Q.menus.addSubmenu("save",N,ba)):Q.menus.addSubmenu("file",N,ba));Q.menus.addSubmenu("exportAs",N,ba);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?Q.menus.addMenuItems(N,
+["import"],ba):"1"!=urlParams.noFileMenu&&Q.menus.addSubmenu("importFrom",N,ba);Q.commentsSupported()&&Q.menus.addMenuItems(N,["-","comments"],ba);Q.menus.addMenuItems(N,"- findReplace outline layers tags - pageSetup".split(" "),ba);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||Q.menus.addMenuItems(N,["print"],ba);"1"!=urlParams.sketch&&null!=la&&null!=Q.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():Q.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
+this.addMenuItems(N,["-","properties"]));N.addSeparator(ba);Q.menus.addSubmenu("help",N,ba);"1"==urlParams.embed||Q.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||Q.mode==App.MODE_ATLAS)&&Q.menus.addMenuItems(N,["-","exit"],ba):"1"!=urlParams.noFileMenu&&Q.menus.addMenuItems(N,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(N,ba){var la=Q.getCurrentFile();null!=la&&la.constructor==DriveFile?Q.menus.addMenuItems(N,["save","makeCopy","-","rename","moveToFolder"],ba):(Q.menus.addMenuItems(N,
+["save","saveAs","-","rename"],ba),Q.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(N,["upload"],ba):Q.menus.addMenuItems(N,["makeCopy"],ba));Q.menus.addMenuItems(N,["-","autosave"],ba);null!=la&&la.isRevisionHistorySupported()&&Q.menus.addMenuItems(N,["-","revisionHistory"],ba)})));var ia=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(N,ba){ia.funct(N,ba);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||Q.menus.addMenuItems(N,
+["publishLink"],ba);Q.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(N.addSeparator(ba),Q.menus.addSubmenu("embed",N,ba))})));var V=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(N,ba){Q.menus.addInsertTableCellItem(N,ba)})));if("1"==urlParams.sketch){var L=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(N,ba){L.funct(N,ba);this.addMenuItems(N,["-","pageScale","-","ruler"],ba)})))}this.put("extras",new Menu(mxUtils.bind(this,function(N,ba){null!=V&&
+Q.menus.addSubmenu("language",N,ba);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&Q.mode!=App.MODE_ATLAS&&Q.menus.addSubmenu("theme",N,ba);Q.menus.addSubmenu("units",N,ba);N.addSeparator(ba);"1"!=urlParams.sketch&&Q.menus.addMenuItems(N,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ba);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&Q.mode!=App.MODE_ATLAS&&Q.menus.addMenuItems(N,["-","showStartScreen",
+"search","scratchpad"],ba);N.addSeparator(ba);"1"==urlParams.sketch?Q.menus.addMenuItems(N,"configuration - copyConnect collapseExpand tooltips -".split(" "),ba):(Q.mode!=App.MODE_ATLAS&&Q.menus.addMenuItem(N,"configuration",ba),!Q.isOfflineApp()&&isLocalStorage&&Q.mode!=App.MODE_ATLAS&&Q.menus.addMenuItem(N,"plugins",ba));EditorUi.isElectronApp&&Q.menus.addMenuItems(N,["-","spellCheck","autoBkp","drafts","-"],ba);var la=Q.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&
+this.addMenuItems(N,["-","showRemoteCursors","shareCursor","-"],ba);N.addSeparator(ba);Q.mode!=App.MODE_ATLAS&&this.addMenuItems(N,["fullscreen"],ba);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(N,["toggleDarkMode"],ba);N.addSeparator(ba)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(N,ba){Q.menus.addMenuItems(N,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ba)})));mxUtils.bind(this,
+function(){var N=this.get("insert"),ba=N.funct;N.funct=function(la,u){"1"==urlParams.sketch?(Q.insertTemplateEnabled&&!Q.isOffline()&&Q.menus.addMenuItems(la,["insertTemplate"],u),Q.menus.addMenuItems(la,["insertImage","insertLink","-"],u),Q.menus.addSubmenu("insertAdvanced",la,u,mxResources.get("advanced")),Q.menus.addSubmenu("layout",la,u)):(ba.apply(this,arguments),Q.menus.addSubmenu("table",la,u))}})();var ea="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
+O=function(N,ba,la,u){N.addItem(la,null,mxUtils.bind(this,function(){var H=new CreateGraphDialog(Q,la,u);Q.showDialog(H.container,620,420,!0,!1);H.init()}),ba)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(N,ba){for(var la=0;la<ea.length;la++)"-"==ea[la]?N.addSeparator(ba):O(N,ba,mxResources.get(ea[la])+"...",ea[la])})))};EditorUi.prototype.installFormatToolbar=function(Q){var X=this.editor.graph,fa=document.createElement("div");fa.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
+X.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(ka,ia){0<X.getSelectionCount()?(Q.appendChild(fa),fa.innerHTML="Selected: "+X.getSelectionCount()):null!=fa.parentNode&&fa.parentNode.removeChild(fa)}))};var Y=!1;EditorUi.prototype.initFormatWindow=function(){if(!Y&&null!=this.formatWindow){Y=!0;this.formatWindow.window.setClosable(!1);var Q=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){Q.apply(this,arguments);this.minimized?
+(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(X){mxEvent.getSource(X)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var qa=EditorUi.prototype.init;EditorUi.prototype.init=
+function(){function Q(va,ya,Na){var Ja=V.menus.get(va),Qa=N.addMenu(mxResources.get(va),mxUtils.bind(this,function(){Ja.funct.apply(this,arguments)}),O);Qa.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";Qa.style.display="inline-block";Qa.style.boxSizing="border-box";Qa.style.top="6px";Qa.style.marginRight="6px";Qa.style.height="30px";Qa.style.paddingTop="6px";Qa.style.paddingBottom="6px";Qa.style.cursor="pointer";Qa.setAttribute("title",mxResources.get(va));V.menus.menuCreated(Ja,
+Qa,"geMenuItem");null!=Na?(Qa.style.backgroundImage="url("+Na+")",Qa.style.backgroundPosition="center center",Qa.style.backgroundRepeat="no-repeat",Qa.style.backgroundSize="24px 24px",Qa.style.width="34px",Qa.innerText=""):ya||(Qa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Qa.style.backgroundPosition="right 6px center",Qa.style.backgroundRepeat="no-repeat",Qa.style.paddingRight="22px");return Qa}function X(va,ya,Na,Ja,Qa,Za){var cb=document.createElement("a");cb.className=
+"1"==urlParams.sketch?"geToolbarButton":"geMenuItem";cb.style.display="inline-block";cb.style.boxSizing="border-box";cb.style.height="30px";cb.style.padding="6px";cb.style.position="relative";cb.style.verticalAlign="top";cb.style.top="0px";"1"==urlParams.sketch&&(cb.style.borderStyle="none",cb.style.boxShadow="none",cb.style.padding="6px",cb.style.margin="0px");null!=V.statusContainer?ea.insertBefore(cb,V.statusContainer):ea.appendChild(cb);null!=Za?(cb.style.backgroundImage="url("+Za+")",cb.style.backgroundPosition=
+"center center",cb.style.backgroundRepeat="no-repeat",cb.style.backgroundSize="24px 24px",cb.style.width="34px"):mxUtils.write(cb,va);mxEvent.addListener(cb,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(fb){fb.preventDefault()}));mxEvent.addListener(cb,"click",function(fb){"disabled"!=cb.getAttribute("disabled")&&ya(fb);mxEvent.consume(fb)});null==Na&&(cb.style.marginRight="4px");null!=Ja&&cb.setAttribute("title",Ja);null!=Qa&&(va=function(){Qa.isEnabled()?(cb.removeAttribute("disabled"),
+cb.style.cursor="pointer"):(cb.setAttribute("disabled","disabled"),cb.style.cursor="default")},Qa.addListener("stateChanged",va),L.addListener("enabledChanged",va),va());return cb}function fa(va,ya,Na){Na=document.createElement("div");Na.className="geMenuItem";Na.style.display="inline-block";Na.style.verticalAlign="top";Na.style.marginRight="6px";Na.style.padding="0 4px 0 4px";Na.style.height="30px";Na.style.position="relative";Na.style.top="0px";"1"==urlParams.sketch&&(Na.style.boxShadow="none");
+for(var Ja=0;Ja<va.length;Ja++)null!=va[Ja]&&("1"==urlParams.sketch&&(va[Ja].style.padding="10px 8px",va[Ja].style.width="30px"),va[Ja].style.margin="0px",va[Ja].style.boxShadow="none",Na.appendChild(va[Ja]));null!=ya&&mxUtils.setOpacity(Na,ya);null!=V.statusContainer&&"1"!=urlParams.sketch?ea.insertBefore(Na,V.statusContainer):ea.appendChild(Na);return Na}function ka(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(da.style.left=58>S.offsetTop-S.offsetHeight/2?"70px":"10px");else{for(var va=
+ea.firstChild;null!=va;){var ya=va.nextSibling;"geMenuItem"!=va.className&&"geItem"!=va.className||va.parentNode.removeChild(va);va=ya}O=ea.firstChild;n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;va=1E3>n||"1"==urlParams.sketch;var Na=null;va||(Na=Q("diagram"));ya=va?Q("diagram",null,Editor.drawLogoImage):null;null!=ya&&(Na=ya);fa([Na,X(mxResources.get("shapes"),V.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),V.actions.get("image"),va?Editor.shapesImage:
+null),X(mxResources.get("format"),V.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+V.actions.get("formatPanel").shortcut+")",V.actions.get("image"),va?Editor.formatImage:null)],va?60:null);ya=Q("insert",!0,va?P:null);fa([ya,X(mxResources.get("delete"),V.actions.get("delete").funct,null,mxResources.get("delete"),V.actions.get("delete"),va?Editor.trashImage:null)],va?60:null);411<=n&&(fa([z,K],60),520<=n&&fa([za,640<=n?X("",Oa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+
+" +)",Oa,Editor.zoomInImage):null,640<=n?X("",Xa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",Xa,Editor.zoomOutImage):null],60))}null!=Na&&(mxEvent.disableContextMenu(Na),mxEvent.addGestureListeners(Na,mxUtils.bind(this,function(Ja){(mxEvent.isShiftDown(Ja)||mxEvent.isAltDown(Ja)||mxEvent.isMetaDown(Ja)||mxEvent.isControlDown(Ja)||mxEvent.isPopupTrigger(Ja))&&V.appIconClicked(Ja)}),null,null));ya=V.menus.get("language");null!=ya&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=
+n&&"1"!=urlParams.sketch?(null==Ma&&(ya=N.addMenu("",ya.funct),ya.setAttribute("title",mxResources.get("language")),ya.className="geToolbarButton",ya.style.backgroundImage="url("+Editor.globeImage+")",ya.style.backgroundPosition="center center",ya.style.backgroundRepeat="no-repeat",ya.style.backgroundSize="24px 24px",ya.style.position="absolute",ya.style.height="24px",ya.style.width="24px",ya.style.zIndex="1",ya.style.right="8px",ya.style.cursor="pointer",ya.style.top="1"==urlParams.embed?"12px":
+"11px",ea.appendChild(ya),Ma=ya),V.buttonContainer.style.paddingRight="34px"):(V.buttonContainer.style.paddingRight="4px",null!=Ma&&(Ma.parentNode.removeChild(Ma),Ma=null))}qa.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 ia=document.createElement("div");ia.style.cssText=
+"position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";ia.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(ia);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=
urlParams.sketch&&1E3<=n||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])k(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));var V=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==V.embedViewport)mxUtils.fit(this.div);else{var va=parseInt(this.div.offsetLeft),ya=parseInt(this.div.offsetWidth),Na=V.embedViewport.x+
-V.embedViewport.width,Ja=parseInt(this.div.offsetTop),Pa=parseInt(this.div.offsetHeight),Ya=V.embedViewport.y+V.embedViewport.height;this.div.style.left=Math.max(V.embedViewport.x,Math.min(va,Na-ya))+"px";this.div.style.top=Math.max(V.embedViewport.y,Math.min(Ja,Ya-Pa))+"px";this.div.style.height=Math.min(V.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(V.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",
-!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),ja=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>n||708>ja)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));V=this;var J=V.editor.graph;V.toolbar=this.createToolbar(V.createDiv("geToolbar"));V.defaultLibraryName=
-mxResources.get("untitledLibrary");var W=document.createElement("div");W.className="geMenubarContainer";var Q=null,S=new Menubar(V,W);V.statusContainer=V.createStatusContainer();V.statusContainer.style.position="relative";V.statusContainer.style.maxWidth="";V.statusContainer.style.marginTop="7px";V.statusContainer.style.marginLeft="6px";V.statusContainer.style.color="gray";V.statusContainer.style.cursor="default";var ha=V.hideCurrentMenu;V.hideCurrentMenu=function(){ha.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
-var la=V.descriptorChanged;V.descriptorChanged=function(){la.apply(this,arguments);var va=V.getCurrentFile();if(null!=va&&null!=va.getTitle()){var ya=va.getMode();"google"==ya?ya="googleDrive":"github"==ya?ya="gitHub":"gitlab"==ya?ya="gitLab":"onedrive"==ya&&(ya="oneDrive");ya=mxResources.get(ya);W.setAttribute("title",va.getTitle()+(null!=ya?" ("+ya+")":""))}else W.removeAttribute("title")};V.setStatusText(V.editor.getStatus());W.appendChild(V.statusContainer);V.buttonContainer=document.createElement("div");
-V.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";W.appendChild(V.buttonContainer);V.menubarContainer=V.buttonContainer;V.tabContainer=document.createElement("div");V.tabContainer.className="geTabContainer";V.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";ja=V.diagramContainer.parentNode;var u=document.createElement("div");
+V.embedViewport.width,Ja=parseInt(this.div.offsetTop),Qa=parseInt(this.div.offsetHeight),Za=V.embedViewport.y+V.embedViewport.height;this.div.style.left=Math.max(V.embedViewport.x,Math.min(va,Na-ya))+"px";this.div.style.top=Math.max(V.embedViewport.y,Math.min(Ja,Za-Qa))+"px";this.div.style.height=Math.min(V.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(V.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",
+!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),ia=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>n||708>ia)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));V=this;var L=V.editor.graph;V.toolbar=this.createToolbar(V.createDiv("geToolbar"));V.defaultLibraryName=
+mxResources.get("untitledLibrary");var ea=document.createElement("div");ea.className="geMenubarContainer";var O=null,N=new Menubar(V,ea);V.statusContainer=V.createStatusContainer();V.statusContainer.style.position="relative";V.statusContainer.style.maxWidth="";V.statusContainer.style.marginTop="7px";V.statusContainer.style.marginLeft="6px";V.statusContainer.style.color="gray";V.statusContainer.style.cursor="default";var ba=V.hideCurrentMenu;V.hideCurrentMenu=function(){ba.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
+var la=V.descriptorChanged;V.descriptorChanged=function(){la.apply(this,arguments);var va=V.getCurrentFile();if(null!=va&&null!=va.getTitle()){var ya=va.getMode();"google"==ya?ya="googleDrive":"github"==ya?ya="gitHub":"gitlab"==ya?ya="gitLab":"onedrive"==ya&&(ya="oneDrive");ya=mxResources.get(ya);ea.setAttribute("title",va.getTitle()+(null!=ya?" ("+ya+")":""))}else ea.removeAttribute("title")};V.setStatusText(V.editor.getStatus());ea.appendChild(V.statusContainer);V.buttonContainer=document.createElement("div");
+V.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";ea.appendChild(V.buttonContainer);V.menubarContainer=V.buttonContainer;V.tabContainer=document.createElement("div");V.tabContainer.className="geTabContainer";V.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";ia=V.diagramContainer.parentNode;var u=document.createElement("div");
u.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";V.diagramContainer.style.top="1"==urlParams.sketch?"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){u.style.top="20px";V.titlebar=document.createElement("div");V.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var H=document.createElement("div");H.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;";
-V.titlebar.appendChild(H);ja.appendChild(V.titlebar)}H=V.menus.get("viewZoom");var O="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,T="1"==urlParams.sketch?document.createElement("div"):null,R="1"==urlParams.sketch?document.createElement("div"):null,da="1"==urlParams.sketch?document.createElement("div"):null,P=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();J.refresh();J.view.validateBackground()});V.addListener("darkModeChanged",P);V.addListener("sketchModeChanged",
-P);var ma=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)da.style.left="10px",da.style.top="10px",R.style.left="10px",R.style.top="60px",T.style.top="10px",T.style.right="12px",T.style.left="",V.diagramContainer.setAttribute("data-bounds",V.diagramContainer.style.top+" "+V.diagramContainer.style.left+" "+V.diagramContainer.style.width+" "+V.diagramContainer.style.height),V.diagramContainer.style.top="0px",V.diagramContainer.style.left="0px",V.diagramContainer.style.bottom="0px",V.diagramContainer.style.right=
-"0px",V.diagramContainer.style.width="",V.diagramContainer.style.height="";else{var va=V.diagramContainer.getAttribute("data-bounds");if(null!=va){V.diagramContainer.style.background="transparent";V.diagramContainer.removeAttribute("data-bounds");var ya=J.getGraphBounds();va=va.split(" ");V.diagramContainer.style.top=va[0];V.diagramContainer.style.left=va[1];V.diagramContainer.style.width=ya.width+50+"px";V.diagramContainer.style.height=ya.height+46+"px";V.diagramContainer.style.bottom="";V.diagramContainer.style.right=
-"";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",rect:V.diagramContainer.getBoundingClientRect()}),"*");V.refresh()}da.style.left=V.diagramContainer.offsetLeft+"px";da.style.top=V.diagramContainer.offsetTop-da.offsetHeight-4+"px";R.style.display="";R.style.left=V.diagramContainer.offsetLeft-R.offsetWidth-4+"px";R.style.top=V.diagramContainer.offsetTop+"px";T.style.left=V.diagramContainer.offsetLeft+V.diagramContainer.offsetWidth-T.offsetWidth+"px";T.style.top=da.style.top;
+V.titlebar.appendChild(H);ia.appendChild(V.titlebar)}H=V.menus.get("viewZoom");var P="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,T="1"==urlParams.sketch?document.createElement("div"):null,S="1"==urlParams.sketch?document.createElement("div"):null,da="1"==urlParams.sketch?document.createElement("div"):null,R=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();L.refresh();L.view.validateBackground()});V.addListener("darkModeChanged",R);V.addListener("sketchModeChanged",
+R);var ma=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)da.style.left="10px",da.style.top="10px",S.style.left="10px",S.style.top="60px",T.style.top="10px",T.style.right="12px",T.style.left="",V.diagramContainer.setAttribute("data-bounds",V.diagramContainer.style.top+" "+V.diagramContainer.style.left+" "+V.diagramContainer.style.width+" "+V.diagramContainer.style.height),V.diagramContainer.style.top="0px",V.diagramContainer.style.left="0px",V.diagramContainer.style.bottom="0px",V.diagramContainer.style.right=
+"0px",V.diagramContainer.style.width="",V.diagramContainer.style.height="";else{var va=V.diagramContainer.getAttribute("data-bounds");if(null!=va){V.diagramContainer.style.background="transparent";V.diagramContainer.removeAttribute("data-bounds");var ya=L.getGraphBounds();va=va.split(" ");V.diagramContainer.style.top=va[0];V.diagramContainer.style.left=va[1];V.diagramContainer.style.width=ya.width+50+"px";V.diagramContainer.style.height=ya.height+46+"px";V.diagramContainer.style.bottom="";V.diagramContainer.style.right=
+"";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",rect:V.diagramContainer.getBoundingClientRect()}),"*");V.refresh()}da.style.left=V.diagramContainer.offsetLeft+"px";da.style.top=V.diagramContainer.offsetTop-da.offsetHeight-4+"px";S.style.display="";S.style.left=V.diagramContainer.offsetLeft-S.offsetWidth-4+"px";S.style.top=V.diagramContainer.offsetTop+"px";T.style.left=V.diagramContainer.offsetLeft+V.diagramContainer.offsetWidth-T.offsetWidth+"px";T.style.top=da.style.top;
T.style.right="";V.bottomResizer.style.left=V.diagramContainer.offsetLeft+(V.diagramContainer.offsetWidth-V.bottomResizer.offsetWidth)/2+"px";V.bottomResizer.style.top=V.diagramContainer.offsetTop+V.diagramContainer.offsetHeight-V.bottomResizer.offsetHeight/2-1+"px";V.rightResizer.style.left=V.diagramContainer.offsetLeft+V.diagramContainer.offsetWidth-V.rightResizer.offsetWidth/2-1+"px";V.rightResizer.style.top=V.diagramContainer.offsetTop+(V.diagramContainer.offsetHeight-V.bottomResizer.offsetHeight)/
-2+"px"}V.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";V.rightResizer.style.visibility=V.bottomResizer.style.visibility;W.style.display="none";da.style.visibility="";T.style.visibility=""}),ra=mxUtils.bind(this,function(){M.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ma()});P=mxUtils.bind(this,
-function(){ra();b(V,!0);V.initFormatWindow();var va=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(va.x+va.width+4,va.y)});V.addListener("inlineFullscreenChanged",ra);V.addListener("editInlineStart",P);"1"==urlParams.embedInline&&V.addListener("darkModeChanged",P);V.addListener("editInlineStop",mxUtils.bind(this,function(va){V.diagramContainer.style.width="10px";V.diagramContainer.style.height="10px";V.diagramContainer.style.border="";V.bottomResizer.style.visibility=
-"hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";R.style.display="none"}));if(null!=V.hoverIcons){var xa=V.hoverIcons.update;V.hoverIcons.update=function(){J.freehand.isDrawing()||xa.apply(this,arguments)}}if(null!=J.freehand){var ta=J.freehand.createStyle;J.freehand.createStyle=function(va){return ta.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){R.className="geToolbarContainer";T.className="geToolbarContainer";da.className=
-"geToolbarContainer";W.className="geToolbarContainer";V.picker=R;var Aa=!1;"1"!=urlParams.embed&&"atlassian"!=V.getServiceName()&&(mxEvent.addListener(W,"mouseenter",function(){V.statusContainer.style.display="inline-block"}),mxEvent.addListener(W,"mouseleave",function(){Aa||(V.statusContainer.style.display="none")}));var Ca=mxUtils.bind(this,function(va){null!=V.notificationBtn&&(null!=va?V.notificationBtn.setAttribute("title",va):V.notificationBtn.removeAttribute("title"))});W.style.visibility=
-20>W.clientWidth?"hidden":"";V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus());if("1"!=urlParams.embed&&"atlassian"!=V.getServiceName())if(V.statusContainer.style.display="inline-block",Aa=!0,1==V.statusContainer.children.length&&""==V.editor.getStatus())W.style.visibility="hidden";else{if(0==V.statusContainer.children.length||1==V.statusContainer.children.length&&"function"===typeof V.statusContainer.firstChild.getAttribute&&null==V.statusContainer.firstChild.getAttribute("class")){var va=
+2+"px"}V.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";V.rightResizer.style.visibility=V.bottomResizer.style.visibility;ea.style.display="none";da.style.visibility="";T.style.visibility=""}),ra=mxUtils.bind(this,function(){M.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ma()});R=mxUtils.bind(this,
+function(){ra();b(V,!0);V.initFormatWindow();var va=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(va.x+va.width+4,va.y)});V.addListener("inlineFullscreenChanged",ra);V.addListener("editInlineStart",R);"1"==urlParams.embedInline&&V.addListener("darkModeChanged",R);V.addListener("editInlineStop",mxUtils.bind(this,function(va){V.diagramContainer.style.width="10px";V.diagramContainer.style.height="10px";V.diagramContainer.style.border="";V.bottomResizer.style.visibility=
+"hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";S.style.display="none"}));if(null!=V.hoverIcons){var xa=V.hoverIcons.update;V.hoverIcons.update=function(){L.freehand.isDrawing()||xa.apply(this,arguments)}}if(null!=L.freehand){var ta=L.freehand.createStyle;L.freehand.createStyle=function(va){return ta.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){S.className="geToolbarContainer";T.className="geToolbarContainer";da.className=
+"geToolbarContainer";ea.className="geToolbarContainer";V.picker=S;var Aa=!1;"1"!=urlParams.embed&&"atlassian"!=V.getServiceName()&&(mxEvent.addListener(ea,"mouseenter",function(){V.statusContainer.style.display="inline-block"}),mxEvent.addListener(ea,"mouseleave",function(){Aa||(V.statusContainer.style.display="none")}));var Ca=mxUtils.bind(this,function(va){null!=V.notificationBtn&&(null!=va?V.notificationBtn.setAttribute("title",va):V.notificationBtn.removeAttribute("title"))});ea.style.visibility=
+20>ea.clientWidth?"hidden":"";V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus());if("1"!=urlParams.embed&&"atlassian"!=V.getServiceName())if(V.statusContainer.style.display="inline-block",Aa=!0,1==V.statusContainer.children.length&&""==V.editor.getStatus())ea.style.visibility="hidden";else{if(0==V.statusContainer.children.length||1==V.statusContainer.children.length&&"function"===typeof V.statusContainer.firstChild.getAttribute&&null==V.statusContainer.firstChild.getAttribute("class")){var va=
null!=V.statusContainer.firstChild&&"function"===typeof V.statusContainer.firstChild.getAttribute?V.statusContainer.firstChild.getAttribute("title"):V.editor.getStatus();Ca(va);var ya=V.getCurrentFile();ya=null!=ya?ya.savingStatusKey:DrawioFile.prototype.savingStatusKey;va==mxResources.get(ya)+"..."?(V.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(ya))+'..."src="'+Editor.tailSpin+'">',V.statusContainer.style.display="inline-block",Aa=!0):6<V.buttonContainer.clientWidth&&
-(V.statusContainer.style.display="none",Aa=!1)}else V.statusContainer.style.display="inline-block",Ca(null),Aa=!0;W.style.visibility=20>W.clientWidth&&!Aa?"hidden":""}}));pa=N("diagram",null,Editor.menuImage);pa.style.boxShadow="none";pa.style.padding="6px";pa.style.margin="0px";da.appendChild(pa);mxEvent.disableContextMenu(pa);mxEvent.addGestureListeners(pa,mxUtils.bind(this,function(va){(mxEvent.isShiftDown(va)||mxEvent.isAltDown(va)||mxEvent.isMetaDown(va)||mxEvent.isControlDown(va)||mxEvent.isPopupTrigger(va))&&
+(V.statusContainer.style.display="none",Aa=!1)}else V.statusContainer.style.display="inline-block",Ca(null),Aa=!0;ea.style.visibility=20>ea.clientWidth&&!Aa?"hidden":""}}));pa=Q("diagram",null,Editor.menuImage);pa.style.boxShadow="none";pa.style.padding="6px";pa.style.margin="0px";da.appendChild(pa);mxEvent.disableContextMenu(pa);mxEvent.addGestureListeners(pa,mxUtils.bind(this,function(va){(mxEvent.isShiftDown(va)||mxEvent.isAltDown(va)||mxEvent.isMetaDown(va)||mxEvent.isControlDown(va)||mxEvent.isPopupTrigger(va))&&
this.appIconClicked(va)}),null,null);V.statusContainer.style.position="";V.statusContainer.style.display="none";V.statusContainer.style.margin="0px";V.statusContainer.style.padding="6px 0px";V.statusContainer.style.maxWidth=Math.min(n-240,280)+"px";V.statusContainer.style.display="inline-block";V.statusContainer.style.textOverflow="ellipsis";V.buttonContainer.style.position="";V.buttonContainer.style.paddingRight="0px";V.buttonContainer.style.display="inline-block";var Ba=document.createElement("a");
-Ba.style.padding="0px";Ba.style.boxShadow="none";Ba.className="geMenuItem";Ba.style.display="inline-block";Ba.style.width="40px";Ba.style.height="12px";Ba.style.marginBottom="-2px";Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Ba.style.backgroundPosition="top center";Ba.style.backgroundRepeat="no-repeat";Ba.setAttribute("title","Minimize");var sa=!1,Oa=mxUtils.bind(this,function(){R.innerText="";if(!sa){var va=function(Ja,Pa,Ya){Ja=Y("",Ja.funct,null,Pa,Ja,Ya);Ja.style.width=
-"40px";Ja.style.opacity="0.7";return ya(Ja,null,"pointer")},ya=function(Ja,Pa,Ya){null!=Pa&&Ja.setAttribute("title",Pa);Ja.style.cursor=null!=Ya?Ya:"default";Ja.style.margin="2px 0px";R.appendChild(Ja);mxUtils.br(R);return Ja};ya(V.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)");ya(V.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"));ya(V.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ya(V.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var Ja=new mxCell("",new mxGeometry(0,0,J.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");
-Ja.geometry.setTerminalPoint(new mxPoint(0,0),!0);Ja.geometry.setTerminalPoint(new mxPoint(Ja.geometry.width,0),!1);Ja.geometry.points=[];Ja.geometry.relative=!0;Ja.edge=!0;ya(V.sidebar.createEdgeTemplateFromCells([Ja],Ja.geometry.width,Ja.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));Ja=Ja.clone();Ja.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";Ja.geometry.width=J.defaultEdgeLength+20;Ja.geometry.setTerminalPoint(new mxPoint(0,
+Ba.style.padding="0px";Ba.style.boxShadow="none";Ba.className="geMenuItem";Ba.style.display="inline-block";Ba.style.width="40px";Ba.style.height="12px";Ba.style.marginBottom="-2px";Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Ba.style.backgroundPosition="top center";Ba.style.backgroundRepeat="no-repeat";Ba.setAttribute("title","Minimize");var sa=!1,Pa=mxUtils.bind(this,function(){S.innerText="";if(!sa){var va=function(Ja,Qa,Za){Ja=X("",Ja.funct,null,Qa,Ja,Za);Ja.style.width=
+"40px";Ja.style.opacity="0.7";return ya(Ja,null,"pointer")},ya=function(Ja,Qa,Za){null!=Qa&&Ja.setAttribute("title",Qa);Ja.style.cursor=null!=Za?Za:"default";Ja.style.margin="2px 0px";S.appendChild(Ja);mxUtils.br(S);return Ja};ya(V.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)");ya(V.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"));ya(V.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ya(V.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var Ja=new mxCell("",new mxGeometry(0,0,L.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");
+Ja.geometry.setTerminalPoint(new mxPoint(0,0),!0);Ja.geometry.setTerminalPoint(new mxPoint(Ja.geometry.width,0),!1);Ja.geometry.points=[];Ja.geometry.relative=!0;Ja.edge=!0;ya(V.sidebar.createEdgeTemplateFromCells([Ja],Ja.geometry.width,Ja.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));Ja=Ja.clone();Ja.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";Ja.geometry.width=L.defaultEdgeLength+20;Ja.geometry.setTerminalPoint(new mxPoint(0,
20),!0);Ja.geometry.setTerminalPoint(new mxPoint(Ja.geometry.width,20),!1);Ja=ya(V.sidebar.createEdgeTemplateFromCells([Ja],Ja.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));Ja.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");Ja.style.paddingBottom="14px";Ja.style.marginBottom="14px"})();va(V.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var Na=V.actions.get("toggleShapes");va(Na,mxResources.get("shapes")+
-" ("+Na.shortcut+")",O);pa=N("table",null,Editor.calendarImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer");pa=N("insert",null,Editor.plusImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer")}"1"!=urlParams.embedInline&&R.appendChild(Ba)});mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){sa?(mxUtils.setPrefixedStyle(R.style,
-"transform","translate(0, -50%)"),R.style.padding="8px 6px 4px",R.style.top="50%",R.style.bottom="",R.style.height="",Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Ba.style.width="40px",Ba.style.height="12px",Ba.setAttribute("title","Minimize"),sa=!1,Oa()):(R.innerText="",R.appendChild(Ba),mxUtils.setPrefixedStyle(R.style,"transform","translate(0, 0)"),R.style.top="",R.style.bottom="12px",R.style.padding="0px",R.style.height="24px",Ba.style.height="24px",Ba.style.backgroundImage=
-"url("+Editor.plusImage+")",Ba.setAttribute("title",mxResources.get("insert")),Ba.style.width="24px",sa=!0)}));Oa();V.addListener("darkModeChanged",Oa);V.addListener("sketchModeChanged",Oa)}else V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus())}));if(null!=H){var Ta=function(va){mxEvent.isShiftDown(va)?(V.hideCurrentMenu(),V.actions.get("smartFit").funct(),mxEvent.consume(va)):mxEvent.isAltDown(va)&&(V.hideCurrentMenu(),V.actions.get("customZoom").funct(),
-mxEvent.consume(va))},Sa=V.actions.get("zoomIn"),$a=V.actions.get("zoomOut"),Ga=V.actions.get("resetView");P=V.actions.get("fullscreen");var eb=V.actions.get("undo"),bb=V.actions.get("redo"),z=Y("",eb.funct,null,mxResources.get("undo")+" ("+eb.shortcut+")",eb,Editor.undoImage),L=Y("",bb.funct,null,mxResources.get("redo")+" ("+bb.shortcut+")",bb,Editor.redoImage),M=Y("",P.funct,null,mxResources.get("fullscreen"),P,Editor.fullscreenImage);if(null!=T){Ga=function(){ua.style.display=null!=V.pages&&("0"!=
-urlParams.pages||1<V.pages.length||Editor.pagesVisible)?"inline-block":"none"};var U=function(){ua.innerText="";if(null!=V.currentPage){mxUtils.write(ua,V.currentPage.getName());var va=null!=V.pages?V.pages.length:1,ya=V.getPageIndex(V.currentPage);ya=null!=ya?ya+1:1;var Na=V.currentPage.getId();ua.setAttribute("title",V.currentPage.getName()+" ("+ya+"/"+va+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var X=V.actions.get("delete"),fa=Y("",X.funct,null,mxResources.get("delete"),X,Editor.trashImage);
-fa.style.opacity="0.1";da.appendChild(fa);X.addListener("stateChanged",function(){fa.style.opacity=X.enabled?"":"0.1"});var na=function(){z.style.display=0<V.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";L.style.display=z.style.display;z.style.opacity=eb.enabled?"":"0.1";L.style.opacity=bb.enabled?"":"0.1"};da.appendChild(z);da.appendChild(L);eb.addListener("stateChanged",na);bb.addListener("stateChanged",na);na();var ua=this.createPageMenuTab(!1,!0);ua.style.display="none";
+" ("+Na.shortcut+")",P);pa=Q("table",null,Editor.calendarImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer");pa=Q("insert",null,Editor.plusImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer")}"1"!=urlParams.embedInline&&S.appendChild(Ba)});mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){sa?(mxUtils.setPrefixedStyle(S.style,
+"transform","translate(0, -50%)"),S.style.padding="8px 6px 4px",S.style.top="50%",S.style.bottom="",S.style.height="",Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Ba.style.width="40px",Ba.style.height="12px",Ba.setAttribute("title","Minimize"),sa=!1,Pa()):(S.innerText="",S.appendChild(Ba),mxUtils.setPrefixedStyle(S.style,"transform","translate(0, 0)"),S.style.top="",S.style.bottom="12px",S.style.padding="0px",S.style.height="24px",Ba.style.height="24px",Ba.style.backgroundImage=
+"url("+Editor.plusImage+")",Ba.setAttribute("title",mxResources.get("insert")),Ba.style.width="24px",sa=!0)}));Pa();V.addListener("darkModeChanged",Pa);V.addListener("sketchModeChanged",Pa)}else V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus())}));if(null!=H){var Ta=function(va){mxEvent.isShiftDown(va)?(V.hideCurrentMenu(),V.actions.get("smartFit").funct(),mxEvent.consume(va)):mxEvent.isAltDown(va)&&(V.hideCurrentMenu(),V.actions.get("customZoom").funct(),
+mxEvent.consume(va))},Oa=V.actions.get("zoomIn"),Xa=V.actions.get("zoomOut"),Ga=V.actions.get("resetView");R=V.actions.get("fullscreen");var eb=V.actions.get("undo"),bb=V.actions.get("redo"),z=X("",eb.funct,null,mxResources.get("undo")+" ("+eb.shortcut+")",eb,Editor.undoImage),K=X("",bb.funct,null,mxResources.get("redo")+" ("+bb.shortcut+")",bb,Editor.redoImage),M=X("",R.funct,null,mxResources.get("fullscreen"),R,Editor.fullscreenImage);if(null!=T){Ga=function(){ua.style.display=null!=V.pages&&("0"!=
+urlParams.pages||1<V.pages.length||Editor.pagesVisible)?"inline-block":"none"};var U=function(){ua.innerText="";if(null!=V.currentPage){mxUtils.write(ua,V.currentPage.getName());var va=null!=V.pages?V.pages.length:1,ya=V.getPageIndex(V.currentPage);ya=null!=ya?ya+1:1;var Na=V.currentPage.getId();ua.setAttribute("title",V.currentPage.getName()+" ("+ya+"/"+va+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var W=V.actions.get("delete"),ha=X("",W.funct,null,mxResources.get("delete"),W,Editor.trashImage);
+ha.style.opacity="0.1";da.appendChild(ha);W.addListener("stateChanged",function(){ha.style.opacity=W.enabled?"":"0.1"});var na=function(){z.style.display=0<V.editor.undoManager.history.length||L.isEditing()?"inline-block":"none";K.style.display=z.style.display;z.style.opacity=eb.enabled?"":"0.1";K.style.opacity=bb.enabled?"":"0.1"};da.appendChild(z);da.appendChild(K);eb.addListener("stateChanged",na);bb.addListener("stateChanged",na);na();var ua=this.createPageMenuTab(!1,!0);ua.style.display="none";
ua.style.position="";ua.style.marginLeft="";ua.style.top="";ua.style.left="";ua.style.height="100%";ua.style.lineHeight="";ua.style.borderStyle="none";ua.style.padding="3px 0";ua.style.margin="0px";ua.style.background="";ua.style.border="";ua.style.boxShadow="none";ua.style.verticalAlign="top";ua.style.width="auto";ua.style.maxWidth="160px";ua.style.position="relative";ua.style.padding="6px";ua.style.textOverflow="ellipsis";ua.style.opacity="0.8";T.appendChild(ua);V.editor.addListener("pagesPatched",
-U);V.editor.addListener("pageSelected",U);V.editor.addListener("pageRenamed",U);V.editor.addListener("fileLoaded",U);U();V.addListener("fileDescriptorChanged",Ga);V.addListener("pagesVisibleChanged",Ga);V.editor.addListener("pagesPatched",Ga);Ga();Ga=Y("",$a.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",$a,Editor.zoomOutImage);T.appendChild(Ga);var pa=S.addMenu("100%",H.funct);pa.setAttribute("title",mxResources.get("zoom"));pa.innerHTML="100%";pa.style.display="inline-block";
-pa.style.color="inherit";pa.style.cursor="pointer";pa.style.textAlign="center";pa.style.whiteSpace="nowrap";pa.style.paddingRight="10px";pa.style.textDecoration="none";pa.style.verticalAlign="top";pa.style.padding="6px 0";pa.style.fontSize="14px";pa.style.width="40px";pa.style.opacity="0.4";T.appendChild(pa);H=Y("",Sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Sa,Editor.zoomInImage);T.appendChild(H);P.visible&&(T.appendChild(M),mxEvent.addListener(document,"fullscreenchange",
-function(){M.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(H=V.actions.get("exit"),T.appendChild(Y("",H.funct,null,mxResources.get("exit"),H,Editor.closeImage)));V.tabContainer.style.visibility="hidden";W.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;";
-da.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;";T.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;";u.appendChild(da);u.appendChild(T);R.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-mxClient.IS_POINTER&&(R.style.touchAction="none");u.appendChild(R);window.setTimeout(function(){mxUtils.setPrefixedStyle(R.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(u)}else{var za=Y("",Ta,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",Ga,Editor.zoomFitImage);W.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";pa=S.addMenu("100%",
+U);V.editor.addListener("pageSelected",U);V.editor.addListener("pageRenamed",U);V.editor.addListener("fileLoaded",U);U();V.addListener("fileDescriptorChanged",Ga);V.addListener("pagesVisibleChanged",Ga);V.editor.addListener("pagesPatched",Ga);Ga();Ga=X("",Xa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",Xa,Editor.zoomOutImage);T.appendChild(Ga);var pa=N.addMenu("100%",H.funct);pa.setAttribute("title",mxResources.get("zoom"));pa.innerHTML="100%";pa.style.display="inline-block";
+pa.style.color="inherit";pa.style.cursor="pointer";pa.style.textAlign="center";pa.style.whiteSpace="nowrap";pa.style.paddingRight="10px";pa.style.textDecoration="none";pa.style.verticalAlign="top";pa.style.padding="6px 0";pa.style.fontSize="14px";pa.style.width="40px";pa.style.opacity="0.4";T.appendChild(pa);H=X("",Oa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Oa,Editor.zoomInImage);T.appendChild(H);R.visible&&(T.appendChild(M),mxEvent.addListener(document,"fullscreenchange",
+function(){M.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(H=V.actions.get("exit"),T.appendChild(X("",H.funct,null,mxResources.get("exit"),H,Editor.closeImage)));V.tabContainer.style.visibility="hidden";ea.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;";
+da.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;";T.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;";u.appendChild(da);u.appendChild(T);S.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+mxClient.IS_POINTER&&(S.style.touchAction="none");u.appendChild(S);window.setTimeout(function(){mxUtils.setPrefixedStyle(S.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(u)}else{var za=X("",Ta,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",Ga,Editor.zoomFitImage);ea.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";pa=N.addMenu("100%",
H.funct);pa.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");pa.style.whiteSpace="nowrap";pa.style.paddingRight="10px";pa.style.textDecoration="none";pa.style.textDecoration="none";pa.style.overflow="hidden";pa.style.visibility="hidden";pa.style.textAlign="center";pa.style.cursor="pointer";pa.style.height=parseInt(V.tabContainerHeight)-1+"px";pa.style.lineHeight=parseInt(V.tabContainerHeight)+1+"px";pa.style.position="absolute";pa.style.display="block";pa.style.fontSize="12px";pa.style.width=
"59px";pa.style.right="0px";pa.style.bottom="0px";pa.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";pa.style.backgroundPosition="right 6px center";pa.style.backgroundRepeat="no-repeat";u.appendChild(pa)}(function(va){mxEvent.addListener(va,"click",Ta);var ya=mxUtils.bind(this,function(){va.innerText="";mxUtils.write(va,Math.round(100*V.editor.graph.view.scale)+"%")});V.editor.graph.view.addListener(mxEvent.EVENT_SCALE,ya);V.editor.addListener("resetGraphView",ya);V.editor.addListener("pageSelected",
-ya)})(pa);var Da=V.setGraphEnabled;V.setGraphEnabled=function(){Da.apply(this,arguments);null!=this.tabContainer&&(pa.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==T?this.tabContainerHeight+"px":"0px")}}u.appendChild(W);u.appendChild(V.diagramContainer);ja.appendChild(u);V.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&b(this,!0);null==T&&u.appendChild(V.tabContainer);
+ya)})(pa);var Da=V.setGraphEnabled;V.setGraphEnabled=function(){Da.apply(this,arguments);null!=this.tabContainer&&(pa.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==T?this.tabContainerHeight+"px":"0px")}}u.appendChild(ea);u.appendChild(V.diagramContainer);ia.appendChild(u);V.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&b(this,!0);null==T&&u.appendChild(V.tabContainer);
var Ma=null;ka();mxEvent.addListener(window,"resize",function(){ka();null!=V.sidebarWindow&&V.sidebarWindow.window.fit();null!=V.formatWindow&&V.formatWindow.window.fit();null!=V.actions.outlineWindow&&V.actions.outlineWindow.window.fit();null!=V.actions.layersWindow&&V.actions.layersWindow.window.fit();null!=V.menus.tagsWindow&&V.menus.tagsWindow.window.fit();null!=V.menus.findWindow&&V.menus.findWindow.window.fit();null!=V.menus.findReplaceWindow&&V.menus.findReplaceWindow.window.fit()});if("1"==
-urlParams.embedInline){document.body.style.cursor="text";R.style.transform="";mxEvent.addGestureListeners(V.diagramContainer.parentNode,function(va){mxEvent.getSource(va)==V.diagramContainer.parentNode&&(V.embedExitPoint=new mxPoint(mxEvent.getClientX(va),mxEvent.getClientY(va)),V.sendEmbeddedSvgExport())});ja=document.createElement("div");ja.style.position="absolute";ja.style.width="10px";ja.style.height="10px";ja.style.borderRadius="5px";ja.style.border="1px solid gray";ja.style.background="#ffffff";
-ja.style.cursor="row-resize";V.diagramContainer.parentNode.appendChild(ja);V.bottomResizer=ja;var La=null,Ua=null,Ra=null,Fa=null;mxEvent.addGestureListeners(ja,function(va){Fa=parseInt(V.diagramContainer.style.height);Ua=mxEvent.getClientY(va);J.popupMenuHandler.hideMenu();mxEvent.consume(va)});ja=ja.cloneNode(!1);ja.style.cursor="col-resize";V.diagramContainer.parentNode.appendChild(ja);V.rightResizer=ja;mxEvent.addGestureListeners(ja,function(va){Ra=parseInt(V.diagramContainer.style.width);La=
-mxEvent.getClientX(va);J.popupMenuHandler.hideMenu();mxEvent.consume(va)});mxEvent.addGestureListeners(document.body,null,function(va){var ya=!1;null!=La&&(V.diagramContainer.style.width=Math.max(20,Ra+mxEvent.getClientX(va)-La)+"px",ya=!0);null!=Ua&&(V.diagramContainer.style.height=Math.max(20,Fa+mxEvent.getClientY(va)-Ua)+"px",ya=!0);ya&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:V.diagramContainer.getBoundingClientRect()}),
-"*"),ma(),V.refresh())},function(va){null==La&&null==Ua||mxEvent.consume(va);Ua=La=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";V.bottomResizer.style.visibility="hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";R.style.display="none"}"1"==urlParams.prefetchFonts&&V.editor.loadFonts()}}};
+urlParams.embedInline){document.body.style.cursor="text";S.style.transform="";mxEvent.addGestureListeners(V.diagramContainer.parentNode,function(va){mxEvent.getSource(va)==V.diagramContainer.parentNode&&(V.embedExitPoint=new mxPoint(mxEvent.getClientX(va),mxEvent.getClientY(va)),V.sendEmbeddedSvgExport())});ia=document.createElement("div");ia.style.position="absolute";ia.style.width="10px";ia.style.height="10px";ia.style.borderRadius="5px";ia.style.border="1px solid gray";ia.style.background="#ffffff";
+ia.style.cursor="row-resize";V.diagramContainer.parentNode.appendChild(ia);V.bottomResizer=ia;var La=null,Ua=null,Sa=null,Fa=null;mxEvent.addGestureListeners(ia,function(va){Fa=parseInt(V.diagramContainer.style.height);Ua=mxEvent.getClientY(va);L.popupMenuHandler.hideMenu();mxEvent.consume(va)});ia=ia.cloneNode(!1);ia.style.cursor="col-resize";V.diagramContainer.parentNode.appendChild(ia);V.rightResizer=ia;mxEvent.addGestureListeners(ia,function(va){Sa=parseInt(V.diagramContainer.style.width);La=
+mxEvent.getClientX(va);L.popupMenuHandler.hideMenu();mxEvent.consume(va)});mxEvent.addGestureListeners(document.body,null,function(va){var ya=!1;null!=La&&(V.diagramContainer.style.width=Math.max(20,Sa+mxEvent.getClientX(va)-La)+"px",ya=!0);null!=Ua&&(V.diagramContainer.style.height=Math.max(20,Fa+mxEvent.getClientY(va)-Ua)+"px",ya=!0);ya&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:V.diagramContainer.getBoundingClientRect()}),
+"*"),ma(),V.refresh())},function(va){null==La&&null==Ua||mxEvent.consume(va);Ua=La=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";V.bottomResizer.style.visibility="hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";S.style.display="none"}"1"==urlParams.prefetchFonts&&V.editor.loadFonts()}}};
(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,e,k,n,D,t,E){this.file=b;this.id=e;this.content=k;this.modifiedDate=n;this.createdDate=D;this.isResolved=t;this.user=E;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,k,n,D){e()};DrawioComment.prototype.editComment=function(b,e,k){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DrawioUser=function(b,e,k,n,D){this.id=b;this.email=e;this.displayName=k;this.pictureUrl=n;this.locale=D};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nbeta=beta\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\nrealtimeCollaboration=Real-Time Collaboration\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareCursor=Share Mouse Cursor\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowRemoteCursors=Show Remote Mouse Cursors\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\ncreateODFile=Create OneDrive File\npickGDriveFile=Pick Google Drive File\ncreateGDriveFile=Create Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\nnotInOffline=Not supported while offline\nnotInDesktop=Not supported in Desktop App\nconfConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.\nconfACleanOldVerStarted=Cleaning old diagram draft versions started\nconfACleanOldVerDone=Cleaning old diagram draft versions finished\nconfACleaningFile=Cleaning diagram draft "{1}" old versions\nconfAFileCleaned=Cleaning diagram draft "{1}" done\nconfAFileCleanFailed=Cleaning diagram draft "{1}" failed\nconfACleanOnly=Clean Diagram Drafts Only\nbrush=Brush\nopenDevTools=Open Developer Tools\nautoBkp=Automatic Backup\nconfAIgnoreCollectErr=Ignore collecting current pages errors\ndrafts=Drafts\ndraftSaveInt=Draft save interval [sec] (0 to disable)\npluginsDisabled=External plugins disabled.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,e,k){this.init(b,e,k)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
@@ -4054,7 +4054,7 @@ this.graphConfig.responsive:this.responsive)&&!this.zoomEnabled&&!mxClient.NO_FO
this.graphConfig["toolbar-nohide"]&&(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);this.xmlNode!=e&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(I){return d.getImageUrl(I)};mxClient.IS_SVG&&this.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==this.xmlNode.nodeName){var f=this.xmlNode.getElementsByTagName("diagram");if(0<
f.length){if(null!=this.pageId)for(var g=0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var m=this.graph.getGlobalVariable;d=this;this.graph.getGlobalVariable=function(I){var G=f[d.currentPage];return"page"==I?G.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==I?d.currentPage+1:"pagecount"==I?f.length:m.apply(this,arguments)}}}this.diagrams=[];var q=null;this.selectPage=function(I){this.handlingResize||(this.currentPage=mxUtils.mod(I,this.diagrams.length),
this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};this.selectPageById=function(I){I=this.getIndexById(I);var G=0<=I;G&&this.selectPage(I);return G};g=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=q&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),q=this.xmlNode)});var y=this.graph.setBackgroundImage;this.graph.setBackgroundImage=function(I){if(null!=I&&Graph.isPageLink(I.src)){var G=I.src,
-aa=G.indexOf(",");0<aa&&(aa=d.getIndexById(G.substring(aa+1)),0<=aa&&(I=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[aa])),I.originalSrc=G))}y.apply(this,arguments)};var F=this.graph.getGraphBounds;this.graph.getGraphBounds=function(I){var G=F.apply(this,arguments);I=this.backgroundImage;if(null!=I){var aa=this.view.translate,ca=this.view.scale;G=mxRectangle.fromRectangle(G);G.add(new mxRectangle((aa.x+I.x)*ca,(aa.y+I.y)*ca,I.width*ca,I.height*ca))}return G};this.addListener("xmlNodeChanged",
+Z=G.indexOf(",");0<Z&&(Z=d.getIndexById(G.substring(Z+1)),0<=Z&&(I=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[Z])),I.originalSrc=G))}y.apply(this,arguments)};var F=this.graph.getGraphBounds;this.graph.getGraphBounds=function(I){var G=F.apply(this,arguments);I=this.backgroundImage;if(null!=I){var Z=this.view.translate,ca=this.view.scale;G=mxRectangle.fromRectangle(G);G.add(new mxRectangle((Z.x+I.x)*ca,(Z.y+I.y)*ca,I.width*ca,I.height*ca))}return G};this.addListener("xmlNodeChanged",
g);g();urlParams.page=d.currentPage;g=null;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.view.scale=this.graphConfig.zoom||1,g=this.setLayersVisible(),this.responsive||(this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.graph.panningHandler.isForcePanningEvent=function(I){return!mxEvent.isPopupTrigger(I.getEvent())&&"auto"==
this.graph.container.style.overflow},this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.panningHandler.ignoreCell=!0,this.graph.panningHandler.usePopupTrigger=!1,this.graph.panningHandler.pinchEnabled=!1);this.graph.setPanning(!1);null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&b.setAttribute("title",this.graphConfig.title);this.responsive||this.addSizeHandler();!this.showLayers(this.graph)||this.forceCenter||this.layersEnabled&&
!this.autoCrop||this.crop();this.addClickHandler(this.graph);this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};null!=g&&this.setLayersVisible(g);this.graph.customLinkClicked=function(I){if(Graph.isPageLink(I)){var G=I.indexOf(",");d.selectPageById(I.substring(G+1))||alert(mxResources.get("pageNotFound")||"Page not found")}else this.handleCustomLink(I);return!0};var C=this.graph.foldTreeCell;this.graph.foldTreeCell=
@@ -4077,26 +4077,26 @@ null!=d||0!=this.graphConfig.resize||""==b.style.height?(d=null!=d?d:new mxPoint
GraphViewer.prototype.crop=function(){var b=this.graph,e=b.getGraphBounds(),k=b.border,n=b.view.scale;b.view.setTranslate(null!=e.x?Math.floor(b.view.translate.x-e.x/n+k):k,null!=e.y?Math.floor(b.view.translate.y-e.y/n+k):k)};GraphViewer.prototype.updateContainerWidth=function(b,e){b.style.width=e+"px"};GraphViewer.prototype.updateContainerHeight=function(b,e){if(this.forceCenter||this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||8==document.documentMode)b.style.height=e+"px"};
GraphViewer.prototype.showLayers=function(b,e){var k=this.graphConfig.layers;k=null!=k&&0<k.length?k.split(" "):[];var n=this.graphConfig.layerIds,D=null!=n&&0<n.length,t=!1;if(0<k.length||D||null!=e){e=null!=e?e.getModel():null;b=b.getModel();b.beginUpdate();try{var E=b.getChildCount(b.root);if(null==e){e=!1;t={};if(D)for(var d=0;d<n.length;d++){var f=b.getCell(n[d]);null!=f&&(e=!0,t[f.id]=!0)}else for(d=0;d<k.length;d++)f=b.getChildAt(b.root,parseInt(k[d])),null!=f&&(e=!0,t[f.id]=!0);for(d=0;e&&
d<E;d++)f=b.getChildAt(b.root,d),b.setVisible(f,t[f.id]||!1)}else for(d=0;d<E;d++)b.setVisible(b.getChildAt(b.root,d),e.isVisible(e.getChildAt(e.root,d)))}finally{b.endUpdate()}t=!0}return t};
-GraphViewer.prototype.addToolbar=function(){function b(ea,ka,ja,V){var J=document.createElement("div");J.style.borderRight="1px solid #d0d0d0";J.style.padding="3px 6px 3px 6px";mxEvent.addListener(J,"click",ea);null!=ja&&J.setAttribute("title",ja);J.style.display="inline-block";ea=document.createElement("img");ea.setAttribute("border","0");ea.setAttribute("src",ka);ea.style.width="18px";null==V||V?(mxEvent.addListener(J,"mouseenter",function(){J.style.backgroundColor="#ddd"}),mxEvent.addListener(J,
-"mouseleave",function(){J.style.backgroundColor="#eee"}),mxUtils.setOpacity(ea,60),J.style.cursor="pointer"):mxUtils.setOpacity(J,30);J.appendChild(ea);k.appendChild(J);m++;return J}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
-"border-box";k.style.whiteSpace="nowrap";k.style.textAlign="left";k.style.zIndex=this.toolbarZIndex;k.style.backgroundColor="#eee";k.style.height=this.toolbarHeight+"px";this.toolbar=k;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(k.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(k,30);var n=null,D=null,t=mxUtils.bind(this,function(ea){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setOpacity(k,0);n=null;D=window.setTimeout(mxUtils.bind(this,function(){k.style.display="none";D=null}),100)}),ea||200)}),E=mxUtils.bind(this,function(ea){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);k.style.display="";mxUtils.setOpacity(k,ea||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(ea){mxEvent.isTouchEvent(ea)||(E(30),t())}));mxEvent.addListener(k,
-mxClient.IS_POINTER?"pointermove":"mousemove",function(ea){mxEvent.consume(ea)});mxEvent.addListener(k,"mouseenter",mxUtils.bind(this,function(ea){E(100)}));mxEvent.addListener(k,"mousemove",mxUtils.bind(this,function(ea){E(100);mxEvent.consume(ea)}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(ea){mxEvent.isTouchEvent(ea)||E(30)}));var d=this.graph,f=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(ea,ka){this.startX=ka.getGraphX();
-this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(ea,ka){},mouseUp:function(ea,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,m=0,q=null,y=null,F=null,C=null,I=0;I<g.length;I++){var G=
-g[I];if("pages"==G){C=e.ownerDocument.createElement("div");C.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(C,70);var aa=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");aa.style.borderRightStyle="none";aa.style.paddingLeft="0px";aa.style.paddingRight="0px";k.appendChild(C);var ca=
-b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");ca.style.paddingLeft="0px";ca.style.paddingRight="0px";G=mxUtils.bind(this,function(){C.innerText="";mxUtils.write(C,this.currentPage+1+" / "+this.diagrams.length);C.style.display=1<this.diagrams.length?"inline-block":"none";aa.style.display=C.style.display;ca.style.display=C.style.display});this.addListener("graphChanged",G);G()}else if("zoom"==G)this.zoomEnabled&&(b(mxUtils.bind(this,
-function(){this.graph.zoomOut()}),Editor.zoomOutImage,mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==G){if(this.layersEnabled){var ba=this.graph.getModel(),
-Z=b(mxUtils.bind(this,function(ea){if(null!=q)q.parentNode.removeChild(q),q=null;else{q=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var ja=this.graph.getGraphBounds(),V=this.graph.view;0>ja.x||0>ja.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale}):null!=this.graph.originalViewState&&0<ja.x/V.scale+this.graph.originalViewState.translate.x-
-V.translate.x&&0<ja.y/V.scale+this.graph.originalViewState.translate.y-V.translate.y&&(V.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale})}}));mxEvent.addListener(q,"mouseleave",function(){q.parentNode.removeChild(q);q=null});ea=Z.getBoundingClientRect();q.style.width="140px";q.style.padding="2px 0px 2px 0px";q.style.border="1px solid #d0d0d0";
-q.style.backgroundColor="#eee";q.style.fontFamily=Editor.defaultHtmlFont;q.style.fontSize="11px";q.style.overflowY="auto";q.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";q.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(q,80);var ka=mxUtils.getDocumentScrollOrigin(document);q.style.left=ka.x+ea.left-1+"px";q.style.top=ka.y+ea.bottom-2+"px";document.body.appendChild(q)}}),Editor.layersImage,mxResources.get("layers")||"Layers");ba.addListener(mxEvent.CHANGE,function(){Z.style.display=
-1<ba.getChildCount(ba.root)?"inline-block":"none"});Z.style.display=1<ba.getChildCount(ba.root)?"inline-block":"none"}}else if("tags"==G){if(this.tagsEnabled){var qa=b(mxUtils.bind(this,function(ea){null==y&&(y=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),y.div.getElementsByTagName("div")[0].style.position="",y.div.style.maxHeight="160px",y.div.style.maxWidth="120px",y.div.style.padding="2px",y.div.style.overflow="auto",y.div.style.height="auto",y.div.style.position="fixed",
-y.div.style.fontFamily=Editor.defaultHtmlFont,y.div.style.fontSize="11px",y.div.style.backgroundColor="#eee",y.div.style.color="#000",y.div.style.border="1px solid #d0d0d0",y.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(y.div,80));if(null!=F)F.parentNode.removeChild(F),F=null;else{F=y.div;mxEvent.addListener(F,"mouseleave",function(){F.parentNode.removeChild(F);F=null});ea=qa.getBoundingClientRect();var ka=mxUtils.getDocumentScrollOrigin(document);F.style.left=ka.x+ea.left-1+"px";F.style.top=
-ka.y+ea.bottom-2+"px";document.body.appendChild(F);y.refresh()}}),Editor.tagsImage,mxResources.get("tags")||"Tags");ba.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==G?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&
+GraphViewer.prototype.addToolbar=function(){function b(fa,ka,ia,V){var L=document.createElement("div");L.style.borderRight="1px solid #d0d0d0";L.style.padding="3px 6px 3px 6px";mxEvent.addListener(L,"click",fa);null!=ia&&L.setAttribute("title",ia);L.style.display="inline-block";fa=document.createElement("img");fa.setAttribute("border","0");fa.setAttribute("src",ka);fa.style.width="18px";null==V||V?(mxEvent.addListener(L,"mouseenter",function(){L.style.backgroundColor="#ddd"}),mxEvent.addListener(L,
+"mouseleave",function(){L.style.backgroundColor="#eee"}),mxUtils.setOpacity(fa,60),L.style.cursor="pointer"):mxUtils.setOpacity(L,30);L.appendChild(fa);k.appendChild(L);m++;return L}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
+"border-box";k.style.whiteSpace="nowrap";k.style.textAlign="left";k.style.zIndex=this.toolbarZIndex;k.style.backgroundColor="#eee";k.style.height=this.toolbarHeight+"px";this.toolbar=k;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(k.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(k,30);var n=null,D=null,t=mxUtils.bind(this,function(fa){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,
+function(){mxUtils.setOpacity(k,0);n=null;D=window.setTimeout(mxUtils.bind(this,function(){k.style.display="none";D=null}),100)}),fa||200)}),E=mxUtils.bind(this,function(fa){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);k.style.display="";mxUtils.setOpacity(k,fa||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(fa){mxEvent.isTouchEvent(fa)||(E(30),t())}));mxEvent.addListener(k,
+mxClient.IS_POINTER?"pointermove":"mousemove",function(fa){mxEvent.consume(fa)});mxEvent.addListener(k,"mouseenter",mxUtils.bind(this,function(fa){E(100)}));mxEvent.addListener(k,"mousemove",mxUtils.bind(this,function(fa){E(100);mxEvent.consume(fa)}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(fa){mxEvent.isTouchEvent(fa)||E(30)}));var d=this.graph,f=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(fa,ka){this.startX=ka.getGraphX();
+this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(fa,ka){},mouseUp:function(fa,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,m=0,q=null,y=null,F=null,C=null,I=0;I<g.length;I++){var G=
+g[I];if("pages"==G){C=e.ownerDocument.createElement("div");C.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(C,70);var Z=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");Z.style.borderRightStyle="none";Z.style.paddingLeft="0px";Z.style.paddingRight="0px";k.appendChild(C);var ca=
+b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");ca.style.paddingLeft="0px";ca.style.paddingRight="0px";G=mxUtils.bind(this,function(){C.innerText="";mxUtils.write(C,this.currentPage+1+" / "+this.diagrams.length);C.style.display=1<this.diagrams.length?"inline-block":"none";Z.style.display=C.style.display;ca.style.display=C.style.display});this.addListener("graphChanged",G);G()}else if("zoom"==G)this.zoomEnabled&&(b(mxUtils.bind(this,
+function(){this.graph.zoomOut()}),Editor.zoomOutImage,mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==G){if(this.layersEnabled){var aa=this.graph.getModel(),
+Y=b(mxUtils.bind(this,function(fa){if(null!=q)q.parentNode.removeChild(q),q=null;else{q=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var ia=this.graph.getGraphBounds(),V=this.graph.view;0>ia.x||0>ia.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale}):null!=this.graph.originalViewState&&0<ia.x/V.scale+this.graph.originalViewState.translate.x-
+V.translate.x&&0<ia.y/V.scale+this.graph.originalViewState.translate.y-V.translate.y&&(V.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale})}}));mxEvent.addListener(q,"mouseleave",function(){q.parentNode.removeChild(q);q=null});fa=Y.getBoundingClientRect();q.style.width="140px";q.style.padding="2px 0px 2px 0px";q.style.border="1px solid #d0d0d0";
+q.style.backgroundColor="#eee";q.style.fontFamily=Editor.defaultHtmlFont;q.style.fontSize="11px";q.style.overflowY="auto";q.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";q.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(q,80);var ka=mxUtils.getDocumentScrollOrigin(document);q.style.left=ka.x+fa.left-1+"px";q.style.top=ka.y+fa.bottom-2+"px";document.body.appendChild(q)}}),Editor.layersImage,mxResources.get("layers")||"Layers");aa.addListener(mxEvent.CHANGE,function(){Y.style.display=
+1<aa.getChildCount(aa.root)?"inline-block":"none"});Y.style.display=1<aa.getChildCount(aa.root)?"inline-block":"none"}}else if("tags"==G){if(this.tagsEnabled){var qa=b(mxUtils.bind(this,function(fa){null==y&&(y=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),y.div.getElementsByTagName("div")[0].style.position="",y.div.style.maxHeight="160px",y.div.style.maxWidth="120px",y.div.style.padding="2px",y.div.style.overflow="auto",y.div.style.height="auto",y.div.style.position="fixed",
+y.div.style.fontFamily=Editor.defaultHtmlFont,y.div.style.fontSize="11px",y.div.style.backgroundColor="#eee",y.div.style.color="#000",y.div.style.border="1px solid #d0d0d0",y.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(y.div,80));if(null!=F)F.parentNode.removeChild(F),F=null;else{F=y.div;mxEvent.addListener(F,"mouseleave",function(){F.parentNode.removeChild(F);F=null});fa=qa.getBoundingClientRect();var ka=mxUtils.getDocumentScrollOrigin(document);F.style.left=ka.x+fa.left-1+"px";F.style.top=
+ka.y+fa.bottom-2+"px";document.body.appendChild(F);y.refresh()}}),Editor.tagsImage,mxResources.get("tags")||"Tags");aa.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==G?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&
(G=this.graphConfig["toolbar-buttons"][G],null!=G&&(G.elem=b(null==G.enabled||G.enabled?G.handler:function(){},G.image,G.title,G.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*m);null!=this.graphConfig.title&&(g=e.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),
-mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*m;var N=e.style.border,Y=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var ea=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
-{left:-ka.x,top:-ka.y};ea={left:ea.left-ka.left,top:ea.top-ka.top,bottom:ea.bottom-ka.top,right:ea.right-ka.left};k.style.left=ea.left+"px";"bottom"==this.graphConfig["toolbar-position"]?k.style.top=ea.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(k.style.marginTop=-this.toolbarHeight+"px",k.style.top=ea.top+1+"px"):k.style.top=ea.top+"px";"1px solid transparent"==N&&(e.style.border="1px solid #d0d0d0");document.body.appendChild(k);var ja=mxUtils.bind(this,function(){null!=k.parentNode&&
-k.parentNode.removeChild(k);null!=q&&(q.parentNode.removeChild(q),q=null);e.style.border=N});mxEvent.addListener(document,"mousemove",function(V){for(V=mxEvent.getSource(V);null!=V;){if(V==e||V==k||V==q)return;V=V.parentNode}ja()});mxEvent.addListener(document.body,"mouseleave",function(V){ja()})}else k.style.top=-this.toolbarHeight+"px",e.appendChild(k)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(e,"mouseenter",Y):Y();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=
-k.parentNode&&Y()})).observe(e)};GraphViewer.prototype.disableButton=function(b){var e=this.graphConfig["toolbar-buttons"]?this.graphConfig["toolbar-buttons"][b]:null;null!=e&&(mxUtils.setOpacity(e.elem,30),mxEvent.removeListener(e.elem,"click",e.handler),mxEvent.addListener(e.elem,"mouseenter",function(){e.elem.style.backgroundColor="#eee"}))};
+mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*m;var Q=e.style.border,X=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var fa=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
+{left:-ka.x,top:-ka.y};fa={left:fa.left-ka.left,top:fa.top-ka.top,bottom:fa.bottom-ka.top,right:fa.right-ka.left};k.style.left=fa.left+"px";"bottom"==this.graphConfig["toolbar-position"]?k.style.top=fa.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(k.style.marginTop=-this.toolbarHeight+"px",k.style.top=fa.top+1+"px"):k.style.top=fa.top+"px";"1px solid transparent"==Q&&(e.style.border="1px solid #d0d0d0");document.body.appendChild(k);var ia=mxUtils.bind(this,function(){null!=k.parentNode&&
+k.parentNode.removeChild(k);null!=q&&(q.parentNode.removeChild(q),q=null);e.style.border=Q});mxEvent.addListener(document,"mousemove",function(V){for(V=mxEvent.getSource(V);null!=V;){if(V==e||V==k||V==q)return;V=V.parentNode}ia()});mxEvent.addListener(document.body,"mouseleave",function(V){ia()})}else k.style.top=-this.toolbarHeight+"px",e.appendChild(k)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(e,"mouseenter",X):X();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=
+k.parentNode&&X()})).observe(e)};GraphViewer.prototype.disableButton=function(b){var e=this.graphConfig["toolbar-buttons"]?this.graphConfig["toolbar-buttons"][b]:null;null!=e&&(mxUtils.setOpacity(e.elem,30),mxEvent.removeListener(e.elem,"click",e.handler),mxEvent.addListener(e.elem,"mouseenter",function(){e.elem.style.backgroundColor="#eee"}))};
GraphViewer.prototype.addClickHandler=function(b,e){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(k,n){if(null==n)for(var D=mxEvent.getSource(k);D!=b.container&&null!=D&&null==n;)"a"==D.nodeName.toLowerCase()&&(n=D.getAttribute("href")),D=D.parentNode;null!=e?null==n||b.isCustomLink(n)?mxEvent.consume(k):b.isExternalProtocol(n)||b.isBlankLink(n)||window.setTimeout(function(){e.destroy()},0):null!=n&&null==e&&b.isCustomLink(n)&&
(mxEvent.isTouchEvent(k)||!mxEvent.isPopupTrigger(k))&&b.customLinkClicked(n)&&(mxUtils.clearSelection(),mxEvent.consume(k))}),mxUtils.bind(this,function(k){null!=e||!this.lightboxClickEnabled||mxEvent.isTouchEvent(k)&&0!=this.toolbarItems.length||this.showLightbox()}))};
GraphViewer.prototype.showLightbox=function(b,e,k){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){b=null!=b?b:null!=this.graphConfig.editable?this.graphConfig.editable:!0;k={client:1,target:null!=k?k:"blank"};b&&(k.edit=this.graphConfig.edit||"_blank");if(null!=e?e:1)k.close=1;this.layersEnabled&&(k.layers=1);this.tagsEnabled&&(k.tags={});null!=this.graphConfig&&0!=this.graphConfig.nav&&(k.nav=1);null!=this.graphConfig&&null!=
@@ -4117,9 +4117,9 @@ GraphViewer.initCss=function(){try{var b=document.createElement("style");b.type=
GraphViewer.cachedUrls={};GraphViewer.getUrl=function(b,e,k){if(null!=GraphViewer.cachedUrls[b])e(GraphViewer.cachedUrls[b]);else{var n=null!=navigator.userAgent&&0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;n.open("GET",b);n.onload=function(){e(null!=n.getText?n.getText():n.responseText)};n.onerror=k;n.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(k){return window.setTimeout(k,20)},e=function(k,n){function D(){this.q=[];this.add=function(F){this.q.push(F)};var q,y;this.call=function(){q=0;for(y=this.q.length;q<y;q++)this.q[q].call()}}function t(q,y){return q.currentStyle?q.currentStyle[y]:window.getComputedStyle?window.getComputedStyle(q,null).getPropertyValue(y):q.style[y]}function E(q,y){if(!q.resizedAttached)q.resizedAttached=
new D,q.resizedAttached.add(y);else if(q.resizedAttached){q.resizedAttached.add(y);return}q.resizeSensor=document.createElement("div");q.resizeSensor.className="resize-sensor";q.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";q.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
-q.appendChild(q.resizeSensor);"static"==t(q,"position")&&(q.style.position="relative");var F=q.resizeSensor.childNodes[0],C=F.childNodes[0],I=q.resizeSensor.childNodes[1],G=function(){C.style.width="100000px";C.style.height="100000px";F.scrollLeft=1E5;F.scrollTop=1E5;I.scrollLeft=1E5;I.scrollTop=1E5};G();var aa=!1,ca=function(){q.resizedAttached&&(aa&&(q.resizedAttached.call(),aa=!1),b(ca))};b(ca);var ba,Z,qa,N;y=function(){if((qa=q.offsetWidth)!=ba||(N=q.offsetHeight)!=Z)aa=!0,ba=qa,Z=N;G()};var Y=
-function(ea,ka,ja){ea.attachEvent?ea.attachEvent("on"+ka,ja):ea.addEventListener(ka,ja)};Y(F,"scroll",y);Y(I,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var m=k.length;f<m;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<
-y;q++)e.detach(k[q]);else e.detach(k)}};e.detach=function(k){k.resizeSensor&&(k.removeChild(k.resizeSensor),delete k.resizeSensor,delete k.resizedAttached)};window.ResizeSensor=e})();
+q.appendChild(q.resizeSensor);"static"==t(q,"position")&&(q.style.position="relative");var F=q.resizeSensor.childNodes[0],C=F.childNodes[0],I=q.resizeSensor.childNodes[1],G=function(){C.style.width="100000px";C.style.height="100000px";F.scrollLeft=1E5;F.scrollTop=1E5;I.scrollLeft=1E5;I.scrollTop=1E5};G();var Z=!1,ca=function(){q.resizedAttached&&(Z&&(q.resizedAttached.call(),Z=!1),b(ca))};b(ca);var aa,Y,qa,Q;y=function(){if((qa=q.offsetWidth)!=aa||(Q=q.offsetHeight)!=Y)Z=!0,aa=qa,Y=Q;G()};var X=function(fa,
+ka,ia){fa.attachEvent?fa.attachEvent("on"+ka,ia):fa.addEventListener(ka,ia)};X(F,"scroll",y);X(I,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var m=k.length;f<m;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<y;q++)e.detach(k[q]);
+else e.detach(k)}};e.detach=function(k){k.resizeSensor&&(k.removeChild(k.resizeSensor),delete k.resizeSensor,delete k.resizedAttached)};window.ResizeSensor=e})();
function mxBpmnShape(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxBpmnShape,mxShape);
mxBpmnShape.prototype.customProperties=[{name:"symbol",dispName:"Event",type:"enum",defVal:"general",enumList:[{val:"general",dispName:"General"},{val:"message",dispName:"Message"},{val:"timer",dispName:"Timer"},{val:"escalation",dispName:"Escalation"},{val:"conditional",dispName:"Conditional"},{val:"link",dispName:"Link"},{val:"error",dispName:"Error"},{val:"cancel",dispName:"Cancel"},{val:"compensation",dispName:"Compensation"},{val:"signal",dispName:"Signal"},{val:"multiple",dispName:"Multiple"},
{val:"parallelMultiple",dispName:"Parallel Multiple"},{val:"terminate",dispName:"Terminate"},{val:"exclusiveGw",dispName:"Exclusive Gw"},{val:"parallelGw",dispName:"Parallel Gw"},{val:"complexGw",dispName:"Complex Gw"}]},{name:"outline",dispName:"Event Type",type:"enum",defVal:"standard",enumList:[{val:"standard",dispName:"Standard"},{val:"eventInt",dispName:"Interrupting"},{val:"eventNonint",dispName:"Non-Interrupting"},{val:"catching",dispName:"Catching"},{val:"boundInt",dispName:"Bound Interrupting"},
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index d3800a3d..95673381 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -110,7 +110,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";
window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;
-window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.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/"),
+window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"20.0.1",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]"!==
@@ -1990,12 +1990,12 @@ Editor.prototype.setFilename=function(b){this.filename=b};
Editor.prototype.createUndoManager=function(){var b=this.graph,e=new mxUndoManager;this.undoListener=function(n,D){e.undoableEditHappened(D.getProperty("edit"))};var k=mxUtils.bind(this,function(n,D){this.undoListener.apply(this,arguments)});b.getModel().addListener(mxEvent.UNDO,k);b.getView().addListener(mxEvent.UNDO,k);k=function(n,D){n=b.getSelectionCellsForChanges(D.getProperty("edit").changes,function(E){return!(E instanceof mxChildChange)});if(0<n.length){b.getModel();D=[];for(var t=0;t<n.length;t++)null!=
b.view.getState(n[t])&&D.push(n[t]);b.setSelectionCells(D)}};e.addListener(mxEvent.UNDO,k);e.addListener(mxEvent.REDO,k);return e};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(b){this.consumer=this.producer=null;this.done=b;this.args=null};OpenFile.prototype.setConsumer=function(b){this.consumer=b;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};
OpenFile.prototype.error=function(b){this.cancel(!0);mxUtils.alert(b)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(b){null!=this.done&&this.done(null!=b?b:!0)};
-function Dialog(b,e,k,n,D,t,E,d,f,g,m){var q=f?57:0,y=k,F=n,C=f?0:64,I=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(I.height=window.innerHeight);var G=I.height,aa=Math.max(1,Math.round((I.width-k-C)/2)),ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
-2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=G+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));I=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=I.x+"px";this.bg.style.top=I.y+"px";aa+=I.x;ca+=I.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+
-"px",ca+=b.embedViewport.y,aa+=b.embedViewport.x);D&&document.body.appendChild(this.bg);var ba=b.createDiv(f?"geTransDialog":"geDialog");D=this.getPosition(aa,ca,k,n);aa=D.x;ca=D.y;ba.style.width=k+"px";ba.style.height=n+"px";ba.style.left=aa+"px";ba.style.top=ca+"px";ba.style.zIndex=this.zIndex;ba.appendChild(e);document.body.appendChild(ba);!d&&e.clientHeight>ba.clientHeight-C&&(e.style.overflowY="auto");e.style.overflowX="hidden";if(t&&(t=document.createElement("img"),t.setAttribute("src",Dialog.prototype.closeImage),
-t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=ca+14+"px",t.style.left=aa+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!m)){var Z=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Z=!0}),null,mxUtils.bind(this,function(qa){Z&&(b.hideDialog(!0),Z=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
-g();null!=qa&&(y=k=qa.w,F=n=qa.h)}qa=mxUtils.getDocumentSize();G=qa.height;this.bg.style.height=G+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");aa=Math.max(1,Math.round((qa.width-k-C)/2));ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));k=null!=document.body?Math.min(y,document.body.scrollWidth-C):y;n=Math.min(F,G-C);qa=this.getPosition(aa,ca,k,n);aa=qa.x;ca=qa.y;ba.style.left=aa+"px";ba.style.top=ca+"px";ba.style.width=k+"px";ba.style.height=
-n+"px";!d&&e.clientHeight>ba.clientHeight-C&&(e.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=ca+14+"px",this.dialogImg.style.left=aa+k+38-q+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=E;this.container=ba;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+function Dialog(b,e,k,n,D,t,E,d,f,g,m){var q=f?57:0,y=k,F=n,C=f?0:64,I=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(I.height=window.innerHeight);var G=I.height,Z=Math.max(1,Math.round((I.width-k-C)/2)),ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));e.style.maxHeight="100%";k=null!=document.body?Math.min(k,document.body.scrollWidth-C):k;n=Math.min(n,G-C);0<b.dialogs.length&&(this.zIndex+=
+2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=G+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));I=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=I.x+"px";this.bg.style.top=I.y+"px";Z+=I.x;ca+=I.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
+ca+=b.embedViewport.y,Z+=b.embedViewport.x);D&&document.body.appendChild(this.bg);var aa=b.createDiv(f?"geTransDialog":"geDialog");D=this.getPosition(Z,ca,k,n);Z=D.x;ca=D.y;aa.style.width=k+"px";aa.style.height=n+"px";aa.style.left=Z+"px";aa.style.top=ca+"px";aa.style.zIndex=this.zIndex;aa.appendChild(e);document.body.appendChild(aa);!d&&e.clientHeight>aa.clientHeight-C&&(e.style.overflowY="auto");e.style.overflowX="hidden";if(t&&(t=document.createElement("img"),t.setAttribute("src",Dialog.prototype.closeImage),
+t.setAttribute("title",mxResources.get("close")),t.className="geDialogClose",t.style.top=ca+14+"px",t.style.left=Z+k+38-q+"px",t.style.zIndex=this.zIndex,mxEvent.addListener(t,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(t),this.dialogImg=t,!m)){var Y=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(qa){Y=!0}),null,mxUtils.bind(this,function(qa){Y&&(b.hideDialog(!0),Y=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var qa=
+g();null!=qa&&(y=k=qa.w,F=n=qa.h)}qa=mxUtils.getDocumentSize();G=qa.height;this.bg.style.height=G+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");Z=Math.max(1,Math.round((qa.width-k-C)/2));ca=Math.max(1,Math.round((G-n-b.footerHeight)/3));k=null!=document.body?Math.min(y,document.body.scrollWidth-C):y;n=Math.min(F,G-C);qa=this.getPosition(Z,ca,k,n);Z=qa.x;ca=qa.y;aa.style.left=Z+"px";aa.style.top=ca+"px";aa.style.width=k+"px";aa.style.height=
+n+"px";!d&&e.clientHeight>aa.clientHeight-C&&(e.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=ca+14+"px",this.dialogImg.style.left=Z+k+38-q+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=E;this.container=aa;b.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+
@@ -2003,8 +2003,8 @@ Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKA
var ErrorDialog=function(b,e,k,n,D,t,E,d,f,g,m){f=null!=f?f:!0;var q=document.createElement("div");q.style.textAlign="center";if(null!=e){var y=document.createElement("div");y.style.padding="0px";y.style.margin="0px";y.style.fontSize="18px";y.style.paddingBottom="16px";y.style.marginBottom="10px";y.style.borderBottom="1px solid #c0c0c0";y.style.color="gray";y.style.whiteSpace="nowrap";y.style.textOverflow="ellipsis";y.style.overflow="hidden";mxUtils.write(y,e);y.setAttribute("title",e);q.appendChild(y)}e=
document.createElement("div");e.style.lineHeight="1.2em";e.style.padding="6px";e.innerHTML=k;q.appendChild(e);k=document.createElement("div");k.style.marginTop="12px";k.style.textAlign="center";null!=t&&(e=mxUtils.button(mxResources.get("tryAgain"),function(){b.hideDialog();t()}),e.className="geBtn",k.appendChild(e),k.style.textAlign="center");null!=g&&(g=mxUtils.button(g,function(){null!=m&&m()}),g.className="geBtn",k.appendChild(g));var F=mxUtils.button(n,function(){f&&b.hideDialog();null!=D&&D()});
F.className="geBtn";k.appendChild(F);null!=E&&(n=mxUtils.button(E,function(){f&&b.hideDialog();null!=d&&d()}),n.className="geBtn gePrimaryBtn",k.appendChild(n));this.init=function(){F.focus()};q.appendChild(k);this.container=q},PrintDialog=function(b,e){this.create(b,e)};
-PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,I=parseInt(q.value)/100;isNaN(I)&&(I=1,q.value="100%");I*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,aa=1/k.pageScale;if(C){var ca=E.checked?1:parseInt(m.value);isNaN(ca)||(aa=mxUtils.getScaleForPageCount(ca,k,G))}k.getGraphBounds();var ba=ca=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*I);G.height=Math.ceil(G.height*I);aa*=I;!C&&k.pageVisible?(I=k.getPageLayout(),ca-=I.x*G.width,ba-=I.y*
-G.height):C=!0;C=PrintDialog.createPrintPreview(k,aa,G,0,ca,ba,C);C.open();F&&PrintDialog.printPreview(C)}var k=b.editor.graph,n=document.createElement("table");n.style.width="100%";n.style.height="100%";var D=document.createElement("tbody");var t=document.createElement("tr");var E=document.createElement("input");E.setAttribute("type","checkbox");var d=document.createElement("td");d.setAttribute("colspan","2");d.style.fontSize="10pt";d.appendChild(E);var f=document.createElement("span");mxUtils.write(f,
+PrintDialog.prototype.create=function(b){function e(F){var C=E.checked||g.checked,I=parseInt(q.value)/100;isNaN(I)&&(I=1,q.value="100%");I*=.75;var G=k.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,Z=1/k.pageScale;if(C){var ca=E.checked?1:parseInt(m.value);isNaN(ca)||(Z=mxUtils.getScaleForPageCount(ca,k,G))}k.getGraphBounds();var aa=ca=0;G=mxRectangle.fromRectangle(G);G.width=Math.ceil(G.width*I);G.height=Math.ceil(G.height*I);Z*=I;!C&&k.pageVisible?(I=k.getPageLayout(),ca-=I.x*G.width,aa-=I.y*
+G.height):C=!0;C=PrintDialog.createPrintPreview(k,Z,G,0,ca,aa,C);C.open();F&&PrintDialog.printPreview(C)}var k=b.editor.graph,n=document.createElement("table");n.style.width="100%";n.style.height="100%";var D=document.createElement("tbody");var t=document.createElement("tr");var E=document.createElement("input");E.setAttribute("type","checkbox");var d=document.createElement("td");d.setAttribute("colspan","2");d.style.fontSize="10pt";d.appendChild(E);var f=document.createElement("span");mxUtils.write(f,
" "+mxResources.get("fitPage"));d.appendChild(f);mxEvent.addListener(f,"click",function(F){E.checked=!E.checked;g.checked=!E.checked;mxEvent.consume(F)});mxEvent.addListener(E,"change",function(){g.checked=!E.checked});t.appendChild(d);D.appendChild(t);t=t.cloneNode(!1);var g=document.createElement("input");g.setAttribute("type","checkbox");d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(g);f=document.createElement("span");mxUtils.write(f," "+mxResources.get("posterPrint")+":");
d.appendChild(f);mxEvent.addListener(f,"click",function(F){g.checked=!g.checked;E.checked=!g.checked;mxEvent.consume(F)});t.appendChild(d);var m=document.createElement("input");m.setAttribute("value","1");m.setAttribute("type","number");m.setAttribute("min","1");m.setAttribute("size","4");m.setAttribute("disabled","disabled");m.style.width="50px";d=document.createElement("td");d.style.fontSize="10pt";d.appendChild(m);mxUtils.write(d," "+mxResources.get("pages")+" (max)");t.appendChild(d);D.appendChild(t);
mxEvent.addListener(g,"change",function(){g.checked?m.removeAttribute("disabled"):m.setAttribute("disabled","disabled");E.checked=!g.checked});t=t.cloneNode(!1);d=document.createElement("td");mxUtils.write(d,mxResources.get("pageScale")+":");t.appendChild(d);d=document.createElement("td");var q=document.createElement("input");q.setAttribute("value","100 %");q.setAttribute("size","5");q.style.width="50px";d.appendChild(q);t.appendChild(d);D.appendChild(t);t=document.createElement("tr");d=document.createElement("td");
@@ -2015,29 +2015,29 @@ PrintDialog.previewEnabled=!0;
var PageSetupDialog=function(b){function e(){null==m||m==mxConstants.NONE?(g.style.backgroundColor="",g.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(g.style.backgroundColor=m,g.style.backgroundImage="")}function k(){var G=C;null!=G&&Graph.isPageLink(G.src)&&(G=b.createImageForPageLink(G.src,null));null!=G&&null!=G.src?(F.setAttribute("src",G.src),F.style.display=""):(F.removeAttribute("src"),F.style.display="none")}var n=b.editor.graph,D=document.createElement("table");D.style.width=
"100%";D.style.height="100%";var t=document.createElement("tbody");var E=document.createElement("tr");var d=document.createElement("td");d.style.verticalAlign="top";d.style.fontSize="10pt";mxUtils.write(d,mxResources.get("paperSize")+":");E.appendChild(d);d=document.createElement("td");d.style.verticalAlign="top";d.style.fontSize="10pt";var f=PageSetupDialog.addPageFormatPanel(d,"pagesetupdialog",n.pageFormat);E.appendChild(d);t.appendChild(E);E=document.createElement("tr");d=document.createElement("td");
mxUtils.write(d,mxResources.get("background")+":");E.appendChild(d);d=document.createElement("td");d.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=n.background;e();mxEvent.addListener(g,
-"click",function(G){b.pickColor(m||"none",function(aa){m=aa;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
+"click",function(G){b.pickColor(m||"none",function(Z){m=Z;e()});mxEvent.consume(G)});d.appendChild(g);mxUtils.write(d,mxResources.get("gridSize")+":");var q=document.createElement("input");q.setAttribute("type","number");q.setAttribute("min","0");q.style.width="40px";q.style.marginLeft="6px";q.value=n.getGridSize();d.appendChild(q);mxEvent.addListener(q,"change",function(){var G=parseInt(q.value);q.value=Math.max(1,isNaN(G)?n.getGridSize():G)});E.appendChild(d);t.appendChild(E);E=document.createElement("tr");
d=document.createElement("td");mxUtils.write(d,mxResources.get("image")+":");E.appendChild(d);d=document.createElement("td");var y=document.createElement("button");y.className="geBtn";y.style.margin="0px";mxUtils.write(y,mxResources.get("change")+"...");var F=document.createElement("img");F.setAttribute("valign","middle");F.style.verticalAlign="middle";F.style.border="1px solid lightGray";F.style.borderRadius="4px";F.style.marginRight="14px";F.style.maxWidth="100px";F.style.cursor="pointer";F.style.height=
-"60px";F.style.padding="4px";var C=n.backgroundImage,I=function(G){b.showBackgroundImageDialog(function(aa,ca){ca||(C=aa,k())},C);mxEvent.consume(G)};mxEvent.addListener(y,"click",I);mxEvent.addListener(F,"click",I);k();d.appendChild(F);d.appendChild(y);E.appendChild(d);t.appendChild(E);E=document.createElement("tr");d=document.createElement("td");d.colSpan=2;d.style.paddingTop="16px";d.setAttribute("align","right");y=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});y.className=
+"60px";F.style.padding="4px";var C=n.backgroundImage,I=function(G){b.showBackgroundImageDialog(function(Z,ca){ca||(C=Z,k())},C);mxEvent.consume(G)};mxEvent.addListener(y,"click",I);mxEvent.addListener(F,"click",I);k();d.appendChild(F);d.appendChild(y);E.appendChild(d);t.appendChild(E);E=document.createElement("tr");d=document.createElement("td");d.colSpan=2;d.style.paddingTop="16px";d.setAttribute("align","right");y=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});y.className=
"geBtn";b.editor.cancelFirst&&d.appendChild(y);I=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();var G=parseInt(q.value);isNaN(G)||n.gridSize===G||n.setGridSize(G);G=new ChangePageSetup(b,m,C,f.get());G.ignoreColor=n.background==m;G.ignoreImage=(null!=n.backgroundImage?n.backgroundImage.src:null)===(null!=C?C.src:null);n.pageFormat.width==G.previousFormat.width&&n.pageFormat.height==G.previousFormat.height&&G.ignoreColor&&G.ignoreImage||n.model.execute(G)});I.className="geBtn gePrimaryBtn";
d.appendChild(I);b.editor.cancelFirst||d.appendChild(y);E.appendChild(d);t.appendChild(E);D.appendChild(t);this.container=D};
-PageSetupDialog.addPageFormatPanel=function(b,e,k,n){function D(qa,N,Y){if(Y||q!=document.activeElement&&y!=document.activeElement){qa=!1;for(N=0;N<C.length;N++)Y=C[N],ca?"custom"==Y.key&&(d.value=Y.key,ca=!1):null!=Y.format&&("a4"==Y.key?826==k.width?(k=mxRectangle.fromRectangle(k),k.width=827):826==k.height&&(k=mxRectangle.fromRectangle(k),k.height=827):"a5"==Y.key&&(584==k.width?(k=mxRectangle.fromRectangle(k),k.width=583):584==k.height&&(k=mxRectangle.fromRectangle(k),k.height=583)),k.width==
-Y.format.width&&k.height==Y.format.height?(d.value=Y.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==Y.format.height&&k.height==Y.format.width&&(d.value=Y.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",m.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
+PageSetupDialog.addPageFormatPanel=function(b,e,k,n){function D(qa,Q,X){if(X||q!=document.activeElement&&y!=document.activeElement){qa=!1;for(Q=0;Q<C.length;Q++)X=C[Q],ca?"custom"==X.key&&(d.value=X.key,ca=!1):null!=X.format&&("a4"==X.key?826==k.width?(k=mxRectangle.fromRectangle(k),k.width=827):826==k.height&&(k=mxRectangle.fromRectangle(k),k.height=827):"a5"==X.key&&(584==k.width?(k=mxRectangle.fromRectangle(k),k.width=583):584==k.height&&(k=mxRectangle.fromRectangle(k),k.height=583)),k.width==
+X.format.width&&k.height==X.format.height?(d.value=X.key,t.setAttribute("checked","checked"),t.defaultChecked=!0,t.checked=!0,E.removeAttribute("checked"),E.defaultChecked=!1,E.checked=!1,qa=!0):k.width==X.format.height&&k.height==X.format.width&&(d.value=X.key,t.removeAttribute("checked"),t.defaultChecked=!1,t.checked=!1,E.setAttribute("checked","checked"),E.defaultChecked=!0,qa=E.checked=!0));qa?(f.style.display="",m.style.display="none"):(q.value=k.width/100,y.value=k.height/100,t.setAttribute("checked",
"checked"),d.value="custom",f.style.display="none",m.style.display="")}}e="format-"+e;var t=document.createElement("input");t.setAttribute("name",e);t.setAttribute("type","radio");t.setAttribute("value","portrait");var E=document.createElement("input");E.setAttribute("name",e);E.setAttribute("type","radio");E.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 f=document.createElement("div");f.style.marginLeft="4px";f.style.width="210px";f.style.height="24px";t.style.marginRight="6px";f.appendChild(t);e=document.createElement("span");e.style.maxWidth="100px";mxUtils.write(e,mxResources.get("portrait"));f.appendChild(e);E.style.marginLeft="10px";E.style.marginRight="6px";f.appendChild(E);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));f.appendChild(g);var m=document.createElement("div");m.style.marginLeft=
-"4px";m.style.width="210px";m.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";m.appendChild(q);mxUtils.write(m," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";m.appendChild(y);mxUtils.write(m," in");f.style.display="none";m.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),I=0;I<C.length;I++){var G=C[I];F[G.key]=G;var aa=document.createElement("option");aa.setAttribute("value",
-G.key);mxUtils.write(aa,G.title);d.appendChild(aa)}var ca=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(m);var ba=k,Z=function(qa,N){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,m.style.display="none",f.style.display=""):(f.style.display="none",m.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
-Math.floor(100*parseFloat(y.value)));"custom"!=d.value&&E.checked&&(qa=new mxRectangle(0,0,qa.height,qa.width));N&&ca||qa.width==ba.width&&qa.height==ba.height||(ba=qa,null!=n&&n(ba))};mxEvent.addListener(e,"click",function(qa){t.checked=!0;Z(qa);mxEvent.consume(qa)});mxEvent.addListener(g,"click",function(qa){E.checked=!0;Z(qa);mxEvent.consume(qa)});mxEvent.addListener(q,"blur",Z);mxEvent.addListener(q,"click",Z);mxEvent.addListener(y,"blur",Z);mxEvent.addListener(y,"click",Z);mxEvent.addListener(E,
-"change",Z);mxEvent.addListener(t,"change",Z);mxEvent.addListener(d,"change",function(qa){ca="custom"==d.value;Z(qa,!0)});Z();return{set:function(qa){k=qa;D(null,null,!0)},get:function(){return ba},widthInput:q,heightInput:y}};
+"4px";m.style.width="210px";m.style.height="24px";var q=document.createElement("input");q.setAttribute("size","7");q.style.textAlign="right";m.appendChild(q);mxUtils.write(m," in x ");var y=document.createElement("input");y.setAttribute("size","7");y.style.textAlign="right";m.appendChild(y);mxUtils.write(m," in");f.style.display="none";m.style.display="none";for(var F={},C=PageSetupDialog.getFormats(),I=0;I<C.length;I++){var G=C[I];F[G.key]=G;var Z=document.createElement("option");Z.setAttribute("value",
+G.key);mxUtils.write(Z,G.title);d.appendChild(Z)}var ca=!1;D();b.appendChild(d);mxUtils.br(b);b.appendChild(f);b.appendChild(m);var aa=k,Y=function(qa,Q){qa=F[d.value];null!=qa.format?(q.value=qa.format.width/100,y.value=qa.format.height/100,m.style.display="none",f.style.display=""):(f.style.display="none",m.style.display="");qa=parseFloat(q.value);if(isNaN(qa)||0>=qa)q.value=k.width/100;qa=parseFloat(y.value);if(isNaN(qa)||0>=qa)y.value=k.height/100;qa=new mxRectangle(0,0,Math.floor(100*parseFloat(q.value)),
+Math.floor(100*parseFloat(y.value)));"custom"!=d.value&&E.checked&&(qa=new mxRectangle(0,0,qa.height,qa.width));Q&&ca||qa.width==aa.width&&qa.height==aa.height||(aa=qa,null!=n&&n(aa))};mxEvent.addListener(e,"click",function(qa){t.checked=!0;Y(qa);mxEvent.consume(qa)});mxEvent.addListener(g,"click",function(qa){E.checked=!0;Y(qa);mxEvent.consume(qa)});mxEvent.addListener(q,"blur",Y);mxEvent.addListener(q,"click",Y);mxEvent.addListener(y,"blur",Y);mxEvent.addListener(y,"click",Y);mxEvent.addListener(E,
+"change",Y);mxEvent.addListener(t,"change",Y);mxEvent.addListener(d,"change",function(qa){ca="custom"==d.value;Y(qa,!0)});Y();return{set:function(qa){k=qa;D(null,null,!0)},get:function(){return aa},widthInput:q,heightInput:y}};
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(b,e,k,n,D,t,E,d,f,g,m,q,y){f=null!=f?f:!0;var F=document.createElement("table"),C=document.createElement("tbody");F.style.position="absolute";F.style.top="30px";F.style.left="20px";var I=document.createElement("tr");var G=document.createElement("td");G.style.textOverflow="ellipsis";G.style.textAlign="right";G.style.maxWidth=(y?y+15:100)+"px";G.style.fontSize="10pt";G.style.width=(y?y:84)+"px";mxUtils.write(G,(D||mxResources.get("filename"))+":");I.appendChild(G);var aa=
-document.createElement("input");aa.setAttribute("value",e||"");aa.style.marginLeft="4px";aa.style.width=null!=q?q+"px":"180px";var ca=mxUtils.button(k,function(){if(null==t||t(aa.value))f&&b.hideDialog(),n(aa.value)});ca.className="geBtn gePrimaryBtn";this.init=function(){if(null!=D||null==E)if(aa.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?aa.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var ba=F.parentNode;if(null!=ba){var Z=null;mxEvent.addListener(ba,
-"dragleave",function(qa){null!=Z&&(Z.style.backgroundColor="",Z=null);qa.stopPropagation();qa.preventDefault()});mxEvent.addListener(ba,"dragover",mxUtils.bind(this,function(qa){null==Z&&(!mxClient.IS_IE||10<document.documentMode)&&(Z=aa,Z.style.backgroundColor="#ebf2f9");qa.stopPropagation();qa.preventDefault()}));mxEvent.addListener(ba,"drop",mxUtils.bind(this,function(qa){null!=Z&&(Z.style.backgroundColor="",Z=null);0<=mxUtils.indexOf(qa.dataTransfer.types,"text/uri-list")&&(aa.value=decodeURIComponent(qa.dataTransfer.getData("text/uri-list")),
-ca.click());qa.stopPropagation();qa.preventDefault()}))}}};G=document.createElement("td");G.style.whiteSpace="nowrap";G.appendChild(aa);I.appendChild(G);if(null!=D||null==E)C.appendChild(I),null!=m&&(G.appendChild(FilenameDialog.createTypeHint(b,aa,m)),null!=b.editor.diagramFileTypes&&(I=document.createElement("tr"),G=document.createElement("td"),G.style.textOverflow="ellipsis",G.style.textAlign="right",G.style.maxWidth="100px",G.style.fontSize="10pt",G.style.width="84px",mxUtils.write(G,mxResources.get("type")+
-":"),I.appendChild(G),G=document.createElement("td"),G.style.whiteSpace="nowrap",I.appendChild(G),e=FilenameDialog.createFileTypes(b,aa,b.editor.diagramFileTypes),e.style.marginLeft="4px",e.style.width="198px",G.appendChild(e),aa.style.width=null!=q?q-40+"px":"190px",I.appendChild(G),C.appendChild(I)));null!=E&&(I=document.createElement("tr"),G=document.createElement("td"),G.colSpan=2,G.appendChild(E),I.appendChild(G),C.appendChild(I));I=document.createElement("tr");G=document.createElement("td");
-G.colSpan=2;G.style.paddingTop=null!=m?"12px":"20px";G.style.whiteSpace="nowrap";G.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});m.className="geBtn";b.editor.cancelFirst&&G.appendChild(m);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",G.appendChild(q));mxEvent.addListener(aa,"keypress",function(ba){13==ba.keyCode&&ca.click()});G.appendChild(ca);b.editor.cancelFirst||
-G.appendChild(m);I.appendChild(G);C.appendChild(I);F.appendChild(C);this.container=F};FilenameDialog.filenameHelpLink=null;
+var FilenameDialog=function(b,e,k,n,D,t,E,d,f,g,m,q,y){f=null!=f?f:!0;var F=document.createElement("table"),C=document.createElement("tbody");F.style.position="absolute";F.style.top="30px";F.style.left="20px";var I=document.createElement("tr");var G=document.createElement("td");G.style.textOverflow="ellipsis";G.style.textAlign="right";G.style.maxWidth=(y?y+15:100)+"px";G.style.fontSize="10pt";G.style.width=(y?y:84)+"px";mxUtils.write(G,(D||mxResources.get("filename"))+":");I.appendChild(G);var Z=
+document.createElement("input");Z.setAttribute("value",e||"");Z.style.marginLeft="4px";Z.style.width=null!=q?q+"px":"180px";var ca=mxUtils.button(k,function(){if(null==t||t(Z.value))f&&b.hideDialog(),n(Z.value)});ca.className="geBtn gePrimaryBtn";this.init=function(){if(null!=D||null==E)if(Z.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Z.select():document.execCommand("selectAll",!1,null),Graph.fileSupport){var aa=F.parentNode;if(null!=aa){var Y=null;mxEvent.addListener(aa,"dragleave",
+function(qa){null!=Y&&(Y.style.backgroundColor="",Y=null);qa.stopPropagation();qa.preventDefault()});mxEvent.addListener(aa,"dragover",mxUtils.bind(this,function(qa){null==Y&&(!mxClient.IS_IE||10<document.documentMode)&&(Y=Z,Y.style.backgroundColor="#ebf2f9");qa.stopPropagation();qa.preventDefault()}));mxEvent.addListener(aa,"drop",mxUtils.bind(this,function(qa){null!=Y&&(Y.style.backgroundColor="",Y=null);0<=mxUtils.indexOf(qa.dataTransfer.types,"text/uri-list")&&(Z.value=decodeURIComponent(qa.dataTransfer.getData("text/uri-list")),
+ca.click());qa.stopPropagation();qa.preventDefault()}))}}};G=document.createElement("td");G.style.whiteSpace="nowrap";G.appendChild(Z);I.appendChild(G);if(null!=D||null==E)C.appendChild(I),null!=m&&(G.appendChild(FilenameDialog.createTypeHint(b,Z,m)),null!=b.editor.diagramFileTypes&&(I=document.createElement("tr"),G=document.createElement("td"),G.style.textOverflow="ellipsis",G.style.textAlign="right",G.style.maxWidth="100px",G.style.fontSize="10pt",G.style.width="84px",mxUtils.write(G,mxResources.get("type")+
+":"),I.appendChild(G),G=document.createElement("td"),G.style.whiteSpace="nowrap",I.appendChild(G),e=FilenameDialog.createFileTypes(b,Z,b.editor.diagramFileTypes),e.style.marginLeft="4px",e.style.width="198px",G.appendChild(e),Z.style.width=null!=q?q-40+"px":"190px",I.appendChild(G),C.appendChild(I)));null!=E&&(I=document.createElement("tr"),G=document.createElement("td"),G.colSpan=2,G.appendChild(E),I.appendChild(G),C.appendChild(I));I=document.createElement("tr");G=document.createElement("td");G.colSpan=
+2;G.style.paddingTop=null!=m?"12px":"20px";G.style.whiteSpace="nowrap";G.setAttribute("align","right");m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});m.className="geBtn";b.editor.cancelFirst&&G.appendChild(m);null!=d&&(q=mxUtils.button(mxResources.get("help"),function(){b.editor.graph.openLink(d)}),q.className="geBtn",G.appendChild(q));mxEvent.addListener(Z,"keypress",function(aa){13==aa.keyCode&&ca.click()});G.appendChild(ca);b.editor.cancelFirst||G.appendChild(m);
+I.appendChild(G);C.appendChild(I);F.appendChild(C);this.container=F};FilenameDialog.filenameHelpLink=null;
FilenameDialog.createTypeHint=function(b,e,k){var n=document.createElement("img");n.style.backgroundPosition="center bottom";n.style.backgroundRepeat="no-repeat";n.style.margin="2px 0 0 4px";n.style.verticalAlign="top";n.style.cursor="pointer";n.style.height="16px";n.style.width="16px";mxUtils.setOpacity(n,70);var D=function(){n.setAttribute("src",Editor.helpImage);n.setAttribute("title",mxResources.get("help"));for(var t=0;t<k.length;t++)if(0<k[t].ext.length&&e.value.toLowerCase().substring(e.value.length-
k[t].ext.length-1)=="."+k[t].ext){n.setAttribute("title",mxResources.get(k[t].title));break}};mxEvent.addListener(e,"keyup",D);mxEvent.addListener(e,"change",D);mxEvent.addListener(n,"click",function(t){var E=n.getAttribute("title");n.getAttribute("src")==Editor.helpImage?b.editor.graph.openLink(FilenameDialog.filenameHelpLink):""!=E&&b.showError(null,E,mxResources.get("help"),function(){b.editor.graph.openLink(FilenameDialog.filenameHelpLink)},null,mxResources.get("ok"),null,null,null,340,90);mxEvent.consume(t)});
D();return n};
@@ -2051,41 +2051,41 @@ mxGraphView.prototype.validateBackgroundStyles=function(){var E=this.graph,d=nul
E.defaultPageBorderColor,E.container.className="geDiagramContainer geDiagramBackdrop",f.style.backgroundImage="none",f.style.backgroundColor=""):(E.container.className="geDiagramContainer",f.style.backgroundPosition=m,f.style.backgroundColor=d,f.style.backgroundImage=g)};mxGraphView.prototype.createSvgGrid=function(E){for(var d=this.graph.gridSize*this.scale;d<this.minGridSize;)d*=2;for(var f=this.gridSteps*d,g=[],m=1;m<this.gridSteps;m++){var q=m*d;g.push("M 0 "+q+" L "+f+" "+q+" M "+q+" 0 L "+q+
" "+f)}return'<svg width="'+f+'" height="'+f+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+f+'" height="'+f+'" patternUnits="userSpaceOnUse"><path d="'+g.join(" ")+'" fill="none" stroke="'+E+'" opacity="0.2" stroke-width="1"/><path d="M '+f+" 0 L 0 0 0 "+f+'" fill="none" stroke="'+E+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var b=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){b.apply(this,arguments);
if(null!=this.shiftPreview1){var f=this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var g=this.gridSize*this.view.scale*this.view.gridSteps;g=-Math.round(g-mxUtils.mod(this.view.translate.x*this.view.scale+E,g))+"px "+-Math.round(g-mxUtils.mod(this.view.translate.y*this.view.scale+d,g))+"px";f.style.backgroundPosition=g}};mxGraph.prototype.updatePageBreaks=function(E,d,f){var g=this.view.scale,m=this.view.translate,q=this.pageFormat,y=g*this.pageScale,F=this.view.getBackgroundPageBounds();
-d=F.width;f=F.height;var C=new mxRectangle(g*m.x,g*m.y,q.width*y,q.height*y),I=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,aa=F.x+d,ca=F.y+f;null==this.horizontalPageBreaks&&0<I&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(ba){if(null!=ba){for(var Z=ba==this.horizontalPageBreaks?I:G,qa=0;qa<=Z;qa++){var N=ba==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
-Math.round(F.y+(qa+1)*C.height)),new mxPoint(Math.round(aa),Math.round(F.y+(qa+1)*C.height))]:[new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(F.y)),new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(ca))];null!=ba[qa]?(ba[qa].points=N,ba[qa].redraw()):(N=new mxPolyline(N,this.pageBreakColor),N.dialect=this.dialect,N.isDashed=this.pageBreakDashed,N.pointerEvents=!1,N.init(this.view.backgroundPane),N.redraw(),ba[qa]=N)}for(qa=Z;qa<ba.length;qa++)ba[qa].destroy();ba.splice(Z,ba.length-Z)}});
+d=F.width;f=F.height;var C=new mxRectangle(g*m.x,g*m.y,q.width*y,q.height*y),I=(E=E&&Math.min(C.width,C.height)>this.minPageBreakDist)?Math.ceil(f/C.height)-1:0,G=E?Math.ceil(d/C.width)-1:0,Z=F.x+d,ca=F.y+f;null==this.horizontalPageBreaks&&0<I&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<G&&(this.verticalPageBreaks=[]);E=mxUtils.bind(this,function(aa){if(null!=aa){for(var Y=aa==this.horizontalPageBreaks?I:G,qa=0;qa<=Y;qa++){var Q=aa==this.horizontalPageBreaks?[new mxPoint(Math.round(F.x),
+Math.round(F.y+(qa+1)*C.height)),new mxPoint(Math.round(Z),Math.round(F.y+(qa+1)*C.height))]:[new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(F.y)),new mxPoint(Math.round(F.x+(qa+1)*C.width),Math.round(ca))];null!=aa[qa]?(aa[qa].points=Q,aa[qa].redraw()):(Q=new mxPolyline(Q,this.pageBreakColor),Q.dialect=this.dialect,Q.isDashed=this.pageBreakDashed,Q.pointerEvents=!1,Q.init(this.view.backgroundPane),Q.redraw(),aa[qa]=Q)}for(qa=Y;qa<aa.length;qa++)aa[qa].destroy();aa.splice(Y,aa.length-Y)}});
E(this.horizontalPageBreaks);E(this.verticalPageBreaks)};var e=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(E,d,f){for(var g=0;g<d.length;g++){if(this.graph.isTableCell(d[g])||this.graph.isTableRow(d[g]))return!1;if(this.graph.getModel().isVertex(d[g])){var m=this.graph.getCellGeometry(d[g]);if(null!=m&&m.relative)return!1}}return e.apply(this,arguments)};var k=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=
function(){var E=k.apply(this,arguments);E.intersects=mxUtils.bind(this,function(d,f){return this.isConnecting()?!0:mxCellMarker.prototype.intersects.apply(E,arguments)});return E};mxGraphView.prototype.createBackgroundPageShape=function(E){return new mxRectangleShape(E,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var E=this.getGraphBounds(),d=0<E.width?E.x/this.scale-this.translate.x:0,f=0<E.height?E.y/this.scale-this.translate.y:0,g=this.graph.pageFormat,
m=this.graph.pageScale,q=g.width*m;g=g.height*m;m=Math.floor(Math.min(0,d)/q);var y=Math.floor(Math.min(0,f)/g);return new mxRectangle(this.scale*(this.translate.x+m*q),this.scale*(this.translate.y+y*g),this.scale*(Math.ceil(Math.max(1,d+E.width/this.scale)/q)-m)*q,this.scale*(Math.ceil(Math.max(1,f+E.height/this.scale)/g)-y)*g)};var n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(E,d){n.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||
this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=E+"px",this.view.backgroundPageShape.node.style.marginTop=d+"px")};var D=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(E,d,f,g,m,q){var y=D.apply(this,arguments);null==q||q||mxEvent.addListener(y,"mousedown",function(F){mxEvent.consume(F)});return y};var t=mxGraphHandler.prototype.isPropagateSelectionCell;mxGraphHandler.prototype.isPropagateSelectionCell=
function(E,d,f){var g=this.graph.model.getParent(E);if(d){var m=this.graph.model.isEdge(E)?null:this.graph.getCellGeometry(E);m=!this.graph.model.isEdge(g)&&!this.graph.isSiblingSelected(E)&&(null!=m&&m.relative||!this.graph.isContainer(g)||this.graph.isPart(E))}else if(m=t.apply(this,arguments),this.graph.isTableCell(E)||this.graph.isTableRow(E))m=g,this.graph.isTable(m)||(m=this.graph.model.getParent(m)),m=!this.graph.selectionCellsHandler.isHandled(m)||this.graph.isCellSelected(m)&&this.graph.isToggleEvent(f.getEvent())||
-this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return m};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),m=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);m=m||q;if(q||!m&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var J=D.apply(this,arguments),W=this.backgroundImage;if(null!=W&&null!=W.width&&null!=W.height){var Q=this.view.translate,S=this.view.scale;J=mxRectangle.fromRectangle(J);J.add(new mxRectangle((Q.x+W.x)*S,(Q.y+W.y)*S,W.width*S,W.height*S))}return J};n.useCssTransforms&&(this.lazyZoomDelay=
-0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(J,W){this.clearSelectionState()});n.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
-n.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);n.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);n.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);n.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,n.isEnabled=function(){return!1},n.panningHandler.isForcePanningEvent=function(J){return!mxEvent.isPopupTrigger(J.getEvent())});this.actions=new Actions(this);this.menus=
+this.graph.isCellSelected(E)&&!this.graph.isToggleEvent(f.getEvent())||this.graph.isTableCell(E)&&this.graph.isCellSelected(g);return m};mxPopupMenuHandler.prototype.getCellForPopupEvent=function(E){E=E.getCell();for(var d=this.graph.getModel(),f=d.getParent(E),g=this.graph.view.getState(f),m=this.graph.isCellSelected(E);null!=g&&(d.isVertex(f)||d.isEdge(f));){var q=this.graph.isCellSelected(f);m=m||q;if(q||!m&&(this.graph.isTableCell(E)||this.graph.isTableRow(E)))E=f;f=d.getParent(f)}return E}})();EditorUi=function(b,e,k){mxEventSource.call(this);this.destroyFunctions=[];this.editor=b||new Editor;this.container=e||document.body;var n=this.editor.graph;n.lightbox=k;var D=n.getGraphBounds;n.getGraphBounds=function(){var O=D.apply(this,arguments),N=this.backgroundImage;if(null!=N&&null!=N.width&&null!=N.height){var ba=this.view.translate,la=this.view.scale;O=mxRectangle.fromRectangle(O);O.add(new mxRectangle((ba.x+N.x)*la,(ba.y+N.y)*la,N.width*la,N.height*la))}return O};n.useCssTransforms&&(this.lazyZoomDelay=
+0);mxClient.IS_SVG?mxPopupMenu.prototype.submenuImage="data:image/gif;base64,R0lGODlhCQAJAIAAAP///zMzMyH5BAEAAAAALAAAAAAJAAkAAAIPhI8WebHsHopSOVgb26AAADs=":(new Image).src=mxPopupMenu.prototype.submenuImage;mxClient.IS_SVG||null==mxConnectionHandler.prototype.connectImage||((new Image).src=mxConnectionHandler.prototype.connectImage.src);this.selectionStateListener=mxUtils.bind(this,function(O,N){this.clearSelectionState()});n.getSelectionModel().addListener(mxEvent.CHANGE,this.selectionStateListener);
+n.getModel().addListener(mxEvent.CHANGE,this.selectionStateListener);n.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);n.addListener(mxEvent.EDITING_STOPPED,this.selectionStateListener);n.getView().addListener("unitChanged",this.selectionStateListener);this.editor.chromeless&&!this.editor.editable&&(this.footerHeight=0,n.isEnabled=function(){return!1},n.panningHandler.isForcePanningEvent=function(O){return!mxEvent.isPopupTrigger(O.getEvent())});this.actions=new Actions(this);this.menus=
this.createMenus();if(!n.standalone){var t="rounded shadow glass dashed dashPattern labelBackgroundColor labelBorderColor comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle pointerEvents".split(" "),E="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),
-d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(J){try{var W=n.getCellStyle(J,!1),Q=[],S=[],ha;for(ha in W)Q.push(W[ha]),S.push(ha);n.getModel().isEdge(J)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",S,"values",Q,"cells",[J]))}catch(la){this.handleError(la)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=mxUtils.clone(n.defaultEdgeStyle);
-n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var f=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<f.length;e++)0>mxUtils.indexOf(t,f[e])&&t.push(f[e]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),m=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],
-["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<m.length;e++)for(k=0;k<m[e].length;k++)t.push(m[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var q=function(J,W,Q,S,ha,la,u){S=null!=S?S:n.currentVertexStyle;ha=null!=ha?ha:n.currentEdgeStyle;la=null!=la?la:!0;Q=null!=Q?Q:n.getModel();if(u){u=[];for(var H=0;H<J.length;H++)u=u.concat(Q.getDescendants(J[H]));J=u}Q.beginUpdate();try{for(H=0;H<J.length;H++){var O=J[H];if(W)var T=["fontSize","fontFamily",
-"fontColor"];else{var R=Q.getStyle(O),da=null!=R?R.split(";"):[];T=t.slice();for(var P=0;P<da.length;P++){var ma=da[P],ra=ma.indexOf("=");if(0<=ra){var xa=ma.substring(0,ra),ta=mxUtils.indexOf(T,xa);0<=ta&&T.splice(ta,1);for(u=0;u<m.length;u++){var Aa=m[u];if(0<=mxUtils.indexOf(Aa,xa))for(var Ca=0;Ca<Aa.length;Ca++){var Ba=mxUtils.indexOf(T,Aa[Ca]);0<=Ba&&T.splice(Ba,1)}}}}}var sa=Q.isEdge(O);u=sa?ha:S;var Oa=Q.getStyle(O);for(P=0;P<T.length;P++){xa=T[P];var Ta=u[xa];null!=Ta&&"edgeStyle"!=xa&&("shape"!=
-xa||sa)&&(!sa||la||0>mxUtils.indexOf(d,xa))&&(Oa=mxUtils.setStyle(Oa,xa,Ta))}Editor.simpleLabels&&(Oa=mxUtils.setStyle(mxUtils.setStyle(Oa,"html",null),"whiteSpace",null));Q.setStyle(O,Oa)}}finally{Q.endUpdate()}return J};n.addListener("cellsInserted",function(J,W){q(W.getProperty("cells"),null,null,null,null,!0,!0)});n.addListener("textInserted",function(J,W){q(W.getProperty("cells"),!0)});this.insertHandler=q;this.createDivs();this.createUi();this.refresh();var y=mxUtils.bind(this,function(J){null==
-J&&(J=window.event);return n.isEditing()||null!=J&&this.isSelectionAllowed(J)});this.container==document.body&&(this.menubarContainer.onselectstart=y,this.menubarContainer.onmousedown=y,this.toolbarContainer.onselectstart=y,this.toolbarContainer.onmousedown=y,this.diagramContainer.onselectstart=y,this.diagramContainer.onmousedown=y,this.sidebarContainer.onselectstart=y,this.sidebarContainer.onmousedown=y,this.formatContainer.onselectstart=y,this.formatContainer.onmousedown=y,this.footerContainer.onselectstart=
-y,this.footerContainer.onmousedown=y,null!=this.tabContainer&&(this.tabContainer.onselectstart=y));!this.editor.chromeless||this.editor.editable?(e=function(J){if(null!=J){var W=mxEvent.getSource(J);if("A"==W.nodeName)for(;null!=W;){if("geHint"==W.className)return!0;W=W.parentNode}}return y(J)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",e):this.diagramContainer.oncontextmenu=e):n.panningHandler.usePopupTrigger=
-!1;n.init(this.diagramContainer);mxClient.IS_SVG&&null!=n.view.getDrawPane()&&(e=n.view.getDrawPane().ownerSVGElement,null!=e&&(e.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=n.graphHandler){var F=n.graphHandler.start;n.graphHandler.start=function(){null!=ea.hoverIcons&&ea.hoverIcons.reset();F.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(J){var W=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(J)-
-W.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(J)-W.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var C=!1,I=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(J,W){return C||I.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(J){32!=J.which||n.isEditing()?mxEvent.isConsumed(J)||27!=J.keyCode||this.hideDialog(null,!0):(C=!0,this.hoverIcons.reset(),
-n.container.style.cursor="move",n.isEditing()||mxEvent.getSource(J)!=n.container||mxEvent.consume(J))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(J){n.container.style.cursor="";C=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var G=n.panningHandler.isForcePanningEvent;n.panningHandler.isForcePanningEvent=function(J){return G.apply(this,arguments)||C||mxEvent.isMouseEvent(J.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(J.getEvent()))&&
-(!mxEvent.isControlDown(J.getEvent())&&mxEvent.isRightMouseButton(J.getEvent())||mxEvent.isMiddleMouseButton(J.getEvent()))};var aa=n.cellEditor.isStopEditingEvent;n.cellEditor.isStopEditingEvent=function(J){return aa.apply(this,arguments)||13==J.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(J)||mxClient.IS_MAC&&mxEvent.isMetaDown(J)||mxClient.IS_SF&&mxEvent.isShiftDown(J))};var ca=n.isZoomWheelEvent;n.isZoomWheelEvent=function(){return C||ca.apply(this,arguments)};var ba=!1,Z=null,qa=null,N=null,
-Y=mxUtils.bind(this,function(){if(null!=this.toolbar&&ba!=n.cellEditor.isContentEditing()){for(var J=this.toolbar.container.firstChild,W=[];null!=J;){var Q=J.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,J)&&(J.parentNode.removeChild(J),W.push(J));J=Q}J=this.toolbar.fontMenu;Q=this.toolbar.sizeMenu;if(null==N)this.toolbar.createTextToolbar();else{for(var S=0;S<N.length;S++)this.toolbar.container.appendChild(N[S]);this.toolbar.fontMenu=Z;this.toolbar.sizeMenu=qa}ba=n.cellEditor.isContentEditing();
-Z=J;qa=Q;N=W}}),ea=this,ka=n.cellEditor.startEditing;n.cellEditor.startEditing=function(){ka.apply(this,arguments);Y();if(n.cellEditor.isContentEditing()){var J=!1,W=function(){J||(J=!0,window.setTimeout(function(){var Q=n.getSelectedEditingElement();null!=Q&&(Q=mxUtils.getCurrentStyle(Q),null!=Q&&null!=ea.toolbar&&(ea.toolbar.setFontName(Graph.stripQuotes(Q.fontFamily)),ea.toolbar.setFontSize(parseInt(Q.fontSize))));J=!1},0))};mxEvent.addListener(n.cellEditor.textarea,"input",W);mxEvent.addListener(n.cellEditor.textarea,
-"touchend",W);mxEvent.addListener(n.cellEditor.textarea,"mouseup",W);mxEvent.addListener(n.cellEditor.textarea,"keyup",W);W()}};var ja=n.cellEditor.stopEditing;n.cellEditor.stopEditing=function(J,W){try{ja.apply(this,arguments),Y()}catch(Q){ea.handleError(Q)}};n.container.setAttribute("tabindex","0");n.container.style.cursor="default";if(window.self===window.top&&null!=n.container.parentNode)try{n.container.focus()}catch(J){}var V=n.fireMouseEvent;n.fireMouseEvent=function(J,W,Q){J==mxEvent.MOUSE_DOWN&&
-this.container.focus();V.apply(this,arguments)};n.popupMenuHandler.autoExpand=!0;null!=this.menus&&(n.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(J,W,Q){this.menus.createPopupMenu(J,W,Q)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(J){n.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};n.connectionHandler.addListener(mxEvent.CONNECT,function(J,W){var Q=[W.getProperty("cell")];W.getProperty("terminalInserted")&&
-(Q.push(W.getProperty("terminal")),window.setTimeout(function(){null!=ea.hoverIcons&&ea.hoverIcons.update(n.view.getState(Q[Q.length-1]))},0));q(Q)});this.addListener("styleChanged",mxUtils.bind(this,function(J,W){var Q=W.getProperty("cells"),S=J=!1;if(0<Q.length)for(var ha=0;ha<Q.length&&(J=n.getModel().isVertex(Q[ha])||J,!(S=n.getModel().isEdge(Q[ha])||S)||!J);ha++);else S=J=!0;Q=W.getProperty("keys");W=W.getProperty("values");for(ha=0;ha<Q.length;ha++){var la=0<=mxUtils.indexOf(f,Q[ha]);if("strokeColor"!=
-Q[ha]||null!=W[ha]&&"none"!=W[ha])if(0<=mxUtils.indexOf(E,Q[ha]))S||0<=mxUtils.indexOf(g,Q[ha])?null==W[ha]?delete n.currentEdgeStyle[Q[ha]]:n.currentEdgeStyle[Q[ha]]=W[ha]:J&&0<=mxUtils.indexOf(t,Q[ha])&&(null==W[ha]?delete n.currentVertexStyle[Q[ha]]:n.currentVertexStyle[Q[ha]]=W[ha]);else if(0<=mxUtils.indexOf(t,Q[ha])){if(J||la)null==W[ha]?delete n.currentVertexStyle[Q[ha]]:n.currentVertexStyle[Q[ha]]=W[ha];if(S||la||0<=mxUtils.indexOf(g,Q[ha]))null==W[ha]?delete n.currentEdgeStyle[Q[ha]]:n.currentEdgeStyle[Q[ha]]=
-W[ha]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==
-n.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&
-(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==n.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==n.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==n.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var J=n.currentVertexStyle.fontFamily||"Helvetica",W=String(n.currentVertexStyle.fontSize||"12"),Q=n.getView().getState(n.getSelectionCell());null!=Q&&(J=
-Q.style[mxConstants.STYLE_FONTFAMILY]||J,W=Q.style[mxConstants.STYLE_FONTSIZE]||W,10<J.length&&(J=J.substring(0,8)+"..."));this.toolbar.setFontName(J);this.toolbar.setFontSize(W)}),n.getSelectionModel().addListener(mxEvent.CHANGE,b),n.getModel().addListener(mxEvent.CHANGE,b));n.addListener(mxEvent.CELLS_ADDED,function(J,W){J=W.getProperty("cells");W=W.getProperty("parent");null!=W&&n.getModel().isLayer(W)&&!n.isCellVisible(W)&&null!=J&&0<J.length&&n.getModel().setVisible(W,!0)});this.gestureHandler=
-mxUtils.bind(this,function(J){null!=this.currentMenu&&mxEvent.getSource(J)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",
-this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));
-n.addListener("gridSizeChanged",mxUtils.bind(this,function(){n.isGridEnabled()&&n.view.validateBackground()}));this.editor.resetGraph()}this.init();n.standalone||this.open()};EditorUi.compactUi=!0;
+d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" "),f=!1,g=!1;this.setDefaultStyle=function(O){try{var N=n.getCellStyle(O,!1),ba=[],la=[],u;for(u in N)ba.push(N[u]),la.push(u);n.getModel().isEdge(O)?n.currentEdgeStyle={}:n.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",la,"values",ba,"cells",[O]));n.getModel().isEdge(O)?g=!0:f=!0}catch(H){this.handleError(H)}};this.clearDefaultStyle=function(){n.currentEdgeStyle=
+mxUtils.clone(n.defaultEdgeStyle);n.currentVertexStyle=mxUtils.clone(n.defaultVertexStyle);f=g=!1;this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var m=["fontFamily","fontSource","fontSize","fontColor"];for(e=0;e<m.length;e++)0>mxUtils.indexOf(t,m[e])&&t.push(m[e]);var q="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),y=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],
+["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(e=0;e<y.length;e++)for(k=0;k<y[e].length;k++)t.push(y[e][k]);for(e=0;e<E.length;e++)0>mxUtils.indexOf(t,E[e])&&t.push(E[e]);var F=function(O,N,ba,la,u,H,P){la=null!=la?la:n.currentVertexStyle;u=null!=u?u:n.currentEdgeStyle;H=null!=H?H:!0;ba=null!=ba?ba:n.getModel();if(P){P=[];for(var T=0;T<O.length;T++)P=P.concat(ba.getDescendants(O[T]));O=P}ba.beginUpdate();try{for(T=0;T<O.length;T++){var S=
+O[T];if(N)var da=["fontSize","fontFamily","fontColor"];else{var R=ba.getStyle(S),ma=null!=R?R.split(";"):[];da=t.slice();for(var ra=0;ra<ma.length;ra++){var xa=ma[ra],ta=xa.indexOf("=");if(0<=ta){var Aa=xa.substring(0,ta),Ca=mxUtils.indexOf(da,Aa);0<=Ca&&da.splice(Ca,1);for(P=0;P<y.length;P++){var Ba=y[P];if(0<=mxUtils.indexOf(Ba,Aa))for(var sa=0;sa<Ba.length;sa++){var Pa=mxUtils.indexOf(da,Ba[sa]);0<=Pa&&da.splice(Pa,1)}}}}}var Ta=ba.isEdge(S);P=Ta?u:la;var Oa=ba.getStyle(S);for(ra=0;ra<da.length;ra++){Aa=
+da[ra];var Xa=P[Aa];null!=Xa&&"edgeStyle"!=Aa&&("shape"!=Aa||Ta)&&(!Ta||H||0>mxUtils.indexOf(d,Aa))&&(Oa=mxUtils.setStyle(Oa,Aa,Xa))}Editor.simpleLabels&&(Oa=mxUtils.setStyle(mxUtils.setStyle(Oa,"html",null),"whiteSpace",null));ba.setStyle(S,Oa)}}finally{ba.endUpdate()}return O};n.addListener("cellsInserted",function(O,N){F(N.getProperty("cells"),null,null,null,null,!0,!0)});n.addListener("textInserted",function(O,N){F(N.getProperty("cells"),!0)});this.insertHandler=F;this.createDivs();this.createUi();
+this.refresh();var C=mxUtils.bind(this,function(O){null==O&&(O=window.event);return n.isEditing()||null!=O&&this.isSelectionAllowed(O)});this.container==document.body&&(this.menubarContainer.onselectstart=C,this.menubarContainer.onmousedown=C,this.toolbarContainer.onselectstart=C,this.toolbarContainer.onmousedown=C,this.diagramContainer.onselectstart=C,this.diagramContainer.onmousedown=C,this.sidebarContainer.onselectstart=C,this.sidebarContainer.onmousedown=C,this.formatContainer.onselectstart=C,
+this.formatContainer.onmousedown=C,this.footerContainer.onselectstart=C,this.footerContainer.onmousedown=C,null!=this.tabContainer&&(this.tabContainer.onselectstart=C));!this.editor.chromeless||this.editor.editable?(e=function(O){if(null!=O){var N=mxEvent.getSource(O);if("A"==N.nodeName)for(;null!=N;){if("geHint"==N.className)return!0;N=N.parentNode}}return C(O)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",
+e):this.diagramContainer.oncontextmenu=e):n.panningHandler.usePopupTrigger=!1;n.init(this.diagramContainer);mxClient.IS_SVG&&null!=n.view.getDrawPane()&&(e=n.view.getDrawPane().ownerSVGElement,null!=e&&(e.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=n.graphHandler){var I=n.graphHandler.start;n.graphHandler.start=function(){null!=ia.hoverIcons&&ia.hoverIcons.reset();I.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(O){var N=
+mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(O)-N.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(O)-N.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var G=!1,Z=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(O,N){return G||Z.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(O){32!=O.which||n.isEditing()?mxEvent.isConsumed(O)||
+27!=O.keyCode||this.hideDialog(null,!0):(G=!0,this.hoverIcons.reset(),n.container.style.cursor="move",n.isEditing()||mxEvent.getSource(O)!=n.container||mxEvent.consume(O))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(O){n.container.style.cursor="";G=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var ca=n.panningHandler.isForcePanningEvent;n.panningHandler.isForcePanningEvent=function(O){return ca.apply(this,arguments)||G||
+mxEvent.isMouseEvent(O.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(O.getEvent()))&&(!mxEvent.isControlDown(O.getEvent())&&mxEvent.isRightMouseButton(O.getEvent())||mxEvent.isMiddleMouseButton(O.getEvent()))};var aa=n.cellEditor.isStopEditingEvent;n.cellEditor.isStopEditingEvent=function(O){return aa.apply(this,arguments)||13==O.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(O)||mxClient.IS_MAC&&mxEvent.isMetaDown(O)||mxClient.IS_SF&&mxEvent.isShiftDown(O))};var Y=n.isZoomWheelEvent;
+n.isZoomWheelEvent=function(){return G||Y.apply(this,arguments)};var qa=!1,Q=null,X=null,fa=null,ka=mxUtils.bind(this,function(){if(null!=this.toolbar&&qa!=n.cellEditor.isContentEditing()){for(var O=this.toolbar.container.firstChild,N=[];null!=O;){var ba=O.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,O)&&(O.parentNode.removeChild(O),N.push(O));O=ba}O=this.toolbar.fontMenu;ba=this.toolbar.sizeMenu;if(null==fa)this.toolbar.createTextToolbar();else{for(var la=0;la<fa.length;la++)this.toolbar.container.appendChild(fa[la]);
+this.toolbar.fontMenu=Q;this.toolbar.sizeMenu=X}qa=n.cellEditor.isContentEditing();Q=O;X=ba;fa=N}}),ia=this,V=n.cellEditor.startEditing;n.cellEditor.startEditing=function(){V.apply(this,arguments);ka();if(n.cellEditor.isContentEditing()){var O=!1,N=function(){O||(O=!0,window.setTimeout(function(){var ba=n.getSelectedEditingElement();null!=ba&&(ba=mxUtils.getCurrentStyle(ba),null!=ba&&null!=ia.toolbar&&(ia.toolbar.setFontName(Graph.stripQuotes(ba.fontFamily)),ia.toolbar.setFontSize(parseInt(ba.fontSize))));
+O=!1},0))};mxEvent.addListener(n.cellEditor.textarea,"input",N);mxEvent.addListener(n.cellEditor.textarea,"touchend",N);mxEvent.addListener(n.cellEditor.textarea,"mouseup",N);mxEvent.addListener(n.cellEditor.textarea,"keyup",N);N()}};var L=n.cellEditor.stopEditing;n.cellEditor.stopEditing=function(O,N){try{L.apply(this,arguments),ka()}catch(ba){ia.handleError(ba)}};n.container.setAttribute("tabindex","0");n.container.style.cursor="default";if(window.self===window.top&&null!=n.container.parentNode)try{n.container.focus()}catch(O){}var ea=
+n.fireMouseEvent;n.fireMouseEvent=function(O,N,ba){O==mxEvent.MOUSE_DOWN&&this.container.focus();ea.apply(this,arguments)};n.popupMenuHandler.autoExpand=!0;null!=this.menus&&(n.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(O,N,ba){this.menus.createPopupMenu(O,N,ba)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(O){n.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};n.connectionHandler.addListener(mxEvent.CONNECT,
+function(O,N){var ba=[N.getProperty("cell")];N.getProperty("terminalInserted")&&(ba.push(N.getProperty("terminal")),window.setTimeout(function(){null!=ia.hoverIcons&&ia.hoverIcons.update(n.view.getState(ba[ba.length-1]))},0));F(ba)});this.addListener("styleChanged",mxUtils.bind(this,function(O,N){var ba=N.getProperty("cells"),la=O=!1;if(0<ba.length)for(var u=0;u<ba.length&&(O=n.getModel().isVertex(ba[u])||O,!(la=n.getModel().isEdge(ba[u])||la)||!O);u++);else la=O=!0;O=O&&!f;la=la&&!g;ba=N.getProperty("keys");
+N=N.getProperty("values");for(u=0;u<ba.length;u++){var H=0<=mxUtils.indexOf(m,ba[u]);if("strokeColor"!=ba[u]||null!=N[u]&&"none"!=N[u])if(0<=mxUtils.indexOf(E,ba[u]))la||0<=mxUtils.indexOf(q,ba[u])?null==N[u]?delete n.currentEdgeStyle[ba[u]]:n.currentEdgeStyle[ba[u]]=N[u]:O&&0<=mxUtils.indexOf(t,ba[u])&&(null==N[u]?delete n.currentVertexStyle[ba[u]]:n.currentVertexStyle[ba[u]]=N[u]);else if(0<=mxUtils.indexOf(t,ba[u])){if(O||H)null==N[u]?delete n.currentVertexStyle[ba[u]]:n.currentVertexStyle[ba[u]]=
+N[u];if(la||H||0<=mxUtils.indexOf(q,ba[u]))null==N[u]?delete n.currentEdgeStyle[ba[u]]:n.currentEdgeStyle[ba[u]]=N[u]}}null!=this.toolbar&&(this.toolbar.setFontName(n.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(n.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==n.currentEdgeStyle.edgeStyle&&"1"==n.currentEdgeStyle.curved?
+"geSprite geSprite-curved":"straight"==n.currentEdgeStyle.edgeStyle||"none"==n.currentEdgeStyle.edgeStyle||null==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==n.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==n.currentEdgeStyle.elbow?
+"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"),null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==n.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==n.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==n.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"))}));null!=this.toolbar&&(b=mxUtils.bind(this,function(){var O=n.currentVertexStyle.fontFamily||"Helvetica",
+N=String(n.currentVertexStyle.fontSize||"12"),ba=n.getView().getState(n.getSelectionCell());null!=ba&&(O=ba.style[mxConstants.STYLE_FONTFAMILY]||O,N=ba.style[mxConstants.STYLE_FONTSIZE]||N,10<O.length&&(O=O.substring(0,8)+"..."));this.toolbar.setFontName(O);this.toolbar.setFontSize(N)}),n.getSelectionModel().addListener(mxEvent.CHANGE,b),n.getModel().addListener(mxEvent.CHANGE,b));n.addListener(mxEvent.CELLS_ADDED,function(O,N){O=N.getProperty("cells");N=N.getProperty("parent");null!=N&&n.getModel().isLayer(N)&&
+!n.isCellVisible(N)&&null!=O&&0<O.length&&n.getModel().setVisible(N,!0)});this.gestureHandler=mxUtils.bind(this,function(O){null!=this.currentMenu&&mxEvent.getSource(O)!=this.currentMenu.div&&this.hideCurrentMenu()});mxEvent.addGestureListeners(document,this.gestureHandler);this.resizeHandler=mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){null!=this.editor.graph&&this.refresh()}),0)});mxEvent.addListener(window,"resize",this.resizeHandler);this.orientationChangeHandler=
+mxUtils.bind(this,function(){this.refresh()});mxEvent.addListener(window,"orientationchange",this.orientationChangeHandler);mxClient.IS_IOS&&!window.navigator.standalone&&"undefined"!==typeof Menus&&(this.scrollHandler=mxUtils.bind(this,function(){window.scrollTo(0,0)}),mxEvent.addListener(window,"scroll",this.scrollHandler));this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.resetScrollbars()}));this.addListener("gridEnabledChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));
+this.addListener("backgroundColorChanged",mxUtils.bind(this,function(){n.view.validateBackground()}));n.addListener("gridSizeChanged",mxUtils.bind(this,function(){n.isGridEnabled()&&n.view.validateBackground()}));this.editor.resetGraph()}this.init();n.standalone||this.open()};EditorUi.compactUi=!0;
EditorUi.parsePng=function(b,e,k){function n(d,f){var g=t;t+=f;return d.substring(g,t)}function D(d){d=n(d,4);return d.charCodeAt(3)+(d.charCodeAt(2)<<8)+(d.charCodeAt(1)<<16)+(d.charCodeAt(0)<<24)}var t=0;if(n(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=k&&k();else if(n(b,4),"IHDR"!=n(b,4))null!=k&&k();else{n(b,17);do{k=D(b);var E=n(b,4);if(null!=e&&e(t-8,E,k))break;value=n(b,k);n(b,4);if("IEND"==E)break}while(k)}};mxUtils.extend(EditorUi,mxEventSource);
EditorUi.prototype.splitSize=mxClient.IS_TOUCH||mxClient.IS_POINTER?12:8;EditorUi.prototype.menubarHeight=30;EditorUi.prototype.formatEnabled=!0;EditorUi.prototype.formatWidth=240;EditorUi.prototype.toolbarHeight=38;EditorUi.prototype.footerHeight=28;EditorUi.prototype.sidebarFooterHeight=34;EditorUi.prototype.hsplitPosition=640>=screen.width?118:"large"!=urlParams["sidebar-entries"]?212:240;EditorUi.prototype.allowAnimation=!0;EditorUi.prototype.lightboxMaxFitScale=2;
EditorUi.prototype.lightboxVerticalDivider=4;EditorUi.prototype.hsplitClickEnabled=!1;
@@ -2103,7 +2103,7 @@ EditorUi.prototype.installShapePicker=function(){var b=this.editor.graph,e=this;
b.popupMenuHandler.isMenuShowing=function(){return n.apply(this,arguments)||null!=e.shapePicker};var D=b.dblClick;b.dblClick=function(f,g){if(this.isEnabled())if(null!=g||null==e.sidebar||mxEvent.isShiftDown(f)||b.isCellLocked(b.getDefaultParent()))D.apply(this,arguments);else{var m=mxUtils.convertPoint(this.container,mxEvent.getClientX(f),mxEvent.getClientY(f));mxEvent.consume(f);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.x,m.y)}),30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",
k);var t=this.hoverIcons.drag;this.hoverIcons.drag=function(){e.hideShapePicker();t.apply(this,arguments)};var E=this.hoverIcons.execute;this.hoverIcons.execute=function(f,g,m){var q=m.getEvent();this.graph.isCloneEvent(q)||mxEvent.isShiftDown(q)?E.apply(this,arguments):this.graph.connectVertex(f.cell,g,this.graph.defaultEdgeLength,q,null,null,mxUtils.bind(this,function(y,F,C){var I=b.getCompositeParent(f.cell);y=b.getCellGeometry(I);for(m.consume();null!=I&&b.model.isVertex(I)&&null!=y&&y.relative;)cell=
I,I=b.model.getParent(cell),y=b.getCellGeometry(I);window.setTimeout(mxUtils.bind(this,function(){e.showShapePicker(m.getGraphX(),m.getGraphY(),I,mxUtils.bind(this,function(G){C(G);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(G))}),g)}),30)}),mxUtils.bind(this,function(y){this.graph.selectCellsForConnectVertex(y,q,this)}))};var d=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d);d=window.setTimeout(mxUtils.bind(this,function(){var m=
-g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");m=m.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+m.x-F.x;F=b.container.scrollTop+m.y-F.y;var I=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,I,mxUtils.bind(this,function(aa){null!=aa&&b.connectVertex(I,q,b.defaultEdgeLength,y,!0,!0,function(ca,ba,Z){Z(aa);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(aa))},
+g.getProperty("arrow"),q=g.getProperty("direction"),y=g.getProperty("event");m=m.getBoundingClientRect();var F=mxUtils.getOffset(b.container),C=b.container.scrollLeft+m.x-F.x;F=b.container.scrollTop+m.y-F.y;var I=b.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),G=e.showShapePicker(C,F,I,mxUtils.bind(this,function(Z){null!=Z&&b.connectVertex(I,q,b.defaultEdgeLength,y,!0,!0,function(ca,aa,Y){Y(Z);null!=e.hoverIcons&&e.hoverIcons.update(b.view.getState(Z))},
function(ca){b.selectCellsForConnectVertex(ca)},y,this.hoverIcons)}),q,!0);this.centerShapePicker(G,m,C,F,q);mxUtils.setOpacity(G,30);mxEvent.addListener(G,"mouseenter",function(){mxUtils.setOpacity(G,100)});mxEvent.addListener(G,"mouseleave",function(){e.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(f,g){null!=d&&window.clearTimeout(d)}))}};
EditorUi.prototype.centerShapePicker=function(b,e,k,n,D){if(D==mxConstants.DIRECTION_EAST||D==mxConstants.DIRECTION_WEST)b.style.width="40px";var t=b.getBoundingClientRect();D==mxConstants.DIRECTION_NORTH?(k-=t.width/2-10,n-=t.height+6):D==mxConstants.DIRECTION_SOUTH?(k-=t.width/2-10,n+=e.height+6):D==mxConstants.DIRECTION_WEST?(k-=t.width+6,n-=t.height/2-10):D==mxConstants.DIRECTION_EAST&&(k+=e.width+6,n-=t.height/2-10);b.style.left=k+"px";b.style.top=n+"px"};
EditorUi.prototype.showShapePicker=function(b,e,k,n,D,t){b=this.createShapePicker(b,e,k,n,D,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(k,t),t);null!=b&&(null==this.hoverIcons||t||this.hoverIcons.reset(),t=this.editor.graph,t.popupMenuHandler.hideMenu(),t.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=n,this.shapePicker=b);return b};
@@ -2129,40 +2129,40 @@ EditorUi.prototype.initClipboard=function(){var b=this,e=mxClipboard.cut;mxClipb
0),y=0;y<g.length;y++){m.add(q,g[y]);var F=t.view.getState(E[y]);if(null!=F){var C=t.getCellGeometry(g[y]);null!=C&&C.relative&&!m.isEdge(E[y])&&null==f[mxObjectIdentity.get(m.getParent(E[y]))]&&(C.offset=null,C.relative=!1,C.x=F.x/F.view.scale-F.view.translate.x,C.y=F.y/F.view.scale-F.view.translate.y)}}t.updateCustomLinks(t.createCellMapping(d,f),g);mxClipboard.insertCount=1;mxClipboard.setCells(g)}b.updatePasteActionStates();return E};var k=mxClipboard.paste;mxClipboard.paste=function(t){var E=
null;t.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):E=k.apply(this,arguments);b.updatePasteActionStates();return E};var n=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){n.apply(this,arguments);b.updatePasteActionStates()};var D=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(t,E){D.apply(this,arguments);b.updatePasteActionStates()};this.updatePasteActionStates()};
EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600;
-EditorUi.prototype.initCanvas=function(){var b=this.editor.graph;b.timerAutoScroll=!0;b.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((b.container.offsetWidth-34)/b.view.scale)),Math.max(0,Math.round((b.container.offsetHeight-34)/b.view.scale)))};b.view.getBackgroundPageBounds=function(){var Q=this.graph.getPageLayout(),S=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+Q.x*S.width),this.scale*(this.translate.y+Q.y*S.height),this.scale*Q.width*S.width,
-this.scale*Q.height*S.height)};b.getPreferredPageSize=function(Q,S,ha){Q=this.getPageLayout();S=this.getPageSize();return new mxRectangle(0,0,Q.width*S.width,Q.height*S.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(Q,S,ha,la){if(null!=b.container&&!b.isViewer()){ha=null!=ha?ha:0;la=null!=la?la:0;var u=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),H=mxUtils.hasScrollbars(b.container),O=b.view.translate,T=b.view.scale,
-R=mxRectangle.fromRectangle(u);R.x=R.x/T-O.x;R.y=R.y/T-O.y;R.width/=T;R.height/=T;O=b.container.scrollTop;var da=b.container.scrollLeft,P=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)P+=3;var ma=b.container.offsetWidth-P;P=b.container.offsetHeight-P;Q=Q?Math.max(.3,Math.min(S||1,ma/R.width)):T;S=(ma-Q*R.width)/2/Q;var ra=0==this.lightboxVerticalDivider?0:(P-Q*R.height)/this.lightboxVerticalDivider/Q;H&&(S=Math.max(S,0),ra=Math.max(ra,0));if(H||u.width<ma||u.height<
-P)b.view.scaleAndTranslate(Q,Math.floor(S-R.x),Math.floor(ra-R.y)),b.container.scrollTop=O*Q/T,b.container.scrollLeft=da*Q/T;else if(0!=ha||0!=la)u=b.view.translate,b.view.setTranslate(Math.floor(u.x+ha/T),Math.floor(u.y+la/T))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
-n)});this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(Q){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(Q){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var D=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";
+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 O=this.graph.getPageLayout(),N=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+O.x*N.width),this.scale*(this.translate.y+O.y*N.height),this.scale*O.width*N.width,
+this.scale*O.height*N.height)};b.getPreferredPageSize=function(O,N,ba){O=this.getPageLayout();N=this.getPageSize();return new mxRectangle(0,0,O.width*N.width,O.height*N.height)};var e=null,k=this;if(this.editor.isChromelessView()){this.chromelessResize=e=mxUtils.bind(this,function(O,N,ba,la){if(null!=b.container&&!b.isViewer()){ba=null!=ba?ba:0;la=null!=la?la:0;var u=b.pageVisible?b.view.getBackgroundPageBounds():b.getGraphBounds(),H=mxUtils.hasScrollbars(b.container),P=b.view.translate,T=b.view.scale,
+S=mxRectangle.fromRectangle(u);S.x=S.x/T-P.x;S.y=S.y/T-P.y;S.width/=T;S.height/=T;P=b.container.scrollTop;var da=b.container.scrollLeft,R=8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)R+=3;var ma=b.container.offsetWidth-R;R=b.container.offsetHeight-R;O=O?Math.max(.3,Math.min(N||1,ma/S.width)):T;N=(ma-O*S.width)/2/O;var ra=0==this.lightboxVerticalDivider?0:(R-O*S.height)/this.lightboxVerticalDivider/O;H&&(N=Math.max(N,0),ra=Math.max(ra,0));if(H||u.width<ma||u.height<
+R)b.view.scaleAndTranslate(O,Math.floor(N-S.x),Math.floor(ra-S.y)),b.container.scrollTop=P*O/T,b.container.scrollLeft=da*O/T;else if(0!=ba||0!=la)u=b.view.translate,b.view.setTranslate(Math.floor(u.x+ba/T),Math.floor(u.y+la/T))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var n=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",n);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",
+n)});this.editor.addListener("resetGraphView",mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(O){b.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(O){b.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var D=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";
this.chromelessToolbar.style.overflow="hidden";this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=b.isViewer()?"0":"50%";mxClient.IS_IE||mxClient.IS_IE11?(this.chromelessToolbar.style.backgroundColor="#ffffff",this.chromelessToolbar.style.border="3px solid black"):this.chromelessToolbar.style.backgroundColor="#000000";mxUtils.setPrefixedStyle(this.chromelessToolbar.style,
-"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var Q=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=Q?parseInt(Q["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(Q,S,ha){E++;
-var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",Q);null!=ha&&la.setAttribute("title",ha);Q=document.createElement("img");Q.setAttribute("border","0");Q.setAttribute("src",S);Q.style.width="36px";Q.style.filter="invert(100%)";la.appendChild(Q);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(Q){window.location.href=D.backBtn.url;mxEvent.consume(Q)}),
-Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=t(mxUtils.bind(this,function(Q){this.actions.get("previousPage").funct();mxEvent.consume(Q)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";
-this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(Q){this.actions.get("nextPage").funct();mxEvent.consume(Q)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerText="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
-function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(Q){this.actions.get("zoomOut").funct();mxEvent.consume(Q)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){this.actions.get("zoomIn").funct();
-mxEvent.consume(Q)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(Q){b.isLightboxView()?(1==b.view.scale?this.lightboxFit():b.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(Q)}),Editor.zoomFitImage,mxResources.get("fit"));var y=null,F=null,C=mxUtils.bind(this,function(Q){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);y=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
-0);y=null;F=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";F=null}),600)}),Q||200)}),I=mxUtils.bind(this,function(Q){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,Q||30)});if("1"==urlParams.layers){this.layersDialog=null;var G=t(mxUtils.bind(this,function(Q){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),
-this.layersDialog=null;else{this.layersDialog=b.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var S=G.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=S.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));S=mxUtils.getCurrentStyle(this.editor.graph.container);
-this.layersDialog.style.zIndex=S.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(Q)}),Editor.layersImage,mxResources.get("layers")),aa=b.getModel();aa.addListener(mxEvent.CHANGE,function(){G.style.display=1<aa.getChildCount(aa.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(t);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||t(mxUtils.bind(this,
-function(Q){null!=this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):b.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(Q)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(q=0;q<this.lightboxToolbarActions.length;q++){var ca=this.lightboxToolbarActions[q];ca.elem=t(ca.fn,ca.icon,ca.tooltip)}null!=D.refreshBtn&&t(mxUtils.bind(this,function(Q){D.refreshBtn.url?
-window.location.href=D.refreshBtn.url:window.location.reload();mxEvent.consume(Q)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=D.fullscreenBtn&&window.self!==window.top&&t(mxUtils.bind(this,function(Q){D.fullscreenBtn.url?b.openLink(D.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(Q)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(D.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=
-document.body))&&t(mxUtils.bind(this,function(Q){"1"==urlParams.close||D.closeBtn?window.close():(this.destroy(),mxEvent.consume(Q))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(Q){mxEvent.isTouchEvent(Q)||
-(mxEvent.isShiftDown(Q)||I(30),C())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(Q){mxEvent.consume(Q)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(Q){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(Q)?C():I(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(Q){mxEvent.isShiftDown(Q)?C():I(100);mxEvent.consume(Q)}));mxEvent.addListener(this.chromelessToolbar,
-"mouseleave",mxUtils.bind(this,function(Q){mxEvent.isTouchEvent(Q)||I(30)}));var ba=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(Q,S){this.startX=S.getGraphX();this.startY=S.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(Q,S){},mouseUp:function(Q,S){mxEvent.isTouchEvent(S.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<ba&&Math.abs(this.scrollTop-b.container.scrollTop)<
-ba&&Math.abs(this.startX-S.getGraphX())<ba&&Math.abs(this.startY-S.getGraphY())<ba&&(0<parseFloat(k.chromelessToolbar.style.opacity||0)?C():I(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var Z=b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var Q=this.graph.getPagePadding(),S=this.graph.getPageSize();this.translate.x=Q.x-(this.x0||0)*S.width;this.translate.y=Q.y-(this.y0||0)*
-S.height}Z.apply(this,arguments)};if(!b.isViewer()){var qa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var Q=this.getPageLayout(),S=this.getPagePadding(),ha=this.getPageSize(),la=Math.ceil(2*S.x+Q.width*ha.width),u=Math.ceil(2*S.y+Q.height*ha.height),H=b.minimumGraphSize;if(null==H||H.width!=la||H.height!=u)b.minimumGraphSize=new mxRectangle(0,0,la,u);la=S.x-Q.x*ha.width;S=S.y-Q.y*ha.height;this.autoTranslate||this.view.translate.x==la&&
-this.view.translate.y==S?qa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=Q.x,this.view.y0=Q.y,Q=b.view.translate.x,ha=b.view.translate.y,b.view.setTranslate(la,S),b.container.scrollLeft+=Math.round((la-Q)*b.view.scale),b.container.scrollTop+=Math.round((S-ha)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var N=b.view.getBackgroundPane(),Y=b.view.getDrawPane();b.cumulativeZoomFactor=1;var ea=null,ka=null,ja=null,
-V=null,J=null,W=function(Q){null!=ea&&window.clearTimeout(ea);0<=Q&&window.setTimeout(function(){if(!b.isMouseDown||V)ea=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),Y.style.transformOrigin="",N.style.transformOrigin="",mxClient.IS_SF?
-(Y.style.transform="scale(1)",N.style.transform="scale(1)",window.setTimeout(function(){Y.style.transform="";N.style.transform=""},0)):(Y.style.transform="",N.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var S=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ha=mxUtils.getOffset(b.container),la=b.view.scale,u=0,H=0;null!=ka&&(u=b.container.offsetWidth/2-ka.x+ha.x,H=b.container.offsetHeight/2-ka.y+ha.y);b.zoom(b.cumulativeZoomFactor,
-null,b.isFastZoomEnabled()?20:null);b.view.scale!=la&&(null!=ja&&(u+=S.x-ja.x,H+=S.y-ja.y),null!=e&&k.chromelessResize(!1,null,u*(b.cumulativeZoomFactor-1),H*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==u&&0==H||(b.container.scrollLeft-=u*(b.cumulativeZoomFactor-1),b.container.scrollTop-=H*(b.cumulativeZoomFactor-1)));null!=J&&Y.setAttribute("filter",J);b.cumulativeZoomFactor=1;J=V=ka=ja=ea=null}),null!=Q?Q:b.isFastZoomEnabled()?k.wheelZoomDelay:k.lazyZoomDelay)},0)};b.lazyZoom=
-function(Q,S,ha,la){la=null!=la?la:this.zoomFactor;(S=S||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));Q?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
-(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==J&&""!=Y.getAttribute("filter")&&(J=Y.getAttribute("filter"),Y.removeAttribute("filter")),ja=new mxPoint(b.container.scrollLeft,b.container.scrollTop),Q=S||null==ka?b.container.scrollLeft+
-b.container.clientWidth/2:ka.x+b.container.scrollLeft-b.container.offsetLeft,la=S||null==ka?b.container.scrollTop+b.container.clientHeight/2:ka.y+b.container.scrollTop-b.container.offsetTop,Y.style.transformOrigin=Q+"px "+la+"px",Y.style.transform="scale("+this.cumulativeZoomFactor+")",N.style.transformOrigin=Q+"px "+la+"px",N.style.transform="scale("+this.cumulativeZoomFactor+")",null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(Q=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(Q.style,
-"transform-origin",(S||null==ka?b.container.clientWidth/2+b.container.scrollLeft-Q.offsetLeft+"px":ka.x+b.container.scrollLeft-Q.offsetLeft-b.container.offsetLeft+"px")+" "+(S||null==ka?b.container.clientHeight/2+b.container.scrollTop-Q.offsetTop+"px":ka.y+b.container.scrollTop-Q.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(Q.style,"transform","scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=k.hoverIcons&&
-k.hoverIcons.reset());W(b.isFastZoomEnabled()?ha:0)};mxEvent.addGestureListeners(b.container,function(Q){null!=ea&&window.clearTimeout(ea)},null,function(Q){1!=b.cumulativeZoomFactor&&W(0)});mxEvent.addListener(b.container,"scroll",function(Q){null==ea||b.isMouseDown||1==b.cumulativeZoomFactor||W(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(Q,S,ha,la,u){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ha&&b.isScrollWheelEvent(Q))ha=
-b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(Q)?b.view.setTranslate(ha.x+(S?-la:la),ha.y):b.view.setTranslate(ha.x,ha.y+(S?la:-la));else if(ha||b.isZoomWheelEvent(Q))for(var H=mxEvent.getSource(Q);null!=H;){if(H==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=u?new mxPoint(la,u):new mxPoint(mxEvent.getClientX(Q),mxEvent.getClientY(Q)),V=ha,ha=b.zoomFactor,la=null,Q.ctrlKey&&null!=Q.deltaY&&40>Math.abs(Q.deltaY)&&Math.round(Q.deltaY)!=Q.deltaY?ha=1+Math.abs(Q.deltaY)/
-20*(ha-1):null!=Q.movementY&&"pointermove"==Q.type&&(ha=1+Math.max(1,Math.abs(Q.movementY))/20*(ha-1),la=-1),b.lazyZoom(S,null,la,ha),mxEvent.consume(Q),!1;H=H.parentNode}}),b.container);b.panningHandler.zoomGraph=function(Q){b.cumulativeZoomFactor=Q.scale;b.lazyZoom(0<Q.scale,!0);mxEvent.consume(Q)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
+"borderRadius","16px");mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out");var t=mxUtils.bind(this,function(){var O=mxUtils.getCurrentStyle(b.container);b.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=O?parseInt(O["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",t);t();var E=0;t=mxUtils.bind(this,function(O,N,ba){E++;
+var la=document.createElement("span");la.style.paddingLeft="8px";la.style.paddingRight="8px";la.style.cursor="pointer";mxEvent.addListener(la,"click",O);null!=ba&&la.setAttribute("title",ba);O=document.createElement("img");O.setAttribute("border","0");O.setAttribute("src",N);O.style.width="36px";O.style.filter="invert(100%)";la.appendChild(O);this.chromelessToolbar.appendChild(la);return la});null!=D.backBtn&&t(mxUtils.bind(this,function(O){window.location.href=D.backBtn.url;mxEvent.consume(O)}),
+Editor.backImage,mxResources.get("back",null,"Back"));if(this.isPagesEnabled()){var d=t(mxUtils.bind(this,function(O){this.actions.get("previousPage").funct();mxEvent.consume(O)}),Editor.previousImage,mxResources.get("previousPage")),f=document.createElement("div");f.style.fontFamily=Editor.defaultHtmlFont;f.style.display="inline-block";f.style.verticalAlign="top";f.style.fontWeight="bold";f.style.marginTop="8px";f.style.fontSize="14px";f.style.color=mxClient.IS_IE||mxClient.IS_IE11?"#000000":"#ffffff";
+this.chromelessToolbar.appendChild(f);var g=t(mxUtils.bind(this,function(O){this.actions.get("nextPage").funct();mxEvent.consume(O)}),Editor.nextImage,mxResources.get("nextPage")),m=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(f.innerText="",mxUtils.write(f,mxUtils.indexOf(this.pages,this.currentPage)+1+" / "+this.pages.length))});d.style.paddingLeft="0px";d.style.paddingRight="4px";g.style.paddingLeft="4px";g.style.paddingRight="0px";var q=mxUtils.bind(this,
+function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(g.style.display="",d.style.display="",f.style.display="inline-block"):(g.style.display="none",d.style.display="none",f.style.display="none");m()});this.editor.addListener("resetGraphView",q);this.editor.addListener("pageSelected",m)}t(mxUtils.bind(this,function(O){this.actions.get("zoomOut").funct();mxEvent.consume(O)}),Editor.zoomOutImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(O){this.actions.get("zoomIn").funct();
+mxEvent.consume(O)}),Editor.zoomInImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");t(mxUtils.bind(this,function(O){b.isLightboxView()?(1==b.view.scale?this.lightboxFit():b.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(O)}),Editor.zoomFitImage,mxResources.get("fit"));var y=null,F=null,C=mxUtils.bind(this,function(O){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);y=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,
+0);y=null;F=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";F=null}),600)}),O||200)}),I=mxUtils.bind(this,function(O){null!=y&&(window.clearTimeout(y),y=null);null!=F&&(window.clearTimeout(F),F=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,O||30)});if("1"==urlParams.layers){this.layersDialog=null;var G=t(mxUtils.bind(this,function(O){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),
+this.layersDialog=null;else{this.layersDialog=b.createLayersDialog(null,!0);mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog=null}));var N=G.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=N.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));N=mxUtils.getCurrentStyle(this.editor.graph.container);
+this.layersDialog.style.zIndex=N.zIndex;document.body.appendChild(this.layersDialog);this.editor.fireEvent(new mxEventObject("layersDialogShown"))}mxEvent.consume(O)}),Editor.layersImage,mxResources.get("layers")),Z=b.getModel();Z.addListener(mxEvent.CHANGE,function(){G.style.display=1<Z.getChildCount(Z.root)?"":"none"})}("1"!=urlParams.openInSameWin||navigator.standalone)&&this.addChromelessToolbarItems(t);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||t(mxUtils.bind(this,function(O){null!=
+this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):b.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(O)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(q=0;q<this.lightboxToolbarActions.length;q++){var ca=this.lightboxToolbarActions[q];ca.elem=t(ca.fn,ca.icon,ca.tooltip)}null!=D.refreshBtn&&t(mxUtils.bind(this,function(O){D.refreshBtn.url?window.location.href=
+D.refreshBtn.url:window.location.reload();mxEvent.consume(O)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=D.fullscreenBtn&&window.self!==window.top&&t(mxUtils.bind(this,function(O){D.fullscreenBtn.url?b.openLink(D.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(O)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(D.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&
+t(mxUtils.bind(this,function(O){"1"==urlParams.close||D.closeBtn?window.close():(this.destroy(),mxEvent.consume(O))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(O){mxEvent.isTouchEvent(O)||(mxEvent.isShiftDown(O)||
+I(30),C())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(O){mxEvent.consume(O)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(O){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(O)?C():I(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(O){mxEvent.isShiftDown(O)?C():I(100);mxEvent.consume(O)}));mxEvent.addListener(this.chromelessToolbar,
+"mouseleave",mxUtils.bind(this,function(O){mxEvent.isTouchEvent(O)||I(30)}));var aa=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(O,N){this.startX=N.getGraphX();this.startY=N.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(O,N){},mouseUp:function(O,N){mxEvent.isTouchEvent(N.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<aa&&Math.abs(this.scrollTop-b.container.scrollTop)<
+aa&&Math.abs(this.startX-N.getGraphX())<aa&&Math.abs(this.startY-N.getGraphY())<aa&&(0<parseFloat(k.chromelessToolbar.style.opacity||0)?C():I(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var Y=b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var O=this.graph.getPagePadding(),N=this.graph.getPageSize();this.translate.x=O.x-(this.x0||0)*N.width;this.translate.y=O.y-(this.y0||0)*
+N.height}Y.apply(this,arguments)};if(!b.isViewer()){var qa=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var O=this.getPageLayout(),N=this.getPagePadding(),ba=this.getPageSize(),la=Math.ceil(2*N.x+O.width*ba.width),u=Math.ceil(2*N.y+O.height*ba.height),H=b.minimumGraphSize;if(null==H||H.width!=la||H.height!=u)b.minimumGraphSize=new mxRectangle(0,0,la,u);la=N.x-O.x*ba.width;N=N.y-O.y*ba.height;this.autoTranslate||this.view.translate.x==la&&
+this.view.translate.y==N?qa.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=O.x,this.view.y0=O.y,O=b.view.translate.x,ba=b.view.translate.y,b.view.setTranslate(la,N),b.container.scrollLeft+=Math.round((la-O)*b.view.scale),b.container.scrollTop+=Math.round((N-ba)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var Q=b.view.getBackgroundPane(),X=b.view.getDrawPane();b.cumulativeZoomFactor=1;var fa=null,ka=null,ia=null,
+V=null,L=null,ea=function(O){null!=fa&&window.clearTimeout(fa);0<=O&&window.setTimeout(function(){if(!b.isMouseDown||V)fa=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),X.style.transformOrigin="",Q.style.transformOrigin="",mxClient.IS_SF?
+(X.style.transform="scale(1)",Q.style.transform="scale(1)",window.setTimeout(function(){X.style.transform="";Q.style.transform=""},0)):(X.style.transform="",Q.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var N=new mxPoint(b.container.scrollLeft,b.container.scrollTop),ba=mxUtils.getOffset(b.container),la=b.view.scale,u=0,H=0;null!=ka&&(u=b.container.offsetWidth/2-ka.x+ba.x,H=b.container.offsetHeight/2-ka.y+ba.y);b.zoom(b.cumulativeZoomFactor,
+null,b.isFastZoomEnabled()?20:null);b.view.scale!=la&&(null!=ia&&(u+=N.x-ia.x,H+=N.y-ia.y),null!=e&&k.chromelessResize(!1,null,u*(b.cumulativeZoomFactor-1),H*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==u&&0==H||(b.container.scrollLeft-=u*(b.cumulativeZoomFactor-1),b.container.scrollTop-=H*(b.cumulativeZoomFactor-1)));null!=L&&X.setAttribute("filter",L);b.cumulativeZoomFactor=1;L=V=ka=ia=fa=null}),null!=O?O:b.isFastZoomEnabled()?k.wheelZoomDelay:k.lazyZoomDelay)},0)};b.lazyZoom=
+function(O,N,ba,la){la=null!=la?la:this.zoomFactor;(N=N||!b.scrollbars)&&(ka=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));O?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=
+(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=la,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==L&&""!=X.getAttribute("filter")&&(L=X.getAttribute("filter"),X.removeAttribute("filter")),ia=new mxPoint(b.container.scrollLeft,b.container.scrollTop),O=N||null==ka?b.container.scrollLeft+
+b.container.clientWidth/2:ka.x+b.container.scrollLeft-b.container.offsetLeft,la=N||null==ka?b.container.scrollTop+b.container.clientHeight/2:ka.y+b.container.scrollTop-b.container.offsetTop,X.style.transformOrigin=O+"px "+la+"px",X.style.transform="scale("+this.cumulativeZoomFactor+")",Q.style.transformOrigin=O+"px "+la+"px",Q.style.transform="scale("+this.cumulativeZoomFactor+")",null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(O=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(O.style,
+"transform-origin",(N||null==ka?b.container.clientWidth/2+b.container.scrollLeft-O.offsetLeft+"px":ka.x+b.container.scrollLeft-O.offsetLeft-b.container.offsetLeft+"px")+" "+(N||null==ka?b.container.clientHeight/2+b.container.scrollTop-O.offsetTop+"px":ka.y+b.container.scrollTop-O.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(O.style,"transform","scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=k.hoverIcons&&
+k.hoverIcons.reset());ea(b.isFastZoomEnabled()?ba:0)};mxEvent.addGestureListeners(b.container,function(O){null!=fa&&window.clearTimeout(fa)},null,function(O){1!=b.cumulativeZoomFactor&&ea(0)});mxEvent.addListener(b.container,"scroll",function(O){null==fa||b.isMouseDown||1==b.cumulativeZoomFactor||ea(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(O,N,ba,la,u){b.fireEvent(new mxEventObject("wheel"));if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!ba&&b.isScrollWheelEvent(O))ba=
+b.view.getTranslate(),la=40/b.view.scale,mxEvent.isShiftDown(O)?b.view.setTranslate(ba.x+(N?-la:la),ba.y):b.view.setTranslate(ba.x,ba.y+(N?la:-la));else if(ba||b.isZoomWheelEvent(O))for(var H=mxEvent.getSource(O);null!=H;){if(H==b.container)return b.tooltipHandler.hideTooltip(),ka=null!=la&&null!=u?new mxPoint(la,u):new mxPoint(mxEvent.getClientX(O),mxEvent.getClientY(O)),V=ba,ba=b.zoomFactor,la=null,O.ctrlKey&&null!=O.deltaY&&40>Math.abs(O.deltaY)&&Math.round(O.deltaY)!=O.deltaY?ba=1+Math.abs(O.deltaY)/
+20*(ba-1):null!=O.movementY&&"pointermove"==O.type&&(ba=1+Math.max(1,Math.abs(O.movementY))/20*(ba-1),la=-1),b.lazyZoom(N,null,la,ba),mxEvent.consume(O),!1;H=H.parentNode}}),b.container);b.panningHandler.zoomGraph=function(O){b.cumulativeZoomFactor=O.scale;b.lazyZoom(0<O.scale,!0);mxEvent.consume(O)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(e){this.actions.get("print").funct();mxEvent.consume(e)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
EditorUi.prototype.toggleFormatPanel=function(b){b=null!=b?b:0==this.formatWidth;null!=this.format&&(this.formatWidth=b?240:0,this.formatContainer.style.display=b?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))};
EditorUi.prototype.lightboxFit=function(b){if(this.isDiagramEmpty())this.editor.graph.view.setScale(1);else{var e=urlParams.border,k=60;null!=e&&(k=parseInt(e));this.editor.graph.maxFitScale=this.lightboxMaxFitScale;this.editor.graph.fit(k,null,null,null,null,null,b);this.editor.graph.maxFitScale=null}};EditorUi.prototype.isDiagramEmpty=function(){var b=this.editor.graph.getModel();return 1==b.getChildCount(b.root)&&0==b.getChildCount(b.getChildAt(b.root,0))};
@@ -2237,8 +2237,8 @@ EditorUi.prototype.showBackgroundImageDialog=function(b,e){b=null!=b?b:mxUtils.b
EditorUi.prototype.setBackgroundImage=function(b){this.editor.graph.setBackgroundImage(b);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(b,e,k){mxUtils.confirm(b)?null!=e&&e():null!=k&&k()};EditorUi.prototype.createOutline=function(b){var e=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){e.update(!1)});return e};
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(b){function e(q,y,F){if(!n.isSelectionEmpty()&&n.isEnabled()){y=null!=y?y:1;var C=n.getCompositeParents(n.getSelectionCells()),I=0<C.length?C[0]:null;if(null!=I)if(F){n.getModel().beginUpdate();try{for(I=0;I<C.length;I++)if(n.getModel().isVertex(C[I])&&n.isCellResizable(C[I])){var G=n.getCellGeometry(C[I]);null!=G&&(G=G.clone(),37==q?G.width=Math.max(0,G.width-y):38==q?G.height=Math.max(0,G.height-y):39==q?G.width+=y:40==q&&(G.height+=y),n.getModel().setGeometry(C[I],
-G))}}finally{n.getModel().endUpdate()}}else{G=n.model.getParent(I);var aa=n.getView().scale;F=null;1==n.getSelectionCount()&&n.model.isVertex(I)&&null!=n.layoutManager&&!n.isCellLocked(I)&&(F=n.layoutManager.getLayout(G));if(null!=F&&F.constructor==mxStackLayout)y=G.getIndex(I),37==q||38==q?n.model.add(G,I,Math.max(0,y-1)):(39==q||40==q)&&n.model.add(G,I,Math.min(n.model.getChildCount(G),y+1));else{var ca=n.graphHandler;null!=ca&&(null==ca.first&&ca.start(I,0,0,C),null!=ca.first&&(I=C=0,37==q?C=-y:
-38==q?I=-y:39==q?C=y:40==q&&(I=y),ca.currentDx+=C*aa,ca.currentDy+=I*aa,ca.checkPreview(),ca.updatePreview()),null!=E&&window.clearTimeout(E),E=window.setTimeout(function(){if(null!=ca.first){var ba=ca.roundLength(ca.currentDx/aa),Z=ca.roundLength(ca.currentDy/aa);ca.moveCells(ca.cells,ba,Z);ca.reset()}},400))}}}}var k=this,n=this.editor.graph,D=new mxKeyHandler(n),t=D.isEventIgnored;D.isEventIgnored=function(q){return!(mxEvent.isShiftDown(q)&&9==q.keyCode)&&(!this.isControlDown(q)||mxEvent.isShiftDown(q)||
+G))}}finally{n.getModel().endUpdate()}}else{G=n.model.getParent(I);var Z=n.getView().scale;F=null;1==n.getSelectionCount()&&n.model.isVertex(I)&&null!=n.layoutManager&&!n.isCellLocked(I)&&(F=n.layoutManager.getLayout(G));if(null!=F&&F.constructor==mxStackLayout)y=G.getIndex(I),37==q||38==q?n.model.add(G,I,Math.max(0,y-1)):(39==q||40==q)&&n.model.add(G,I,Math.min(n.model.getChildCount(G),y+1));else{var ca=n.graphHandler;null!=ca&&(null==ca.first&&ca.start(I,0,0,C),null!=ca.first&&(I=C=0,37==q?C=-y:
+38==q?I=-y:39==q?C=y:40==q&&(I=y),ca.currentDx+=C*Z,ca.currentDy+=I*Z,ca.checkPreview(),ca.updatePreview()),null!=E&&window.clearTimeout(E),E=window.setTimeout(function(){if(null!=ca.first){var aa=ca.roundLength(ca.currentDx/Z),Y=ca.roundLength(ca.currentDy/Z);ca.moveCells(ca.cells,aa,Y);ca.reset()}},400))}}}}var k=this,n=this.editor.graph,D=new mxKeyHandler(n),t=D.isEventIgnored;D.isEventIgnored=function(q){return!(mxEvent.isShiftDown(q)&&9==q.keyCode)&&(!this.isControlDown(q)||mxEvent.isShiftDown(q)||
90!=q.keyCode&&89!=q.keyCode&&188!=q.keyCode&&190!=q.keyCode&&85!=q.keyCode)&&(66!=q.keyCode&&73!=q.keyCode||!this.isControlDown(q)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&t.apply(this,arguments)};D.isEnabledForEvent=function(q){return!mxEvent.isConsumed(q)&&this.isGraphEvent(q)&&this.isEnabled()&&(null==k.dialogs||0==k.dialogs.length)};D.isControlDown=function(q){return mxEvent.isControlDown(q)||mxClient.IS_MAC&&q.metaKey};var E=null,d={37:mxConstants.DIRECTION_WEST,
38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},f=D.getFunction;mxKeyHandler.prototype.getFunction=function(q){if(n.isEnabled()){if(mxEvent.isShiftDown(q)&&mxEvent.isAltDown(q)){var y=k.actions.get(k.altShiftActions[q.keyCode]);if(null!=y)return y.funct}if(null!=d[q.keyCode]&&!n.isSelectionEmpty())if(!this.isControlDown(q)&&mxEvent.isShiftDown(q)&&mxEvent.isAltDown(q)){if(n.model.isVertex(n.getSelectionCell()))return function(){var F=n.connectVertex(n.getSelectionCell(),
d[q.keyCode],n.defaultEdgeLength,q,!0);null!=F&&0<F.length&&(1==F.length&&n.model.isEdge(F[0])?n.setSelectionCell(n.model.getTerminal(F[0],!1)):n.setSelectionCell(F[F.length-1]),n.scrollCellToVisible(n.getSelectionCell()),null!=k.hoverIcons&&k.hoverIcons.update(n.view.getState(n.getSelectionCell())))}}else return this.isControlDown(q)?function(){e(q.keyCode,mxEvent.isShiftDown(q)?n.gridSize:null,!0)}:function(){e(q.keyCode,mxEvent.isShiftDown(q)?n.gridSize:null)}}return f.apply(this,arguments)};D.bindAction=
@@ -2259,37 +2259,38 @@ mxConstants.VML_SHADOWCOLOR="#d0d0d0";mxCodec.allowlist="mxStylesheet Array mxGr
mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor;mxGraphView.prototype.unit=mxConstants.POINTS;
mxGraphView.prototype.setUnit=function(b){this.unit!=b&&(this.unit=b,this.fireEvent(new mxEventObject("unitChanged","unit",b)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(b,e,k){return null};
mxImageShape.prototype.getImageDataUri=function(){var b=this.image;if("data:image/svg+xml;base64,"==b.substring(0,26)&&null!=this.style&&"1"==mxUtils.getValue(this.style,"clipSvg","0")){if(null==this.clippedSvg||this.clippedImage!=b)this.clippedSvg=Graph.clipSvgDataUri(b,!0),this.clippedImage=b;b=this.clippedSvg}return b};
-Graph=function(b,e,k,n,D,t){mxGraph.call(this,b,e,k,n);this.themes=D||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=t?t:!1;b=this.baseUrl;e=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<e&&(e=b.indexOf("/",e+2),0<e&&(this.domainUrl=b.substring(0,e)),e=b.lastIndexOf("/"),0<e&&(this.domainPathUrl=b.substring(0,e+1)));this.isHtmlLabel=function(J){J=this.getCurrentCellStyle(J);
-return null!=J?"1"==J.html||"wrap"==J[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(J,W){if("mouseDown"==W.getProperty("eventName")&&this.isEnabled()){J=W.getProperty("event");var Q=J.getState();W=this.view.scale;if(!mxEvent.isAltDown(J.getEvent())&&null!=Q)if(this.model.isEdge(Q.cell))if(E=new mxPoint(J.getGraphX(),J.getGraphY()),m=this.isCellSelected(Q.cell),f=Q,d=J,null!=Q.text&&null!=
-Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,J.getGraphX(),J.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var S=this.selectionCellsHandler.getHandler(Q.cell);null!=S&&null!=S.bends&&0<S.bends.length&&(g=S.getHandleForEvent(J))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(J.getEvent())&&(S=this.selectionCellsHandler.getHandler(Q.cell),null==S||null==S.getHandleForEvent(J))){var ha=new mxRectangle(J.getGraphX()-1,J.getGraphY()-1),la=mxEvent.isTouchEvent(J.getEvent())?mxShape.prototype.svgStrokeTolerance-
-1:(mxShape.prototype.svgStrokeTolerance+2)/2;S=la+2;ha.grow(la);if(this.isTableCell(Q.cell)&&!this.isCellSelected(Q.cell)&&!(mxUtils.contains(Q,J.getGraphX()-S,J.getGraphY()-S)&&mxUtils.contains(Q,J.getGraphX()-S,J.getGraphY()+S)&&mxUtils.contains(Q,J.getGraphX()+S,J.getGraphY()+S)&&mxUtils.contains(Q,J.getGraphX()+S,J.getGraphY()-S))){var u=this.model.getParent(Q.cell);S=this.model.getParent(u);if(!this.isCellSelected(S)){la*=W;var H=2*la;if(this.model.getChildAt(S,0)!=u&&mxUtils.intersects(ha,new mxRectangle(Q.x,
-Q.y-la,Q.width,H))||this.model.getChildAt(u,0)!=Q.cell&&mxUtils.intersects(ha,new mxRectangle(Q.x-la,Q.y,H,Q.height))||mxUtils.intersects(ha,new mxRectangle(Q.x,Q.y+Q.height-la,Q.width,H))||mxUtils.intersects(ha,new mxRectangle(Q.x+Q.width-la,Q.y,H,Q.height)))u=this.selectionCellsHandler.isHandled(S),this.selectCellForEvent(S,J.getEvent()),S=this.selectionCellsHandler.getHandler(S),null!=S&&(la=S.getHandleForEvent(J),null!=la&&(S.start(J.getGraphX(),J.getGraphY(),la),S.blockDelayedSelection=!u,J.consume()))}}for(;!J.isConsumed()&&
-null!=Q&&(this.isTableCell(Q.cell)||this.isTableRow(Q.cell)||this.isTable(Q.cell));)this.isSwimlane(Q.cell)&&(S=this.getActualStartSize(Q.cell),(0<S.x||0<S.width)&&mxUtils.intersects(ha,new mxRectangle(Q.x+(S.x-S.width-1)*W+(0==S.x?Q.width:0),Q.y,1,Q.height))||(0<S.y||0<S.height)&&mxUtils.intersects(ha,new mxRectangle(Q.x,Q.y+(S.y-S.height-1)*W+(0==S.y?Q.height:0),Q.width,1)))&&(this.selectCellForEvent(Q.cell,J.getEvent()),S=this.selectionCellsHandler.getHandler(Q.cell),null!=S&&(la=mxEvent.CUSTOM_HANDLE-
-S.customHandles.length+1,S.start(J.getGraphX(),J.getGraphY(),la),J.consume())),Q=this.view.getState(this.model.getParent(Q.cell))}}}));this.addMouseListener({mouseDown:function(J,W){},mouseMove:mxUtils.bind(this,function(J,W){J=this.selectionCellsHandler.handlers.map;for(var Q in J)if(null!=J[Q].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(W.getEvent())){var S=this.tolerance;if(null!=E&&null!=f&&null!=d){if(Q=f,Math.abs(E.x-W.getGraphX())>S||Math.abs(E.y-W.getGraphY())>
-S){var ha=this.selectionCellsHandler.getHandler(Q.cell);null==ha&&this.model.isEdge(Q.cell)&&(ha=this.createHandler(Q));if(null!=ha&&null!=ha.bends&&0<ha.bends.length){J=ha.getHandleForEvent(d);var la=this.view.getEdgeStyle(Q);S=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(J=g);if(S&&0!=J&&J!=ha.bends.length-1&&J!=mxEvent.LABEL_HANDLE)!S||null==Q.visibleSourceState&&null==Q.visibleTargetState||(this.graphHandler.reset(),W.consume());else if(J==mxEvent.LABEL_HANDLE||0==J||null!=Q.visibleSourceState||
-J==ha.bends.length-1||null!=Q.visibleTargetState)S||J==mxEvent.LABEL_HANDLE||(S=Q.absolutePoints,null!=S&&(null==la&&null==J||la==mxEdgeStyle.OrthConnector)&&(J=g,null==J&&(J=new mxRectangle(E.x,E.y),J.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(J,S[0].x,S[0].y)?J=0:mxUtils.contains(J,S[S.length-1].x,S[S.length-1].y)?J=ha.bends.length-1:null!=la&&(2==S.length||3==S.length&&(0==Math.round(S[0].x-S[1].x)&&0==Math.round(S[1].x-S[2].x)||0==Math.round(S[0].y-S[1].y)&&0==Math.round(S[1].y-
-S[2].y)))?J=2:(J=mxUtils.findNearestSegment(Q,E.x,E.y),J=null==la?mxEvent.VIRTUAL_HANDLE-J:J+1))),null==J&&(J=mxEvent.VIRTUAL_HANDLE)),ha.start(W.getGraphX(),W.getGraphX(),J),W.consume(),this.graphHandler.reset()}null!=ha&&(this.selectionCellsHandler.isHandlerActive(ha)?this.isCellSelected(Q.cell)||(this.selectionCellsHandler.handlers.put(Q.cell,ha),this.selectCellForEvent(Q.cell,W.getEvent())):this.isCellSelected(Q.cell)||ha.destroy());m=!1;E=d=f=g=null}}else if(Q=W.getState(),null!=Q&&this.isCellEditable(Q.cell)){ha=
-null;if(this.model.isEdge(Q.cell)){if(J=new mxRectangle(W.getGraphX(),W.getGraphY()),J.grow(mxEdgeHandler.prototype.handleImage.width/2),S=Q.absolutePoints,null!=S)if(null!=Q.text&&null!=Q.text.boundingBox&&mxUtils.contains(Q.text.boundingBox,W.getGraphX(),W.getGraphY()))ha="move";else if(mxUtils.contains(J,S[0].x,S[0].y)||mxUtils.contains(J,S[S.length-1].x,S[S.length-1].y))ha="pointer";else if(null!=Q.visibleSourceState||null!=Q.visibleTargetState)J=this.view.getEdgeStyle(Q),ha="crosshair",J!=mxEdgeStyle.EntityRelation&&
-this.isOrthogonal(Q)&&(W=mxUtils.findNearestSegment(Q,W.getGraphX(),W.getGraphY()),W<S.length-1&&0<=W&&(ha=0==Math.round(S[W].x-S[W+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(W.getEvent())){S=mxShape.prototype.svgStrokeTolerance/2;J=new mxRectangle(W.getGraphX(),W.getGraphY());J.grow(S);if(this.isTableCell(Q.cell)&&(W=this.model.getParent(Q.cell),S=this.model.getParent(W),!this.isCellSelected(S)))if(mxUtils.intersects(J,new mxRectangle(Q.x,Q.y-2,Q.width,4))&&this.model.getChildAt(S,
-0)!=W||mxUtils.intersects(J,new mxRectangle(Q.x,Q.y+Q.height-2,Q.width,4)))ha="row-resize";else if(mxUtils.intersects(J,new mxRectangle(Q.x-2,Q.y,4,Q.height))&&this.model.getChildAt(W,0)!=Q.cell||mxUtils.intersects(J,new mxRectangle(Q.x+Q.width-2,Q.y,4,Q.height)))ha="col-resize";for(W=Q;null==ha&&null!=W&&(this.isTableCell(W.cell)||this.isTableRow(W.cell)||this.isTable(W.cell));)this.isSwimlane(W.cell)&&(S=this.getActualStartSize(W.cell),la=this.view.scale,(0<S.x||0<S.width)&&mxUtils.intersects(J,
-new mxRectangle(W.x+(S.x-S.width-1)*la+(0==S.x?W.width*la:0),W.y,1,W.height))?ha="col-resize":(0<S.y||0<S.height)&&mxUtils.intersects(J,new mxRectangle(W.x,W.y+(S.y-S.height-1)*la+(0==S.y?W.height:0),W.width,1))&&(ha="row-resize")),W=this.view.getState(this.model.getParent(W.cell))}null!=ha&&Q.setCursor(ha)}}}),mouseUp:mxUtils.bind(this,function(J,W){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(J){var W=mxCellRenderer.prototype.getLabelValue.apply(this,
-arguments);J.view.graph.isHtmlLabel(J.cell)&&(W=1!=J.style.html?mxUtils.htmlEntities(W,!1):J.view.graph.sanitizeHtml(W));return W};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);
-this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(J,W){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var J=q.apply(this,arguments);if(this.graph.pageVisible){var W=[],Q=this.graph.pageFormat,S=this.graph.pageScale,ha=Q.width*S;Q=Q.height*S;S=this.graph.view.translate;for(var la=this.graph.view.scale,u=this.graph.getPageLayout(),H=0;H<u.width;H++)W.push(new mxRectangle(((u.x+
-H)*ha+S.x)*la,(u.y*Q+S.y)*la,ha*la,Q*la));for(H=1;H<u.height;H++)W.push(new mxRectangle((u.x*ha+S.x)*la,((u.y+H)*Q+S.y)*la,ha*la,Q*la));J=W.concat(J)}return J};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(J,W){return null==J.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(J){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
-arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(J){for(var W=y.apply(this,arguments),Q=new mxDictionary,S=[],ha=0;ha<W.length;ha++){var la=this.graph.isTableCell(J)&&this.graph.isTableCell(W[ha])&&this.graph.isCellSelected(W[ha])?this.graph.model.getParent(W[ha]):this.graph.isTableRow(J)&&this.graph.isTableRow(W[ha])&&this.graph.isCellSelected(W[ha])?W[ha]:this.graph.getCompositeParent(W[ha]);null==la||Q.get(la)||(Q.put(la,!0),S.push(la))}return S};var F=this.graphHandler.start;
-this.graphHandler.start=function(J,W,Q,S){var ha=!1;this.graph.isTableCell(J)&&(this.graph.isCellSelected(J)?ha=!0:J=this.graph.model.getParent(J));ha||this.graph.isTableRow(J)&&this.graph.isCellSelected(J)||(J=this.graph.getCompositeParent(J));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(J,W){W=this.graph.getCompositeParent(W);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var C=new mxRubberband(this);this.getRubberband=function(){return C};
-var I=(new Date).getTime(),G=0,aa=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var J=this.currentState;aa.apply(this,arguments);J!=this.currentState?(I=(new Date).getTime(),G=0):G=(new Date).getTime()-I};var ca=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(J){return mxEvent.isShiftDown(J.getEvent())&&mxEvent.isAltDown(J.getEvent())?!1:null!=this.currentState&&J.getState()==this.currentState&&2E3<G||(null==this.currentState||
-"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&ca.apply(this,arguments)};var ba=this.isToggleEvent;this.isToggleEvent=function(J){return ba.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J)};var Z=C.isForceRubberbandEvent;C.isForceRubberbandEvent=function(J){return Z.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(J.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==J.getState()&&mxEvent.isTouchEvent(J.getEvent())};
-var qa=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(qa=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=qa)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(J){return mxEvent.isMouseEvent(J.getEvent())};var N=this.click;this.click=function(J){var W=null==J.state&&
-null!=J.sourceState&&this.isCellLocked(J.sourceState.cell);if(this.isEnabled()&&!W||J.isConsumed())return N.apply(this,arguments);var Q=W?J.sourceState.cell:J.getCell();null!=Q&&(Q=this.getClickableLinkForCell(Q),null!=Q&&(this.isCustomLink(Q)?this.customLinkClicked(Q):this.openLink(Q)));this.isEnabled()&&W&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(J){return J.sourceState};var Y=this.tooltipHandler.show;this.tooltipHandler.show=function(){Y.apply(this,arguments);if(null!=
-this.div)for(var J=this.div.getElementsByTagName("a"),W=0;W<J.length;W++)null!=J[W].getAttribute("href")&&null==J[W].getAttribute("target")&&J[W].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(J){return J.sourceState};this.getCursorForMouseEvent=function(J){var W=null==J.state&&null!=J.sourceState&&this.isCellLocked(J.sourceState.cell);return this.getCursorForCell(W?J.sourceState.cell:J.getCell())};var ea=this.getCursorForCell;this.getCursorForCell=function(J){if(!this.isEnabled()||
-this.isCellLocked(J)){if(null!=this.getClickableLinkForCell(J))return"pointer";if(this.isCellLocked(J))return"default"}return ea.apply(this,arguments)};this.selectRegion=function(J,W){var Q=mxEvent.isAltDown(W)?J:null;J=this.getCells(J.x,J.y,J.width,J.height,null,null,Q,function(S){return"1"==mxUtils.getValue(S.style,"locked","0")},!0);if(this.isToggleEvent(W))for(Q=0;Q<J.length;Q++)this.selectCellForEvent(J[Q],W);else this.selectCellsForEvent(J,W);return J};var ka=this.graphHandler.shouldRemoveCellsFromParent;
-this.graphHandler.shouldRemoveCellsFromParent=function(J,W,Q){return this.graph.isCellSelected(J)?!1:ka.apply(this,arguments)};this.isCellLocked=function(J){for(;null!=J;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(J),"locked","0"))return!0;J=this.model.getParent(J)}return!1};var ja=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(J,W){"mouseDown"==W.getProperty("eventName")&&(J=W.getProperty("event").getState(),ja=null==J||this.isSelectionEmpty()||this.isCellSelected(J.cell)?
-null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(J,W){if(!mxEvent.isMultiTouchEvent(W)){J=W.getProperty("event");var Q=W.getProperty("cell");null==Q?(J=mxUtils.convertPoint(this.container,mxEvent.getClientX(J),mxEvent.getClientY(J)),C.start(J.x,J.y)):null!=ja?this.addSelectionCells(ja):1<this.getSelectionCount()&&this.isCellSelected(Q)&&this.removeSelectionCell(Q);ja=null;W.consume()}}));this.connectionHandler.selectCells=function(J,W){this.graph.setSelectionCell(W||
-J)};this.connectionHandler.constraintHandler.isStateIgnored=function(J,W){var Q=J.view.graph;return W&&(Q.isCellSelected(J.cell)||Q.isTableRow(J.cell)&&Q.selectionCellsHandler.isHandled(Q.model.getParent(J.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var J=this.connectionHandler.constraintHandler;null!=J.currentFocus&&J.isStateIgnored(J.currentFocus,!0)&&(J.currentFocus=null,J.constraints=null,J.destroyIcons());J.destroyFocusHighlight()}));Graph.touchStyle&&
-this.initTouch();var V=this.updateMouseEvent;this.updateMouseEvent=function(J){J=V.apply(this,arguments);null!=J.state&&this.isCellLocked(J.getCell())&&(J.state=null);return J}}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">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
+Graph=function(b,e,k,n,D,t){mxGraph.call(this,b,e,k,n);this.themes=D||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=t?t:!1;b=this.baseUrl;e=b.indexOf("//");this.domainPathUrl=this.domainUrl="";0<e&&(e=b.indexOf("/",e+2),0<e&&(this.domainUrl=b.substring(0,e)),e=b.lastIndexOf("/"),0<e&&(this.domainPathUrl=b.substring(0,e+1)));this.isHtmlLabel=function(L){L=this.getCurrentCellStyle(L);
+return null!=L?"1"==L.html||"wrap"==L[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var E=null,d=null,f=null,g=null,m=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(L,ea){if("mouseDown"==ea.getProperty("eventName")&&this.isEnabled()){L=ea.getProperty("event");var O=L.getState();ea=this.view.scale;if(!mxEvent.isAltDown(L.getEvent())&&null!=O)if(this.model.isEdge(O.cell))if(E=new mxPoint(L.getGraphX(),L.getGraphY()),m=this.isCellSelected(O.cell),f=O,d=L,null!=O.text&&
+null!=O.text.boundingBox&&mxUtils.contains(O.text.boundingBox,L.getGraphX(),L.getGraphY()))g=mxEvent.LABEL_HANDLE;else{var N=this.selectionCellsHandler.getHandler(O.cell);null!=N&&null!=N.bends&&0<N.bends.length&&(g=N.getHandleForEvent(L))}else if(!this.panningHandler.isActive()&&!mxEvent.isControlDown(L.getEvent())&&(N=this.selectionCellsHandler.getHandler(O.cell),null==N||null==N.getHandleForEvent(L))){var ba=new mxRectangle(L.getGraphX()-1,L.getGraphY()-1),la=mxEvent.isTouchEvent(L.getEvent())?
+mxShape.prototype.svgStrokeTolerance-1:(mxShape.prototype.svgStrokeTolerance+2)/2;N=la+2;ba.grow(la);if(this.isTableCell(O.cell)&&!this.isCellSelected(O.cell)&&!(mxUtils.contains(O,L.getGraphX()-N,L.getGraphY()-N)&&mxUtils.contains(O,L.getGraphX()-N,L.getGraphY()+N)&&mxUtils.contains(O,L.getGraphX()+N,L.getGraphY()+N)&&mxUtils.contains(O,L.getGraphX()+N,L.getGraphY()-N))){var u=this.model.getParent(O.cell);N=this.model.getParent(u);if(!this.isCellSelected(N)){la*=ea;var H=2*la;if(this.model.getChildAt(N,
+0)!=u&&mxUtils.intersects(ba,new mxRectangle(O.x,O.y-la,O.width,H))||this.model.getChildAt(u,0)!=O.cell&&mxUtils.intersects(ba,new mxRectangle(O.x-la,O.y,H,O.height))||mxUtils.intersects(ba,new mxRectangle(O.x,O.y+O.height-la,O.width,H))||mxUtils.intersects(ba,new mxRectangle(O.x+O.width-la,O.y,H,O.height)))u=this.selectionCellsHandler.isHandled(N),this.selectCellForEvent(N,L.getEvent()),N=this.selectionCellsHandler.getHandler(N),null!=N&&(la=N.getHandleForEvent(L),null!=la&&(N.start(L.getGraphX(),
+L.getGraphY(),la),N.blockDelayedSelection=!u,L.consume()))}}for(;!L.isConsumed()&&null!=O&&(this.isTableCell(O.cell)||this.isTableRow(O.cell)||this.isTable(O.cell));)this.isSwimlane(O.cell)&&(N=this.getActualStartSize(O.cell),(0<N.x||0<N.width)&&mxUtils.intersects(ba,new mxRectangle(O.x+(N.x-N.width-1)*ea+(0==N.x?O.width:0),O.y,1,O.height))||(0<N.y||0<N.height)&&mxUtils.intersects(ba,new mxRectangle(O.x,O.y+(N.y-N.height-1)*ea+(0==N.y?O.height:0),O.width,1)))&&(this.selectCellForEvent(O.cell,L.getEvent()),
+N=this.selectionCellsHandler.getHandler(O.cell),null!=N&&(la=mxEvent.CUSTOM_HANDLE-N.customHandles.length+1,N.start(L.getGraphX(),L.getGraphY(),la),L.consume())),O=this.view.getState(this.model.getParent(O.cell))}}}));this.addMouseListener({mouseDown:function(L,ea){},mouseMove:mxUtils.bind(this,function(L,ea){L=this.selectionCellsHandler.handlers.map;for(var O in L)if(null!=L[O].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&&!mxEvent.isAltDown(ea.getEvent())){var N=this.tolerance;
+if(null!=E&&null!=f&&null!=d){if(O=f,Math.abs(E.x-ea.getGraphX())>N||Math.abs(E.y-ea.getGraphY())>N){var ba=this.selectionCellsHandler.getHandler(O.cell);null==ba&&this.model.isEdge(O.cell)&&(ba=this.createHandler(O));if(null!=ba&&null!=ba.bends&&0<ba.bends.length){L=ba.getHandleForEvent(d);var la=this.view.getEdgeStyle(O);N=la==mxEdgeStyle.EntityRelation;m||g!=mxEvent.LABEL_HANDLE||(L=g);if(N&&0!=L&&L!=ba.bends.length-1&&L!=mxEvent.LABEL_HANDLE)!N||null==O.visibleSourceState&&null==O.visibleTargetState||
+(this.graphHandler.reset(),ea.consume());else if(L==mxEvent.LABEL_HANDLE||0==L||null!=O.visibleSourceState||L==ba.bends.length-1||null!=O.visibleTargetState)N||L==mxEvent.LABEL_HANDLE||(N=O.absolutePoints,null!=N&&(null==la&&null==L||la==mxEdgeStyle.OrthConnector)&&(L=g,null==L&&(L=new mxRectangle(E.x,E.y),L.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(L,N[0].x,N[0].y)?L=0:mxUtils.contains(L,N[N.length-1].x,N[N.length-1].y)?L=ba.bends.length-1:null!=la&&(2==N.length||3==N.length&&
+(0==Math.round(N[0].x-N[1].x)&&0==Math.round(N[1].x-N[2].x)||0==Math.round(N[0].y-N[1].y)&&0==Math.round(N[1].y-N[2].y)))?L=2:(L=mxUtils.findNearestSegment(O,E.x,E.y),L=null==la?mxEvent.VIRTUAL_HANDLE-L:L+1))),null==L&&(L=mxEvent.VIRTUAL_HANDLE)),ba.start(ea.getGraphX(),ea.getGraphX(),L),ea.consume(),this.graphHandler.reset()}null!=ba&&(this.selectionCellsHandler.isHandlerActive(ba)?this.isCellSelected(O.cell)||(this.selectionCellsHandler.handlers.put(O.cell,ba),this.selectCellForEvent(O.cell,ea.getEvent())):
+this.isCellSelected(O.cell)||ba.destroy());m=!1;E=d=f=g=null}}else if(O=ea.getState(),null!=O&&this.isCellEditable(O.cell)){ba=null;if(this.model.isEdge(O.cell)){if(L=new mxRectangle(ea.getGraphX(),ea.getGraphY()),L.grow(mxEdgeHandler.prototype.handleImage.width/2),N=O.absolutePoints,null!=N)if(null!=O.text&&null!=O.text.boundingBox&&mxUtils.contains(O.text.boundingBox,ea.getGraphX(),ea.getGraphY()))ba="move";else if(mxUtils.contains(L,N[0].x,N[0].y)||mxUtils.contains(L,N[N.length-1].x,N[N.length-
+1].y))ba="pointer";else if(null!=O.visibleSourceState||null!=O.visibleTargetState)L=this.view.getEdgeStyle(O),ba="crosshair",L!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(O)&&(ea=mxUtils.findNearestSegment(O,ea.getGraphX(),ea.getGraphY()),ea<N.length-1&&0<=ea&&(ba=0==Math.round(N[ea].x-N[ea+1].x)?"col-resize":"row-resize"))}else if(!mxEvent.isControlDown(ea.getEvent())){N=mxShape.prototype.svgStrokeTolerance/2;L=new mxRectangle(ea.getGraphX(),ea.getGraphY());L.grow(N);if(this.isTableCell(O.cell)&&
+(ea=this.model.getParent(O.cell),N=this.model.getParent(ea),!this.isCellSelected(N)))if(mxUtils.intersects(L,new mxRectangle(O.x,O.y-2,O.width,4))&&this.model.getChildAt(N,0)!=ea||mxUtils.intersects(L,new mxRectangle(O.x,O.y+O.height-2,O.width,4)))ba="row-resize";else if(mxUtils.intersects(L,new mxRectangle(O.x-2,O.y,4,O.height))&&this.model.getChildAt(ea,0)!=O.cell||mxUtils.intersects(L,new mxRectangle(O.x+O.width-2,O.y,4,O.height)))ba="col-resize";for(ea=O;null==ba&&null!=ea&&(this.isTableCell(ea.cell)||
+this.isTableRow(ea.cell)||this.isTable(ea.cell));)this.isSwimlane(ea.cell)&&(N=this.getActualStartSize(ea.cell),la=this.view.scale,(0<N.x||0<N.width)&&mxUtils.intersects(L,new mxRectangle(ea.x+(N.x-N.width-1)*la+(0==N.x?ea.width*la:0),ea.y,1,ea.height))?ba="col-resize":(0<N.y||0<N.height)&&mxUtils.intersects(L,new mxRectangle(ea.x,ea.y+(N.y-N.height-1)*la+(0==N.y?ea.height:0),ea.width,1))&&(ba="row-resize")),ea=this.view.getState(this.model.getParent(ea.cell))}null!=ba&&O.setCursor(ba)}}}),mouseUp:mxUtils.bind(this,
+function(L,ea){g=E=d=f=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(L){var ea=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);L.view.graph.isHtmlLabel(L.cell)&&(ea=1!=L.style.html?mxUtils.htmlEntities(ea,!1):L.view.graph.sanitizeHtml(ea));return ea};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(L,ea){return!1};this.alternateEdgeStyle="vertical";null==n&&this.loadStylesheet();var q=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var L=q.apply(this,arguments);if(this.graph.pageVisible){var ea=[],O=this.graph.pageFormat,
+N=this.graph.pageScale,ba=O.width*N;O=O.height*N;N=this.graph.view.translate;for(var la=this.graph.view.scale,u=this.graph.getPageLayout(),H=0;H<u.width;H++)ea.push(new mxRectangle(((u.x+H)*ba+N.x)*la,(u.y*O+N.y)*la,ba*la,O*la));for(H=1;H<u.height;H++)ea.push(new mxRectangle((u.x*ba+N.x)*la,((u.y+H)*O+N.y)*la,ba*la,O*la));L=ea.concat(L)}return L};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(L,ea){return null==L.cell?"#ffa500":mxConstants.GUIDE_COLOR};
+this.graphHandler.createPreviewShape=function(L){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var y=this.graphHandler.getCells;this.graphHandler.getCells=function(L){for(var ea=y.apply(this,arguments),O=new mxDictionary,N=[],ba=0;ba<ea.length;ba++){var la=this.graph.isTableCell(L)&&this.graph.isTableCell(ea[ba])&&this.graph.isCellSelected(ea[ba])?this.graph.model.getParent(ea[ba]):
+this.graph.isTableRow(L)&&this.graph.isTableRow(ea[ba])&&this.graph.isCellSelected(ea[ba])?ea[ba]:this.graph.getCompositeParent(ea[ba]);null==la||O.get(la)||(O.put(la,!0),N.push(la))}return N};var F=this.graphHandler.start;this.graphHandler.start=function(L,ea,O,N){var ba=!1;this.graph.isTableCell(L)&&(this.graph.isCellSelected(L)?ba=!0:L=this.graph.model.getParent(L));ba||this.graph.isTableRow(L)&&this.graph.isCellSelected(L)||(L=this.graph.getCompositeParent(L));F.apply(this,arguments)};this.connectionHandler.createTargetVertex=
+function(L,ea){ea=this.graph.getCompositeParent(ea);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var C=new mxRubberband(this);this.getRubberband=function(){return C};var I=(new Date).getTime(),G=0,Z=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var L=this.currentState;Z.apply(this,arguments);L!=this.currentState?(I=(new Date).getTime(),G=0):G=(new Date).getTime()-I};var ca=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=
+function(L){return mxEvent.isShiftDown(L.getEvent())&&mxEvent.isAltDown(L.getEvent())?!1:null!=this.currentState&&L.getState()==this.currentState&&2E3<G||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&ca.apply(this,arguments)};var aa=this.isToggleEvent;this.isToggleEvent=function(L){return aa.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(L)};var Y=C.isForceRubberbandEvent;C.isForceRubberbandEvent=function(L){return Y.apply(this,
+arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(L.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==L.getState()&&mxEvent.isTouchEvent(L.getEvent())};var qa=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(qa=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=
+qa)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(L){return mxEvent.isMouseEvent(L.getEvent())};var Q=this.click;this.click=function(L){var ea=null==L.state&&null!=L.sourceState&&this.isCellLocked(L.sourceState.cell);if(this.isEnabled()&&!ea||L.isConsumed())return Q.apply(this,arguments);var O=ea?L.sourceState.cell:L.getCell();null!=O&&(O=this.getClickableLinkForCell(O),null!=O&&(this.isCustomLink(O)?this.customLinkClicked(O):this.openLink(O)));this.isEnabled()&&
+ea&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(L){return L.sourceState};var X=this.tooltipHandler.show;this.tooltipHandler.show=function(){X.apply(this,arguments);if(null!=this.div)for(var L=this.div.getElementsByTagName("a"),ea=0;ea<L.length;ea++)null!=L[ea].getAttribute("href")&&null==L[ea].getAttribute("target")&&L[ea].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(L){return L.sourceState};this.getCursorForMouseEvent=function(L){var ea=
+null==L.state&&null!=L.sourceState&&this.isCellLocked(L.sourceState.cell);return this.getCursorForCell(ea?L.sourceState.cell:L.getCell())};var fa=this.getCursorForCell;this.getCursorForCell=function(L){if(!this.isEnabled()||this.isCellLocked(L)){if(null!=this.getClickableLinkForCell(L))return"pointer";if(this.isCellLocked(L))return"default"}return fa.apply(this,arguments)};this.selectRegion=function(L,ea){var O=mxEvent.isAltDown(ea)?L:null;L=this.getCells(L.x,L.y,L.width,L.height,null,null,O,function(N){return"1"==
+mxUtils.getValue(N.style,"locked","0")},!0);if(this.isToggleEvent(ea))for(O=0;O<L.length;O++)this.selectCellForEvent(L[O],ea);else this.selectCellsForEvent(L,ea);return L};var ka=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(L,ea,O){return this.graph.isCellSelected(L)?!1:ka.apply(this,arguments)};this.isCellLocked=function(L){for(;null!=L;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(L),"locked","0"))return!0;L=this.model.getParent(L)}return!1};
+var ia=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(L,ea){"mouseDown"==ea.getProperty("eventName")&&(L=ea.getProperty("event").getState(),ia=null==L||this.isSelectionEmpty()||this.isCellSelected(L.cell)?null:this.getSelectionCells())}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(L,ea){if(!mxEvent.isMultiTouchEvent(ea)){L=ea.getProperty("event");var O=ea.getProperty("cell");null==O?(L=mxUtils.convertPoint(this.container,mxEvent.getClientX(L),mxEvent.getClientY(L)),
+C.start(L.x,L.y)):null!=ia?this.addSelectionCells(ia):1<this.getSelectionCount()&&this.isCellSelected(O)&&this.removeSelectionCell(O);ia=null;ea.consume()}}));this.connectionHandler.selectCells=function(L,ea){this.graph.setSelectionCell(ea||L)};this.connectionHandler.constraintHandler.isStateIgnored=function(L,ea){var O=L.view.graph;return ea&&(O.isCellSelected(L.cell)||O.isTableRow(L.cell)&&O.selectionCellsHandler.isHandled(O.model.getParent(L.cell)))};this.selectionModel.addListener(mxEvent.CHANGE,
+mxUtils.bind(this,function(){var L=this.connectionHandler.constraintHandler;null!=L.currentFocus&&L.isStateIgnored(L.currentFocus,!0)&&(L.currentFocus=null,L.constraints=null,L.destroyIcons());L.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var V=this.updateMouseEvent;this.updateMouseEvent=function(L){L=V.apply(this,arguments);null!=L.state&&this.isCellLocked(L.getCell())&&(L.state=null);return L}}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">';Graph.svgFileComment="\x3c!-- Do not edit this file with editors other than diagrams.net --\x3e";
+Graph.pasteStyles="rounded shadow dashed dashPattern fontFamily fontSource fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle".split(" ");
Graph.layoutNames="mxHierarchicalLayout mxCircleLayout mxCompactTreeLayout mxEdgeLabelLayout mxFastOrganicLayout mxParallelEdgeLayout mxPartitionLayout mxRadialTreeLayout mxStackLayout".split(" ");
Graph.createOffscreenGraph=function(b){var e=new Graph(document.createElement("div"));e.stylesheet.styles=mxUtils.clone(b.styles);e.resetViewOnRootChange=!1;e.setConnectable(!1);e.gridEnabled=!1;e.autoScroll=!1;e.setTooltips(!1);e.setEnabled(!1);e.container.style.visibility="hidden";e.container.style.position="absolute";e.container.style.overflow="hidden";e.container.style.height="1px";e.container.style.width="1px";return e};
Graph.createSvgImage=function(b,e,k,n,D){k=unescape(encodeURIComponent(Graph.svgDoctype+'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+b+'px" height="'+e+'px" '+(null!=n&&null!=D?'viewBox="0 0 '+n+" "+D+'" ':"")+'version="1.1">'+k+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(k):Base64.encode(k,!0)),b,e)};
@@ -2358,10 +2359,10 @@ Graph.prototype.getLabel=function(b){var e=mxGraph.prototype.getLabel.apply(this
Graph.prototype.setGridSize=function(b){this.gridSize=b;this.fireEvent(new mxEventObject("gridSizeChanged"))};Graph.prototype.setDefaultParent=function(b){this.defaultParent=b;this.fireEvent(new mxEventObject("defaultParentChanged"))};Graph.prototype.getClickableLinkForCell=function(b){do{var e=this.getLinkForCell(b);if(null!=e)return e;b=this.model.getParent(b)}while(null!=b);return null};
Graph.prototype.getGlobalVariable=function(b){var e=null;"date"==b?e=(new Date).toLocaleDateString():"time"==b?e=(new Date).toLocaleTimeString():"timestamp"==b?e=(new Date).toLocaleString():"date{"==b.substring(0,5)&&(b=b.substring(5,b.length-1),e=this.formatDate(new Date,b));return e};
Graph.prototype.formatDate=function(b,e,k){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 n=this.dateFormatCache,D=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,t=/[^-+\dA-Z]/g,E=function(aa,ca){aa=String(aa);for(ca=ca||2;aa.length<ca;)aa="0"+aa;return aa};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
+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 n=this.dateFormatCache,D=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,t=/[^-+\dA-Z]/g,E=function(Z,ca){Z=String(Z);for(ca=ca||2;Z.length<ca;)Z="0"+Z;return Z};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(b)||
/\d/.test(b)||(e=b,b=void 0);b=b?new Date(b):new Date;if(isNaN(b))throw SyntaxError("invalid date");e=String(n.masks[e]||e||n.masks["default"]);"UTC:"==e.slice(0,4)&&(e=e.slice(4),k=!0);var d=k?"getUTC":"get",f=b[d+"Date"](),g=b[d+"Day"](),m=b[d+"Month"](),q=b[d+"FullYear"](),y=b[d+"Hours"](),F=b[d+"Minutes"](),C=b[d+"Seconds"]();d=b[d+"Milliseconds"]();var I=k?0:b.getTimezoneOffset(),G={d:f,dd:E(f),ddd:n.i18n.dayNames[g],dddd:n.i18n.dayNames[g+7],m:m+1,mm:E(m+1),mmm:n.i18n.monthNames[m],mmmm:n.i18n.monthNames[m+
-12],yy:String(q).slice(2),yyyy:q,h:y%12||12,hh:E(y%12||12),H:y,HH:E(y),M:F,MM:E(F),s:C,ss:E(C),l:E(d,3),L:E(99<d?Math.round(d/10):d),t:12>y?"a":"p",tt:12>y?"am":"pm",T:12>y?"A":"P",TT:12>y?"AM":"PM",Z:k?"UTC":(String(b).match(D)||[""]).pop().replace(t,""),o:(0<I?"-":"+")+E(100*Math.floor(Math.abs(I)/60)+Math.abs(I)%60,4),S:["th","st","nd","rd"][3<f%10?0:(10!=f%100-f%10)*f%10]};return e.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(aa){return aa in G?G[aa]:aa.slice(1,
-aa.length-1)})};Graph.prototype.getLayerForCells=function(b){var e=null;if(0<b.length){for(e=b[0];!this.model.isLayer(e);)e=this.model.getParent(e);for(var k=1;k<b.length;k++)if(!this.model.isAncestor(e,b[k])){e=null;break}}return e};
+12],yy:String(q).slice(2),yyyy:q,h:y%12||12,hh:E(y%12||12),H:y,HH:E(y),M:F,MM:E(F),s:C,ss:E(C),l:E(d,3),L:E(99<d?Math.round(d/10):d),t:12>y?"a":"p",tt:12>y?"am":"pm",T:12>y?"A":"P",TT:12>y?"AM":"PM",Z:k?"UTC":(String(b).match(D)||[""]).pop().replace(t,""),o:(0<I?"-":"+")+E(100*Math.floor(Math.abs(I)/60)+Math.abs(I)%60,4),S:["th","st","nd","rd"][3<f%10?0:(10!=f%100-f%10)*f%10]};return e.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(Z){return Z in G?G[Z]:Z.slice(1,
+Z.length-1)})};Graph.prototype.getLayerForCells=function(b){var e=null;if(0<b.length){for(e=b[0];!this.model.isLayer(e);)e=this.model.getParent(e);for(var k=1;k<b.length;k++)if(!this.model.isAncestor(e,b[k])){e=null;break}}return e};
Graph.prototype.createLayersDialog=function(b,e){var k=document.createElement("div");k.style.position="absolute";for(var n=this.getModel(),D=n.getChildCount(n.root),t=0;t<D;t++)mxUtils.bind(this,function(E){function d(){n.isVisible(E)?(m.setAttribute("src",Editor.visibleImage),mxUtils.setOpacity(g,75)):(m.setAttribute("src",Editor.hiddenImage),mxUtils.setOpacity(g,25))}var f=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(n.isVisible(E)?"hideIt":"show",[f]));var m=document.createElement("img");m.setAttribute("draggable","false");m.setAttribute("align","absmiddle");m.setAttribute("border","0");m.style.position="relative";m.style.width="16px";m.style.padding="0px 6px 0 4px";e&&(m.style.filter="invert(100%)",m.style.top="-2px");g.appendChild(m);mxUtils.write(g,f);k.appendChild(g);
mxEvent.addListener(g,"click",function(){n.setVisible(E,!n.isVisible(E));d();null!=b&&b(E)});d()})(n.getChildAt(n.root,t));return k};
@@ -2375,11 +2376,11 @@ D)}}}finally{this.getModel().endUpdate()}};Graph.prototype.selectCellsForConnect
Graph.prototype.isCloneConnectSource=function(b){var e=null;null!=this.layoutManager&&(e=this.layoutManager.getLayout(this.model.getParent(b)));return this.isTableRow(b)||this.isTableCell(b)||null!=e&&e.constructor==mxStackLayout};
Graph.prototype.connectVertex=function(b,e,k,n,D,t,E,d){t=t?t:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var f=this.isCloneConnectSource(b),g=f?b:this.getCompositeParent(b),m=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);e==mxConstants.DIRECTION_NORTH?(m.x+=g.geometry.width/2,m.y-=k):e==
mxConstants.DIRECTION_SOUTH?(m.x+=g.geometry.width/2,m.y+=g.geometry.height+k):(m.x=e==mxConstants.DIRECTION_WEST?m.x-k:m.x+(g.geometry.width+k),m.y+=g.geometry.height/2);var q=this.view.getState(this.model.getParent(b));k=this.view.scale;var y=this.view.translate;g=y.x*k;y=y.y*k;null!=q&&this.model.isVertex(q.cell)&&(g=q.x,y=q.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(m.x+=b.parent.geometry.x,m.y+=b.parent.geometry.y);t=t?null:(new mxRectangle(g+m.x*k,y+m.y*k)).grow(40*k);t=null!=t?
-this.getCells(0,0,0,0,null,null,t,null,!0):null;q=this.view.getState(b);var F=null,C=null;if(null!=t){t=t.reverse();for(var I=0;I<t.length;I++)if(!this.isCellLocked(t[I])&&!this.model.isEdge(t[I])&&t[I]!=b)if(!this.model.isAncestor(b,t[I])&&this.isContainer(t[I])&&(null==F||t[I]==this.model.getParent(b)))F=t[I];else if(null==C&&this.isCellConnectable(t[I])&&!this.model.isAncestor(t[I],b)&&!this.isSwimlane(t[I])){var G=this.view.getState(t[I]);null==q||null==G||mxUtils.intersects(q,G)||(C=t[I])}}var aa=
-!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;aa&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?m.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=b.geometry.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-b.geometry.width/2:m.x+b.geometry.width/2);var ca=[],ba=C;C=F;D=mxUtils.bind(this,function(Z){if(null==E||null!=Z||null==C&&f){this.model.beginUpdate();try{if(null==ba&&aa){var qa=this.getAbsoluteParent(null!=Z?Z:b);qa=f?b:this.getCompositeParent(qa);ba=null!=Z?Z:this.duplicateCells([qa],
-!1)[0];null!=Z&&this.addCells([ba],this.model.getParent(b),null,null,null,!0);var N=this.getCellGeometry(ba);null!=N&&(null!=Z&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?m.y-=N.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=N.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-N.width/2:m.x+N.width/2),N.x=m.x-N.width/2,N.y=m.y-N.height/2);null!=F?(this.addCells([ba],F,null,null,null,!0),C=null):aa&&!f&&this.addCells([ba],this.getDefaultParent(),null,null,null,!0)}var Y=mxEvent.isControlDown(n)&&
-mxEvent.isShiftDown(n)&&aa||null==C&&f?null:this.insertEdge(this.model.getParent(b),null,"",b,ba,this.createCurrentEdgeStyle());if(null!=Y&&this.connectionHandler.insertBeforeSource){var ea=null;for(Z=b;null!=Z.parent&&null!=Z.geometry&&Z.geometry.relative&&Z.parent!=Y.parent;)Z=this.model.getParent(Z);null!=Z&&null!=Z.parent&&Z.parent==Y.parent&&(ea=Z.parent.getIndex(Z),this.model.add(Z.parent,Y,ea))}null==C&&null!=ba&&null!=b.parent&&f&&e==mxConstants.DIRECTION_WEST&&(ea=b.parent.getIndex(b),this.model.add(b.parent,
-ba,ea));null!=Y&&ca.push(Y);null==C&&null!=ba&&ca.push(ba);null==ba&&null!=Y&&Y.geometry.setTerminalPoint(m,!1);null!=Y&&this.fireEvent(new mxEventObject("cellsInserted","cells",[Y]))}finally{this.model.endUpdate()}}if(null!=d)d(ca);else return ca});if(null==E||null!=ba||!aa||null==C&&f)return D(ba);E(g+m.x*k,y+m.y*k,D)};
+this.getCells(0,0,0,0,null,null,t,null,!0):null;q=this.view.getState(b);var F=null,C=null;if(null!=t){t=t.reverse();for(var I=0;I<t.length;I++)if(!this.isCellLocked(t[I])&&!this.model.isEdge(t[I])&&t[I]!=b)if(!this.model.isAncestor(b,t[I])&&this.isContainer(t[I])&&(null==F||t[I]==this.model.getParent(b)))F=t[I];else if(null==C&&this.isCellConnectable(t[I])&&!this.model.isAncestor(t[I],b)&&!this.isSwimlane(t[I])){var G=this.view.getState(t[I]);null==q||null==G||mxUtils.intersects(q,G)||(C=t[I])}}var Z=
+!mxEvent.isShiftDown(n)||mxEvent.isControlDown(n)||D;Z&&("1"!=urlParams.sketch||D)&&(e==mxConstants.DIRECTION_NORTH?m.y-=b.geometry.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=b.geometry.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-b.geometry.width/2:m.x+b.geometry.width/2);var ca=[],aa=C;C=F;D=mxUtils.bind(this,function(Y){if(null==E||null!=Y||null==C&&f){this.model.beginUpdate();try{if(null==aa&&Z){var qa=this.getAbsoluteParent(null!=Y?Y:b);qa=f?b:this.getCompositeParent(qa);aa=null!=Y?Y:this.duplicateCells([qa],
+!1)[0];null!=Y&&this.addCells([aa],this.model.getParent(b),null,null,null,!0);var Q=this.getCellGeometry(aa);null!=Q&&(null!=Y&&"1"==urlParams.sketch&&(e==mxConstants.DIRECTION_NORTH?m.y-=Q.height/2:e==mxConstants.DIRECTION_SOUTH?m.y+=Q.height/2:m.x=e==mxConstants.DIRECTION_WEST?m.x-Q.width/2:m.x+Q.width/2),Q.x=m.x-Q.width/2,Q.y=m.y-Q.height/2);null!=F?(this.addCells([aa],F,null,null,null,!0),C=null):Z&&!f&&this.addCells([aa],this.getDefaultParent(),null,null,null,!0)}var X=mxEvent.isControlDown(n)&&
+mxEvent.isShiftDown(n)&&Z||null==C&&f?null:this.insertEdge(this.model.getParent(b),null,"",b,aa,this.createCurrentEdgeStyle());if(null!=X&&this.connectionHandler.insertBeforeSource){var fa=null;for(Y=b;null!=Y.parent&&null!=Y.geometry&&Y.geometry.relative&&Y.parent!=X.parent;)Y=this.model.getParent(Y);null!=Y&&null!=Y.parent&&Y.parent==X.parent&&(fa=Y.parent.getIndex(Y),this.model.add(Y.parent,X,fa))}null==C&&null!=aa&&null!=b.parent&&f&&e==mxConstants.DIRECTION_WEST&&(fa=b.parent.getIndex(b),this.model.add(b.parent,
+aa,fa));null!=X&&ca.push(X);null==C&&null!=aa&&ca.push(aa);null==aa&&null!=X&&X.geometry.setTerminalPoint(m,!1);null!=X&&this.fireEvent(new mxEventObject("cellsInserted","cells",[X]))}finally{this.model.endUpdate()}}if(null!=d)d(ca);else return ca});if(null==E||null!=aa||!Z||null==C&&f)return D(aa);E(g+m.x*k,y+m.y*k,D)};
Graph.prototype.getIndexableText=function(b){b=null!=b?b:this.model.getDescendants(this.model.root);for(var e=document.createElement("div"),k=[],n,D=0;D<b.length;D++)if(n=b[D],this.model.isVertex(n)||this.model.isEdge(n))this.isHtmlLabel(n)?(e.innerHTML=this.sanitizeHtml(this.getLabel(n)),n=mxUtils.extractTextWithWhitespace([e])):n=this.getLabel(n),n=mxUtils.trim(n.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<n.length&&k.push(n);return k.join(" ")};
Graph.prototype.convertValueToString=function(b){var e=this.model.getValue(b);if(null!=e&&"object"==typeof e){var k=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder")){e=b.getAttribute("placeholder");for(var n=b;null==k&&null!=n;)null!=n.value&&"object"==typeof n.value&&(k=n.hasAttribute(e)?null!=n.getAttribute(e)?n.getAttribute(e):"":null),n=this.model.getParent(n)}else k=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(k=e.getAttribute("label_"+Graph.diagramLanguage)),
null==k&&(k=e.getAttribute("label")||"");return k||""}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};
@@ -2457,22 +2458,22 @@ TableLayout.prototype.layoutRow=function(b,e,k,n){var D=this.graph.getModel(),t=
0,g.width,g.height),D.setGeometry(t[f],g))}return d};
TableLayout.prototype.execute=function(b){if(null!=b){var e=this.graph.getActualStartSize(b,!0),k=this.graph.getCellGeometry(b),n=this.graph.getCellStyle(b),D="1"==mxUtils.getValue(n,"resizeLastRow","0"),t="1"==mxUtils.getValue(n,"resizeLast","0");n="1"==mxUtils.getValue(n,"fixedRows","0");var E=this.graph.getModel(),d=0;E.beginUpdate();try{for(var f=k.height-e.y-e.height,g=k.width-e.x-e.width,m=E.getChildCells(b,!0),q=0;q<m.length;q++)E.setVisible(m[q],!0);var y=this.getSize(m,!1);if(0<f&&0<g&&0<
m.length&&0<y){if(D){var F=this.graph.getCellGeometry(m[m.length-1]);null!=F&&(F=F.clone(),F.height=f-y+F.height,E.setGeometry(m[m.length-1],F))}var C=t?null:this.getRowLayout(m[0],g),I=[],G=e.y;for(q=0;q<m.length;q++)F=this.graph.getCellGeometry(m[q]),null!=F&&(F=F.clone(),F.x=e.x,F.width=g,F.y=Math.round(G),G=D||n?G+F.height:G+F.height/y*f,F.height=Math.round(G)-F.y,E.setGeometry(m[q],F)),d=Math.max(d,this.layoutRow(m[q],C,F.height,g,I));n&&f<y&&(k=k.clone(),k.height=G+e.height,E.setGeometry(b,
-k));t&&g<d+Graph.minTableColumnWidth&&(k=k.clone(),k.width=d+e.width+e.x+Graph.minTableColumnWidth,E.setGeometry(b,k));this.graph.visitTableCells(b,mxUtils.bind(this,function(aa){E.setVisible(aa.cell,aa.actual.cell==aa.cell);if(aa.actual.cell!=aa.cell){if(aa.actual.row==aa.row){var ca=null!=aa.geo.alternateBounds?aa.geo.alternateBounds:aa.geo;aa.actual.geo.width+=ca.width}aa.actual.col==aa.col&&(ca=null!=aa.geo.alternateBounds?aa.geo.alternateBounds:aa.geo,aa.actual.geo.height+=ca.height)}}))}else for(q=
-0;q<m.length;q++)E.setVisible(m[q],!1)}finally{E.endUpdate()}}};
+k));t&&g<d+Graph.minTableColumnWidth&&(k=k.clone(),k.width=d+e.width+e.x+Graph.minTableColumnWidth,E.setGeometry(b,k));this.graph.visitTableCells(b,mxUtils.bind(this,function(Z){E.setVisible(Z.cell,Z.actual.cell==Z.cell);if(Z.actual.cell!=Z.cell){if(Z.actual.row==Z.row){var ca=null!=Z.geo.alternateBounds?Z.geo.alternateBounds:Z.geo;Z.actual.geo.width+=ca.width}Z.actual.col==Z.col&&(ca=null!=Z.geo.alternateBounds?Z.geo.alternateBounds:Z.geo,Z.actual.geo.height+=ca.height)}}))}else for(q=0;q<m.length;q++)E.setVisible(m[q],
+!1)}finally{E.endUpdate()}}};
(function(){var b=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){b.apply(this,arguments);this.validEdges=[]};var e=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(m,q){q=null!=q?q:!0;var y=this.getState(m);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&!y.invalid&&this.updateLineJumps(y)&&this.graph.cellRenderer.redraw(y,!1,this.isRendering());y=e.apply(this,
arguments);null!=y&&q&&this.graph.model.isEdge(y.cell)&&null!=y.style&&1!=y.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(y);return y};var k=mxShape.prototype.paint;mxShape.prototype.paint=function(){k.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 m=this.node.getElementsByTagName("path");if(1<m.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&m[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var q=this.state.view.graph.getFlowAnimationStyle();null!=q&&m[1].setAttribute("class",q.getAttribute("id"))}}};var n=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(m,q){return n.apply(this,arguments)||null!=m.routedPoints&&null!=q.routedPoints&&!mxUtils.equalPoints(q.routedPoints,m.routedPoints)};var D=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
-function(m){D.apply(this,arguments);this.graph.model.isEdge(m.cell)&&1!=m.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(m)};mxGraphView.prototype.updateLineJumps=function(m){var q=m.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=m.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(m.style,"jumpStyle","none")){var C=function(ja,V,J){var W=new mxPoint(V,J);W.type=ja;F.push(W);W=null!=m.routedPoints?m.routedPoints[F.length-1]:null;return null==W||W.type!=
-ja||W.x!=V||W.y!=J},I=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var aa=q[G+1],ca=q[G],ba=[],Z=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(ca.x,ca.y,Z.x,Z.y,aa.x,aa.y)<1*this.scale*this.scale;)aa=Z,G++,Z=q[G+2];y=C(0,ca.x,ca.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var N=this.validEdges[qa],Y=N.absolutePoints;if(null!=Y&&mxUtils.intersects(m,N)&&"1"!=N.style.noJump)for(N=0;N<Y.length-1;N++){var ea=Y[N+1],ka=Y[N];for(Z=Y[N+2];N<Y.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Z.x,Z.y,
-ea.x,ea.y)<1*this.scale*this.scale;)ea=Z,N++,Z=Y[N+2];Z=mxUtils.intersection(ca.x,ca.y,aa.x,aa.y,ka.x,ka.y,ea.x,ea.y);if(null!=Z&&(Math.abs(Z.x-ca.x)>I||Math.abs(Z.y-ca.y)>I)&&(Math.abs(Z.x-aa.x)>I||Math.abs(Z.y-aa.y)>I)&&(Math.abs(Z.x-ka.x)>I||Math.abs(Z.y-ka.y)>I)&&(Math.abs(Z.x-ea.x)>I||Math.abs(Z.y-ea.y)>I)){ea=Z.x-ca.x;ka=Z.y-ca.y;Z={distSq:ea*ea+ka*ka,x:Z.x,y:Z.y};for(ea=0;ea<ba.length;ea++)if(ba[ea].distSq>Z.distSq){ba.splice(ea,0,Z);Z=null;break}null==Z||0!=ba.length&&ba[ba.length-1].x===
-Z.x&&ba[ba.length-1].y===Z.y||ba.push(Z)}}}for(N=0;N<ba.length;N++)y=C(1,ba[N].x,ba[N].y)||y}Z=q[q.length-1];y=C(0,Z.x,Z.y)||y}m.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(m,q,y){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)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
-mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,I=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,aa=null,ca=null,ba=[],Z=null;m.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var N=this.state.routedPoints[qa],Y=new mxPoint(N.x/this.scale,N.y/this.scale);0==qa?Y=q[0]:qa==this.state.routedPoints.length-1&&(Y=q[q.length-1]);var ea=!1;if(null!=aa&&1==N.type){var ka=this.state.routedPoints[qa+1];N=ka.x/this.scale-
-Y.x;ka=ka.y/this.scale-Y.y;N=N*N+ka*ka;null==Z&&(Z=new mxPoint(Y.x-aa.x,Y.y-aa.y),ca=Math.sqrt(Z.x*Z.x+Z.y*Z.y),0<ca?(Z.x=Z.x*C/ca,Z.y=Z.y*C/ca):Z=null);N>C*C&&0<ca&&(N=aa.x-Y.x,ka=aa.y-Y.y,N=N*N+ka*ka,N>C*C&&(ea=new mxPoint(Y.x-Z.x,Y.y-Z.y),N=new mxPoint(Y.x+Z.x,Y.y+Z.y),ba.push(ea),this.addPoints(m,ba,y,F,!1,null,G),ba=0>Math.round(Z.x)||0==Math.round(Z.x)&&0>=Math.round(Z.y)?1:-1,G=!1,"sharp"==I?(m.lineTo(ea.x-Z.y*ba,ea.y+Z.x*ba),m.lineTo(N.x-Z.y*ba,N.y+Z.x*ba),m.lineTo(N.x,N.y)):"line"==I?(m.moveTo(ea.x+
-Z.y*ba,ea.y-Z.x*ba),m.lineTo(ea.x-Z.y*ba,ea.y+Z.x*ba),m.moveTo(N.x-Z.y*ba,N.y+Z.x*ba),m.lineTo(N.x+Z.y*ba,N.y-Z.x*ba),m.moveTo(N.x,N.y)):"arc"==I?(ba*=1.3,m.curveTo(ea.x-Z.y*ba,ea.y+Z.x*ba,N.x-Z.y*ba,N.y+Z.x*ba,N.x,N.y)):(m.moveTo(N.x,N.y),G=!0),ba=[N],ea=!0))}else Z=null;ea||(ba.push(Y),aa=Y)}this.addPoints(m,ba,y,F,!1,null,G);m.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(m,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
-new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(m,q,y,F){if(null==q||null==m||"1"!=q.style.snapToPoint&&"1"!=m.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(m,q,F);var C=this.getNextPoint(m,y,F),I=this.graph.isOrthogonal(m),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),aa=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
-G){var ca=Math.cos(-G),ba=Math.sin(-G);C=mxUtils.getRotatedPoint(C,ca,ba,aa)}ca=parseFloat(m.style[mxConstants.STYLE_PERIMETER_SPACING]||0);ca+=parseFloat(m.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&I,ca);0!=G&&(ca=Math.cos(G),ba=Math.sin(G),C=mxUtils.getRotatedPoint(C,ca,ba,aa));m.setAbsoluteTerminalPoint(this.snapToAnchorPoint(m,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(m,q,y,F,C){if(null!=
-q&&null!=m){m=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=m)for(var I=0;I<m.length;I++){var G=this.graph.getConnectionPoint(q,m[I]);if(null!=G){var aa=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||aa<F)y=G,F=aa}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(m,q,y){var F=f.apply(this,arguments);"1"==m.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,
-F));return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(m){if(null!=m.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(m.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
+function(m){D.apply(this,arguments);this.graph.model.isEdge(m.cell)&&1!=m.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(m)};mxGraphView.prototype.updateLineJumps=function(m){var q=m.absolutePoints;if(Graph.lineJumpsEnabled){var y=null!=m.routedPoints,F=null;if(null!=q&&null!=this.validEdges&&"none"!==mxUtils.getValue(m.style,"jumpStyle","none")){var C=function(ia,V,L){var ea=new mxPoint(V,L);ea.type=ia;F.push(ea);ea=null!=m.routedPoints?m.routedPoints[F.length-1]:null;return null==ea||ea.type!=
+ia||ea.x!=V||ea.y!=L},I=.5*this.scale;y=!1;F=[];for(var G=0;G<q.length-1;G++){for(var Z=q[G+1],ca=q[G],aa=[],Y=q[G+2];G<q.length-2&&mxUtils.ptSegDistSq(ca.x,ca.y,Y.x,Y.y,Z.x,Z.y)<1*this.scale*this.scale;)Z=Y,G++,Y=q[G+2];y=C(0,ca.x,ca.y)||y;for(var qa=0;qa<this.validEdges.length;qa++){var Q=this.validEdges[qa],X=Q.absolutePoints;if(null!=X&&mxUtils.intersects(m,Q)&&"1"!=Q.style.noJump)for(Q=0;Q<X.length-1;Q++){var fa=X[Q+1],ka=X[Q];for(Y=X[Q+2];Q<X.length-2&&mxUtils.ptSegDistSq(ka.x,ka.y,Y.x,Y.y,
+fa.x,fa.y)<1*this.scale*this.scale;)fa=Y,Q++,Y=X[Q+2];Y=mxUtils.intersection(ca.x,ca.y,Z.x,Z.y,ka.x,ka.y,fa.x,fa.y);if(null!=Y&&(Math.abs(Y.x-ca.x)>I||Math.abs(Y.y-ca.y)>I)&&(Math.abs(Y.x-Z.x)>I||Math.abs(Y.y-Z.y)>I)&&(Math.abs(Y.x-ka.x)>I||Math.abs(Y.y-ka.y)>I)&&(Math.abs(Y.x-fa.x)>I||Math.abs(Y.y-fa.y)>I)){fa=Y.x-ca.x;ka=Y.y-ca.y;Y={distSq:fa*fa+ka*ka,x:Y.x,y:Y.y};for(fa=0;fa<aa.length;fa++)if(aa[fa].distSq>Y.distSq){aa.splice(fa,0,Y);Y=null;break}null==Y||0!=aa.length&&aa[aa.length-1].x===Y.x&&
+aa[aa.length-1].y===Y.y||aa.push(Y)}}}for(Q=0;Q<aa.length;Q++)y=C(1,aa[Q].x,aa[Q].y)||y}Y=q[q.length-1];y=C(0,Y.x,Y.y)||y}m.routedPoints=F;return y}return!1};var t=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(m,q,y){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)t.apply(this,arguments);else{var F=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,
+mxConstants.LINE_ARCSIZE)/2,C=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,I=mxUtils.getValue(this.style,"jumpStyle","none"),G=!0,Z=null,ca=null,aa=[],Y=null;m.begin();for(var qa=0;qa<this.state.routedPoints.length;qa++){var Q=this.state.routedPoints[qa],X=new mxPoint(Q.x/this.scale,Q.y/this.scale);0==qa?X=q[0]:qa==this.state.routedPoints.length-1&&(X=q[q.length-1]);var fa=!1;if(null!=Z&&1==Q.type){var ka=this.state.routedPoints[qa+1];Q=ka.x/this.scale-
+X.x;ka=ka.y/this.scale-X.y;Q=Q*Q+ka*ka;null==Y&&(Y=new mxPoint(X.x-Z.x,X.y-Z.y),ca=Math.sqrt(Y.x*Y.x+Y.y*Y.y),0<ca?(Y.x=Y.x*C/ca,Y.y=Y.y*C/ca):Y=null);Q>C*C&&0<ca&&(Q=Z.x-X.x,ka=Z.y-X.y,Q=Q*Q+ka*ka,Q>C*C&&(fa=new mxPoint(X.x-Y.x,X.y-Y.y),Q=new mxPoint(X.x+Y.x,X.y+Y.y),aa.push(fa),this.addPoints(m,aa,y,F,!1,null,G),aa=0>Math.round(Y.x)||0==Math.round(Y.x)&&0>=Math.round(Y.y)?1:-1,G=!1,"sharp"==I?(m.lineTo(fa.x-Y.y*aa,fa.y+Y.x*aa),m.lineTo(Q.x-Y.y*aa,Q.y+Y.x*aa),m.lineTo(Q.x,Q.y)):"line"==I?(m.moveTo(fa.x+
+Y.y*aa,fa.y-Y.x*aa),m.lineTo(fa.x-Y.y*aa,fa.y+Y.x*aa),m.moveTo(Q.x-Y.y*aa,Q.y+Y.x*aa),m.lineTo(Q.x+Y.y*aa,Q.y-Y.x*aa),m.moveTo(Q.x,Q.y)):"arc"==I?(aa*=1.3,m.curveTo(fa.x-Y.y*aa,fa.y+Y.x*aa,Q.x-Y.y*aa,Q.y+Y.x*aa,Q.x,Q.y)):(m.moveTo(Q.x,Q.y),G=!0),aa=[Q],fa=!0))}else Y=null;fa||(aa.push(X),Z=X)}this.addPoints(m,aa,y,F,!1,null,G);m.stroke()}};var E=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(m,q,y,F){return null!=q&&"centerPerimeter"==q.style[mxConstants.STYLE_PERIMETER]?
+new mxPoint(q.getCenterX(),q.getCenterY()):E.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;mxGraphView.prototype.updateFloatingTerminalPoint=function(m,q,y,F){if(null==q||null==m||"1"!=q.style.snapToPoint&&"1"!=m.style.snapToPoint)d.apply(this,arguments);else{q=this.getTerminalPort(m,q,F);var C=this.getNextPoint(m,y,F),I=this.graph.isOrthogonal(m),G=mxUtils.toRadians(Number(q.style[mxConstants.STYLE_ROTATION]||"0")),Z=new mxPoint(q.getCenterX(),q.getCenterY());if(0!=
+G){var ca=Math.cos(-G),aa=Math.sin(-G);C=mxUtils.getRotatedPoint(C,ca,aa,Z)}ca=parseFloat(m.style[mxConstants.STYLE_PERIMETER_SPACING]||0);ca+=parseFloat(m.style[F?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);C=this.getPerimeterPoint(q,C,0==G&&I,ca);0!=G&&(ca=Math.cos(G),aa=Math.sin(G),C=mxUtils.getRotatedPoint(C,ca,aa,Z));m.setAbsoluteTerminalPoint(this.snapToAnchorPoint(m,q,y,F,C),F)}};mxGraphView.prototype.snapToAnchorPoint=function(m,q,y,F,C){if(null!=
+q&&null!=m){m=this.graph.getAllConnectionConstraints(q);F=y=null;if(null!=m)for(var I=0;I<m.length;I++){var G=this.graph.getConnectionPoint(q,m[I]);if(null!=G){var Z=(G.x-C.x)*(G.x-C.x)+(G.y-C.y)*(G.y-C.y);if(null==F||Z<F)y=G,F=Z}}null!=y&&(C=y)}return C};var f=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(m,q,y){var F=f.apply(this,arguments);"1"==m.getAttribute("placeholders")&&null!=y.state&&(F=y.state.view.graph.replacePlaceholders(y.state.cell,F));
+return F};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(m){if(null!=m.style&&"undefined"!==typeof pako){var q=mxUtils.getValue(m.style,mxConstants.STYLE_SHAPE,null);if(null!=q&&"string"===typeof q&&"stencil("==q.substring(0,8))try{var y=q.substring(8,q.length-1),F=mxUtils.parseXml(Graph.decompress(y));return new mxShape(new mxStencil(F.documentElement))}catch(C){null!=window.console&&console.log("Error in shape: "+C)}}return g.apply(this,arguments)}})();
mxStencilRegistry.libraries={};mxStencilRegistry.dynamicLoading=!0;mxStencilRegistry.allowEval=!0;mxStencilRegistry.packages=[];mxStencilRegistry.filesLoaded={};
mxStencilRegistry.getStencil=function(b){var e=mxStencilRegistry.stencils[b];if(null==e&&null==mxCellRenderer.defaultShapes[b]&&mxStencilRegistry.dynamicLoading){var k=mxStencilRegistry.getBasenameForStencil(b);if(null!=k){e=mxStencilRegistry.libraries[k];if(null!=e){if(null==mxStencilRegistry.packages[k]){for(var n=0;n<e.length;n++){var D=e[n];if(!mxStencilRegistry.filesLoaded[D])if(mxStencilRegistry.filesLoaded[D]=!0,".xml"==D.toLowerCase().substring(D.length-4,D.length))mxStencilRegistry.loadStencilSet(D,
null);else if(".js"==D.toLowerCase().substring(D.length-3,D.length))try{if(mxStencilRegistry.allowEval){var t=mxUtils.load(D);null!=t&&200<=t.getStatus()&&299>=t.getStatus()&&eval.call(window,t.getText())}}catch(E){null!=window.console&&console.log("error in getStencil:",b,k,e,D,E)}}mxStencilRegistry.packages[k]=1}}else k=k.replace("_-_","_"),mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+k+".xml",null);e=mxStencilRegistry.stencils[b]}}return e};
@@ -2481,146 +2482,146 @@ mxStencilRegistry.loadStencilSet=function(b,e,k,n){var D=mxStencilRegistry.packa
D.documentElement&&mxStencilRegistry.parseStencilSet(D.documentElement,e,t)}};mxStencilRegistry.loadStencil=function(b,e){if(null!=e)mxUtils.get(b,mxUtils.bind(this,function(k){e(200<=k.getStatus()&&299>=k.getStatus()?k.getXml():null)}));else return mxUtils.load(b).getXml()};mxStencilRegistry.parseStencilSets=function(b){for(var e=0;e<b.length;e++)mxStencilRegistry.parseStencilSet(mxUtils.parseXml(b[e]).documentElement)};
mxStencilRegistry.parseStencilSet=function(b,e,k){if("stencils"==b.nodeName)for(var n=b.firstChild;null!=n;)"shapes"==n.nodeName&&mxStencilRegistry.parseStencilSet(n,e,k),n=n.nextSibling;else{k=null!=k?k:!0;n=b.firstChild;var D="";b=b.getAttribute("name");for(null!=b&&(D=b+".");null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&(b=n.getAttribute("name"),null!=b)){D=D.toLowerCase();var t=b.replace(/ /g,"_");k&&mxStencilRegistry.addStencil(D+t.toLowerCase(),new mxStencil(n));if(null!=e){var E=n.getAttribute("w"),
d=n.getAttribute("h");E=null==E?80:parseInt(E,10);d=null==d?80:parseInt(d,10);e(D,t,b,E,d)}}n=n.nextSibling}}};
-"undefined"!==typeof mxVertexHandler&&function(){function b(){var z=document.createElement("div");z.className="geHint";z.style.whiteSpace="nowrap";z.style.position="absolute";return z}function e(z,L){switch(L){case mxConstants.POINTS:return z;case mxConstants.MILLIMETERS:return(z/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(z/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(z/mxConstants.PIXELS_PER_INCH).toFixed(2)}}mxConstants.HANDLE_FILLCOLOR="#29b6f2";
+"undefined"!==typeof mxVertexHandler&&function(){function b(){var z=document.createElement("div");z.className="geHint";z.style.whiteSpace="nowrap";z.style.position="absolute";return z}function e(z,K){switch(K){case mxConstants.POINTS:return z;case mxConstants.MILLIMETERS:return(z/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(z/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(z/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(z){return!mxEvent.isAltDown(z)};var k=mxGraphLayout.prototype.isVertexIgnored;mxGraphLayout.prototype.isVertexIgnored=function(z){return k.apply(this,arguments)||this.graph.isTableRow(z)||this.graph.isTableCell(z)};var n=mxGraphLayout.prototype.isEdgeIgnored;mxGraphLayout.prototype.isEdgeIgnored=function(z){return n.apply(this,arguments)||
this.graph.isEdgeIgnored(z)};var D=mxConnectionHandler.prototype.isCreateTarget;mxConnectionHandler.prototype.isCreateTarget=function(z){return this.graph.isCloneEvent(z)!=D.apply(this,arguments)};mxConstraintHandler.prototype.createHighlightShape=function(){var z=new mxEllipse(null,this.highlightColor,this.highlightColor,0);z.opacity=mxConstants.HIGHLIGHT_OPACITY;return z};mxConnectionHandler.prototype.livePreview=!0;mxConnectionHandler.prototype.cursor="crosshair";mxConnectionHandler.prototype.createEdgeState=
-function(z){z=this.graph.createCurrentEdgeStyle();z=this.graph.createEdge(null,null,null,null,null,z);z=new mxCellState(this.graph.view,z,this.graph.getCellStyle(z));for(var L in this.graph.currentEdgeStyle)z.style[L]=this.graph.currentEdgeStyle[L];z.style=this.graph.postProcessCellStyle(z.cell,z.style);return z};var t=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var z=t.apply(this,arguments);z.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
-return z};mxConnectionHandler.prototype.updatePreview=function(z){};var E=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var z=E.apply(this,arguments),L=z.getCell;z.getCell=mxUtils.bind(this,function(M){var U=L.apply(this,arguments);this.error=null;return U});return z};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
-function(){for(var z="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",L="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),M=0;M<L.length;M++)null!=this.currentEdgeStyle[L[M]]&&(z+=L[M]+"="+this.currentEdgeStyle[L[M]]+";");null!=this.currentEdgeStyle.orthogonalLoop?z+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
+function(z){z=this.graph.createCurrentEdgeStyle();z=this.graph.createEdge(null,null,null,null,null,z);z=new mxCellState(this.graph.view,z,this.graph.getCellStyle(z));for(var K in this.graph.currentEdgeStyle)z.style[K]=this.graph.currentEdgeStyle[K];z.style=this.graph.postProcessCellStyle(z.cell,z.style);return z};var t=mxConnectionHandler.prototype.createShape;mxConnectionHandler.prototype.createShape=function(){var z=t.apply(this,arguments);z.isDashed="1"==this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];
+return z};mxConnectionHandler.prototype.updatePreview=function(z){};var E=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var z=E.apply(this,arguments),K=z.getCell;z.getCell=mxUtils.bind(this,function(M){var U=K.apply(this,arguments);this.error=null;return U});return z};Graph.prototype.defaultVertexStyle={};Graph.prototype.defaultEdgeStyle={edgeStyle:"orthogonalEdgeStyle",rounded:"0",jettySize:"auto",orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=
+function(){for(var z="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",K="shape curved rounded comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification comicStyle jumpStyle jumpSize".split(" "),M=0;M<K.length;M++)null!=this.currentEdgeStyle[K[M]]&&(z+=K[M]+"="+this.currentEdgeStyle[K[M]]+";");null!=this.currentEdgeStyle.orthogonalLoop?z+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&
(z+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?z+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(z+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(z+="elbow="+this.currentEdgeStyle.elbow+";");return z=null!=this.currentEdgeStyle.html?z+("html="+this.currentEdgeStyle.html+";"):z+"html=1;"};
-Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var z=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=z&&(new mxCodec(z.ownerDocument)).decode(z,this.getStylesheet())};Graph.prototype.createCellLookup=function(z,L){L=null!=L?L:{};for(var M=0;M<z.length;M++){var U=z[M];L[mxObjectIdentity.get(U)]=U.getId();for(var X=this.model.getChildCount(U),
-fa=0;fa<X;fa++)this.createCellLookup([this.model.getChildAt(U,fa)],L)}return L};Graph.prototype.createCellMapping=function(z,L,M){M=null!=M?M:{};for(var U in z){var X=L[U];null==M[X]&&(M[X]=z[U].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,L,M,U){L=null!=L?L:0;M=null!=M?M:0;var X=new mxCodec(z.ownerDocument),fa=new mxGraphModel;X.decode(z,fa);z=[];X={};var na={},ua=fa.getChildren(this.cloneCell(fa.root,this.isCloneInvalidEdges(),X));if(null!=ua){var pa=this.createCellLookup([fa.root]);
-ua=ua.slice();this.model.beginUpdate();try{if(1!=ua.length||this.isCellLocked(this.getDefaultParent()))for(fa=0;fa<ua.length;fa++)za=this.model.getChildren(this.moveCells([ua[fa]],L,M,!1,this.model.getRoot())[0]),null!=za&&(z=z.concat(za));else{var za=fa.getChildren(ua[0]);null!=za&&(z=this.moveCells(za,L,M,!1,this.getDefaultParent()),na[fa.getChildAt(fa.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(X,pa,na),this.updateCustomLinks(na,z),U)){this.isGridEnabled()&&
-(L=this.snap(L),M=this.snap(M));var Da=this.getBoundingBoxFromGeometry(z,!0);null!=Da&&this.moveCells(z,L-Da.x,M-Da.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var L={},M=this.cloneCells(z,null,L),U=new mxDictionary,X=0;X<z.length;X++)U.put(z[X],!0);var fa=new mxCodec,na=new mxGraphModel,ua=na.getChildAt(na.getRoot(),0);for(X=0;X<M.length;X++){na.add(ua,M[X]);var pa=this.view.getState(z[X]);if(null!=pa){var za=this.getCellGeometry(M[X]);null!=za&&za.relative&&
-!this.model.isEdge(z[X])&&null==U.get(this.model.getParent(z[X]))&&(za.offset=null,za.relative=!1,za.x=pa.x/pa.view.scale-pa.view.translate.x,za.y=pa.y/pa.view.scale-pa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(L,this.createCellLookup(z)),M);return fa.encode(na)};Graph.prototype.isSwimlane=function(z,L){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,L)[mxConstants.STYLE_SHAPE]);return M==mxConstants.SHAPE_SWIMLANE||
-"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var L=this.model.getParent(z);if(null!=L){var M=this.getCurrentCellStyle(L);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==L||!this.isTable(L))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,L,M,U,X,fa,na,ua){null==ua&&(ua=this.model.getParent(z),this.isTable(ua)||this.isTableRow(ua))&&(ua=this.getCellAt(fa,na,null,!0,!1));M=null;this.model.beginUpdate();
-try{M=f.apply(this,[z,L,M,U,X,fa,na,ua]);this.model.setValue(M,"");var pa=this.getChildCells(M,!0);for(L=0;L<pa.length;L++){var za=this.getCellGeometry(pa[L]);null!=za&&za.relative&&0<za.x&&this.model.remove(pa[L])}var Da=this.getChildCells(z,!0);for(L=0;L<Da.length;L++)za=this.getCellGeometry(Da[L]),null!=za&&za.relative&&0>=za.x&&this.model.remove(Da[L]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[M]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var z=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=z&&(new mxCodec(z.ownerDocument)).decode(z,this.getStylesheet())};Graph.prototype.createCellLookup=function(z,K){K=null!=K?K:{};for(var M=0;M<z.length;M++){var U=z[M];K[mxObjectIdentity.get(U)]=U.getId();for(var W=this.model.getChildCount(U),
+ha=0;ha<W;ha++)this.createCellLookup([this.model.getChildAt(U,ha)],K)}return K};Graph.prototype.createCellMapping=function(z,K,M){M=null!=M?M:{};for(var U in z){var W=K[U];null==M[W]&&(M[W]=z[U].getId()||"")}return M};Graph.prototype.importGraphModel=function(z,K,M,U){K=null!=K?K:0;M=null!=M?M:0;var W=new mxCodec(z.ownerDocument),ha=new mxGraphModel;W.decode(z,ha);z=[];W={};var na={},ua=ha.getChildren(this.cloneCell(ha.root,this.isCloneInvalidEdges(),W));if(null!=ua){var pa=this.createCellLookup([ha.root]);
+ua=ua.slice();this.model.beginUpdate();try{if(1!=ua.length||this.isCellLocked(this.getDefaultParent()))for(ha=0;ha<ua.length;ha++)za=this.model.getChildren(this.moveCells([ua[ha]],K,M,!1,this.model.getRoot())[0]),null!=za&&(z=z.concat(za));else{var za=ha.getChildren(ua[0]);null!=za&&(z=this.moveCells(za,K,M,!1,this.getDefaultParent()),na[ha.getChildAt(ha.root,0).getId()]=this.getDefaultParent().getId())}if(null!=z&&(this.createCellMapping(W,pa,na),this.updateCustomLinks(na,z),U)){this.isGridEnabled()&&
+(K=this.snap(K),M=this.snap(M));var Da=this.getBoundingBoxFromGeometry(z,!0);null!=Da&&this.moveCells(z,K-Da.x,M-Da.y)}}finally{this.model.endUpdate()}}return z};Graph.prototype.encodeCells=function(z){for(var K={},M=this.cloneCells(z,null,K),U=new mxDictionary,W=0;W<z.length;W++)U.put(z[W],!0);var ha=new mxCodec,na=new mxGraphModel,ua=na.getChildAt(na.getRoot(),0);for(W=0;W<M.length;W++){na.add(ua,M[W]);var pa=this.view.getState(z[W]);if(null!=pa){var za=this.getCellGeometry(M[W]);null!=za&&za.relative&&
+!this.model.isEdge(z[W])&&null==U.get(this.model.getParent(z[W]))&&(za.offset=null,za.relative=!1,za.x=pa.x/pa.view.scale-pa.view.translate.x,za.y=pa.y/pa.view.scale-pa.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(K,this.createCellLookup(z)),M);return ha.encode(na)};Graph.prototype.isSwimlane=function(z,K){var M=null;null==z||this.model.isEdge(z)||this.model.getParent(z)==this.model.getRoot()||(M=this.getCurrentCellStyle(z,K)[mxConstants.STYLE_SHAPE]);return M==mxConstants.SHAPE_SWIMLANE||
+"table"==M||"tableRow"==M};var d=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=function(z){var K=this.model.getParent(z);if(null!=K){var M=this.getCurrentCellStyle(K);if(null!=M.expand)return"0"!=M.expand}return d.apply(this,arguments)&&(null==K||!this.isTable(K))};var f=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(z,K,M,U,W,ha,na,ua){null==ua&&(ua=this.model.getParent(z),this.isTable(ua)||this.isTableRow(ua))&&(ua=this.getCellAt(ha,na,null,!0,!1));M=null;this.model.beginUpdate();
+try{M=f.apply(this,[z,K,M,U,W,ha,na,ua]);this.model.setValue(M,"");var pa=this.getChildCells(M,!0);for(K=0;K<pa.length;K++){var za=this.getCellGeometry(pa[K]);null!=za&&za.relative&&0<za.x&&this.model.remove(pa[K])}var Da=this.getChildCells(z,!0);for(K=0;K<Da.length;K++)za=this.getCellGeometry(Da[K]),null!=za&&za.relative&&0>=za.x&&this.model.remove(Da[K]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[M]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[M]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
null,[z]);this.setCellStyles(mxConstants.STYLE_STARTARROW,mxConstants.NONE,[z]);var Ma=this.model.getTerminal(M,!1);if(null!=Ma){var La=this.getCurrentCellStyle(Ma);null!=La&&"1"==La.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[z]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[z]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[M]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[M]))}}finally{this.model.endUpdate()}return M};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=
-function(z,L,M){if(L||M)g.apply(this,arguments);else{var U=this.getSelectionCell(),X=null,fa=[],na=mxUtils.bind(this,function(ua){if(null!=this.view.getState(ua)&&(this.model.isVertex(ua)||this.model.isEdge(ua)))if(fa.push(ua),ua==U)X=fa.length-1;else if(z&&null==U&&0<fa.length||null!=X&&z&&fa.length>X||!z&&0<X)return;for(var pa=0;pa<this.model.getChildCount(ua);pa++)na(this.model.getChildAt(ua,pa))});na(this.model.root);0<fa.length&&(X=null!=X?mxUtils.mod(X+(z?1:-1),fa.length):0,this.setSelectionCell(fa[X]))}};
-Graph.prototype.swapShapes=function(z,L,M,U,X,fa,na){L=!1;if(!U&&null!=X&&1==z.length&&(U=this.view.getState(X),M=this.view.getState(z[0]),null!=U&&null!=M&&(null!=fa&&mxEvent.isShiftDown(fa)||"umlLifeline"==U.style.shape&&"umlLifeline"==M.style.shape)&&(U=this.getCellGeometry(X),fa=this.getCellGeometry(z[0]),null!=U&&null!=fa))){L=U.clone();U=fa.clone();U.x=L.x;U.y=L.y;L.x=fa.x;L.y=fa.y;this.model.beginUpdate();try{this.model.setGeometry(X,L),this.model.setGeometry(z[0],U)}finally{this.model.endUpdate()}L=
-!0}return L};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,L,M,U,X,fa,na){if(this.swapShapes(z,L,M,U,X,fa,na))return z;na=null!=na?na:{};if(this.isTable(X)){for(var ua=[],pa=0;pa<z.length;pa++)this.isTable(z[pa])?ua=ua.concat(this.model.getChildCells(z[pa],!0).reverse()):ua.push(z[pa]);z=ua}this.model.beginUpdate();try{ua=[];for(pa=0;pa<z.length;pa++)if(null!=X&&this.isTableRow(z[pa])){var za=this.model.getParent(z[pa]),Da=this.getCellGeometry(z[pa]);this.isTable(za)&&ua.push(za);
-if(null!=za&&null!=Da&&this.isTable(za)&&this.isTable(X)&&(U||za!=X)){if(!U){var Ma=this.getCellGeometry(za);null!=Ma&&(Ma=Ma.clone(),Ma.height-=Da.height,this.model.setGeometry(za,Ma))}Ma=this.getCellGeometry(X);null!=Ma&&(Ma=Ma.clone(),Ma.height+=Da.height,this.model.setGeometry(X,Ma));var La=this.model.getChildCells(X,!0);if(0<La.length){z[pa]=U?this.cloneCell(z[pa]):z[pa];var Ua=this.model.getChildCells(z[pa],!0),Ra=this.model.getChildCells(La[0],!0),Fa=Ra.length-Ua.length;if(0<Fa)for(var va=
-0;va<Fa;va++){var ya=this.cloneCell(Ua[Ua.length-1]);null!=ya&&(ya.value="",this.model.add(z[pa],ya))}else if(0>Fa)for(va=0;va>Fa;va--)this.model.remove(Ua[Ua.length+va-1]);Ua=this.model.getChildCells(z[pa],!0);for(va=0;va<Ra.length;va++){var Na=this.getCellGeometry(Ra[va]),Ja=this.getCellGeometry(Ua[va]);null!=Na&&null!=Ja&&(Ja=Ja.clone(),Ja.width=Na.width,this.model.setGeometry(Ua[va],Ja))}}}}var Pa=m.apply(this,arguments);for(pa=0;pa<ua.length;pa++)!U&&this.model.contains(ua[pa])&&0==this.model.getChildCount(ua[pa])&&
-this.model.remove(ua[pa]);U&&this.updateCustomLinks(this.createCellMapping(na,this.createCellLookup(z)),Pa)}finally{this.model.endUpdate()}return Pa};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,L){var M=[];this.model.beginUpdate();try{for(var U=0;U<z.length;U++)if(this.isTableCell(z[U])){var X=this.model.getParent(z[U]),fa=this.model.getParent(X);1==this.model.getChildCount(X)&&1==this.model.getChildCount(fa)?0>mxUtils.indexOf(z,fa)&&0>mxUtils.indexOf(M,fa)&&M.push(fa):
-this.labelChanged(z[U],"")}else{if(this.isTableRow(z[U])&&(fa=this.model.getParent(z[U]),0>mxUtils.indexOf(z,fa)&&0>mxUtils.indexOf(M,fa))){for(var na=this.model.getChildCells(fa,!0),ua=0,pa=0;pa<na.length;pa++)0<=mxUtils.indexOf(z,na[pa])&&ua++;ua==na.length&&M.push(fa)}M.push(z[U])}M=q.apply(this,[M,L])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,L,M){M=null!=M?M:new Graph;for(var U=0;U<L.length;U++)null!=L[U]&&M.updateCustomLinksForCell(z,L[U],M)};Graph.prototype.updateCustomLinksForCell=
-function(z,L){this.doUpdateCustomLinksForCell(z,L);for(var M=this.model.getChildCount(L),U=0;U<M;U++)this.updateCustomLinksForCell(z,this.model.getChildAt(L,U))};Graph.prototype.doUpdateCustomLinksForCell=function(z,L){};Graph.prototype.getAllConnectionConstraints=function(z,L){if(null!=z){L=mxUtils.getValue(z.style,"points",null);if(null!=L){z=[];try{var M=JSON.parse(L);for(L=0;L<M.length;L++){var U=M[L];z.push(new mxConnectionConstraint(new mxPoint(U[0],U[1]),2<U.length?"0"!=U[2]:!0,null,3<U.length?
-U[3]:0,4<U.length?U[4]:0))}}catch(fa){}return z}if(null!=z.shape&&null!=z.shape.bounds){U=z.shape.direction;L=z.shape.bounds;var X=z.shape.scale;M=L.width/X;L=L.height/X;if(U==mxConstants.DIRECTION_NORTH||U==mxConstants.DIRECTION_SOUTH)U=M,M=L,L=U;L=z.shape.getConstraints(z.style,M,L);if(null!=L)return L;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;if(null!=z.shape.constraints)return z.shape.constraints}}return null};Graph.prototype.flipEdge=function(z){if(null!=
-z){var L=this.getCurrentCellStyle(z);L=mxUtils.getValue(L,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,L,[z])}};Graph.prototype.isValidRoot=function(z){for(var L=this.model.getChildCount(z),M=0,U=0;U<L;U++){var X=this.model.getChildAt(z,U);this.model.isVertex(X)&&(X=this.getCellGeometry(X),null==X||X.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=
-function(z,L,M){for(var U=this.getCurrentCellStyle(z),X=!0,fa=!0,na=0;na<L.length&&fa;na++)X=X&&this.isTable(L[na]),fa=fa&&this.isTableRow(L[na]);return(1==L.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(U,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(U,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||fa||X))&&!this.isCellLocked(z)};
-Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var L=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(L&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&(L=!1))}return L};Graph.prototype.getPreferredSizeForCell=function(z){var L=mxGraph.prototype.getPreferredSizeForCell.apply(this,
-arguments);null!=L&&(L.width+=10,L.height+=4,this.gridEnabled&&(L.width=this.snap(L.width),L.height=this.snap(L.height)));return L};Graph.prototype.turnShapes=function(z,L){var M=this.getModel(),U=[];M.beginUpdate();try{for(var X=0;X<z.length;X++){var fa=z[X];if(M.isEdge(fa)){var na=M.getTerminal(fa,!0),ua=M.getTerminal(fa,!1);M.setTerminal(fa,ua,!0);M.setTerminal(fa,na,!1);var pa=M.getGeometry(fa);if(null!=pa){pa=pa.clone();null!=pa.points&&pa.points.reverse();var za=pa.getTerminalPoint(!0),Da=pa.getTerminalPoint(!1);
-pa.setTerminalPoint(za,!1);pa.setTerminalPoint(Da,!0);M.setGeometry(fa,pa);var Ma=this.view.getState(fa),La=this.view.getState(na),Ua=this.view.getState(ua);if(null!=Ma){var Ra=null!=La?this.getConnectionConstraint(Ma,La,!0):null,Fa=null!=Ua?this.getConnectionConstraint(Ma,Ua,!1):null;this.setConnectionConstraint(fa,na,!0,Fa);this.setConnectionConstraint(fa,ua,!1,Ra);var va=mxUtils.getValue(Ma.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
-mxUtils.getValue(Ma.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[fa]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,va,[fa])}U.push(fa)}}else if(M.isVertex(fa)&&(pa=this.getCellGeometry(fa),null!=pa)){if(!(this.isTable(fa)||this.isTableRow(fa)||this.isTableCell(fa)||this.isSwimlane(fa))){pa=pa.clone();pa.x+=pa.width/2-pa.height/2;pa.y+=pa.height/2-pa.width/2;var ya=pa.width;pa.width=pa.height;pa.height=ya;M.setGeometry(fa,pa)}var Na=this.view.getState(fa);if(null!=Na){var Ja=
-[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Pa=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Ja[mxUtils.mod(mxUtils.indexOf(Ja,Pa)+(L?-1:1),Ja.length)],[fa])}U.push(fa)}}}finally{M.endUpdate()}return U};Graph.prototype.stencilHasPlaceholders=function(z){if(null!=z&&null!=z.fgNode)for(z=z.fgNode.firstChild;null!=z;){if("text"==z.nodeName&&"1"==z.getAttribute("placeholders"))return!0;
-z=z.nextSibling}return!1};var y=Graph.prototype.processChange;Graph.prototype.processChange=function(z){if(z instanceof mxGeometryChange&&(this.isTableCell(z.cell)||this.isTableRow(z.cell))&&(null==z.previous&&null!=z.geometry||null!=z.previous&&!z.previous.equals(z.geometry))){var L=z.cell;this.isTableCell(L)&&(L=this.model.getParent(L));this.isTableRow(L)&&(L=this.model.getParent(L));var M=this.view.getState(L);null!=M&&null!=M.shape&&(this.view.invalidate(L),M.shape.bounds=null)}y.apply(this,arguments);
-z instanceof mxValueChange&&null!=z.cell&&null!=z.cell.value&&"object"==typeof z.cell.value&&this.invalidateDescendantsWithPlaceholders(z.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(z){z=this.model.getDescendants(z);if(0<z.length)for(var L=0;L<z.length;L++){var M=this.view.getState(z[L]);null!=M&&null!=M.shape&&null!=M.shape.stencil&&this.stencilHasPlaceholders(M.shape.stencil)?this.removeStateForCell(z[L]):this.isReplacePlaceholders(z[L])&&this.view.invalidate(z[L],!1,!1)}};
-Graph.prototype.replaceElement=function(z,L){L=z.ownerDocument.createElement(null!=L?L:"span");for(var M=Array.prototype.slice.call(z.attributes);attr=M.pop();)L.setAttribute(attr.nodeName,attr.nodeValue);L.innerHTML=z.innerHTML;z.parentNode.replaceChild(L,z)};Graph.prototype.processElements=function(z,L){if(null!=z){z=z.getElementsByTagName("*");for(var M=0;M<z.length;M++)L(z[M])}};Graph.prototype.updateLabelElements=function(z,L,M){z=null!=z?z:this.getSelectionCells();for(var U=document.createElement("div"),
-X=0;X<z.length;X++)if(this.isHtmlLabel(z[X])){var fa=this.convertValueToString(z[X]);if(null!=fa&&0<fa.length){U.innerHTML=fa;for(var na=U.getElementsByTagName(null!=M?M:"*"),ua=0;ua<na.length;ua++)L(na[ua]);U.innerHTML!=fa&&this.cellLabelChanged(z[X],U.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,L,M){L=Graph.zapGremlins(L);this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var U=z.getAttribute("placeholder"),
-X=z;null!=X;){if(X==this.model.getRoot()||null!=X.value&&"object"==typeof X.value&&X.hasAttribute(U)){this.setAttributeForCell(X,U,L);break}X=this.model.getParent(X)}var fa=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&fa.hasAttribute("label_"+Graph.diagramLanguage)?fa.setAttribute("label_"+Graph.diagramLanguage,L):fa.setAttribute("label",L);L=fa}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=
-z){for(var L=new mxDictionary,M=0;M<z.length;M++)L.put(z[M],!0);var U=[];for(M=0;M<z.length;M++){var X=this.model.getParent(z[M]);null==X||L.get(X)||(L.put(X,!0),U.push(X))}for(M=0;M<U.length;M++)if(X=this.view.getState(U[M]),null!=X&&(this.model.isEdge(X.cell)||this.model.isVertex(X.cell))&&this.isCellDeletable(X.cell)&&this.isTransparentState(X)){for(var fa=!0,na=0;na<this.model.getChildCount(X.cell)&&fa;na++)L.get(this.model.getChildAt(X.cell,na))||(fa=!1);fa&&z.push(X.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
-arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var L=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&L.push(z[M]);z=L;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,L){this.setAttributeForCell(z,"link",L)};Graph.prototype.setTooltipForCell=function(z,L){var M="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(z.value)&&z.value.hasAttribute("tooltip_"+
-Graph.diagramLanguage)&&(M="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(z,M,L)};Graph.prototype.getAttributeForCell=function(z,L,M){z=null!=z.value&&"object"===typeof z.value?z.value.getAttribute(L):null;return null!=z?z:M};Graph.prototype.setAttributeForCell=function(z,L,M){if(null!=z.value&&"object"==typeof z.value)var U=z.value.cloneNode(!0);else U=mxUtils.createXmlDocument().createElement("UserObject"),U.setAttribute("label",z.value||"");null!=M?U.setAttribute(L,M):U.removeAttribute(L);
-this.model.setValue(z,U)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,L,M,U){this.getModel();if(mxEvent.isAltDown(L))return null;for(var X=0;X<z.length;X++){var fa=this.model.getParent(z[X]);if(this.model.isEdge(fa)&&0>mxUtils.indexOf(z,fa))return null}fa=F.apply(this,arguments);var na=!0;for(X=0;X<z.length&&na;X++)na=na&&this.isTableRow(z[X]);na&&(this.isTableCell(fa)&&(fa=this.model.getParent(fa)),this.isTableRow(fa)&&(fa=this.model.getParent(fa)),this.isTable(fa)||
-(fa=null));return fa};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,L){this.isEnabled()&&(L=this.insertTextForEvent(z,L),mxGraph.prototype.dblClick.call(this,z,L))};Graph.prototype.insertTextForEvent=function(z,L){var M=mxUtils.convertPoint(this.container,mxEvent.getClientX(z),mxEvent.getClientY(z));if(null!=z&&!this.model.isVertex(L)){var U=this.model.isEdge(L)?this.view.getState(L):
-null,X=mxEvent.getSource(z);this.firstClickState!=U||this.firstClickSource!=X||null!=U&&null!=U.text&&null!=U.text.node&&null!=U.text.boundingBox&&(mxUtils.contains(U.text.boundingBox,M.x,M.y)||mxUtils.isAncestorNode(U.text.node,mxEvent.getSource(z)))||(null!=U||this.isCellLocked(this.getDefaultParent()))&&(null==U||this.isCellLocked(U.cell))||!(null!=U||mxClient.IS_SVG&&X==this.view.getCanvas().ownerSVGElement)||(null==U&&(U=this.view.getState(this.getCellAt(M.x,M.y))),L=this.addText(M.x,M.y,U))}return L};
-Graph.prototype.getInsertPoint=function(){var z=this.getGridSize(),L=this.container.scrollLeft/this.view.scale-this.view.translate.x,M=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var U=this.getPageLayout(),X=this.getPageSize();L=Math.max(L,U.x*X.width);M=Math.max(M,U.y*X.height)}return new mxPoint(this.snap(L+z),this.snap(M+z))};Graph.prototype.getFreeInsertPoint=function(){var z=this.view,L=this.getGraphBounds(),M=this.getInsertPoint(),U=this.snap(Math.round(Math.max(M.x,
-L.x/z.scale-z.translate.x+(0==L.width?2*this.gridSize:0))));z=this.snap(Math.round(Math.max(M.y,(L.y+L.height)/z.scale-z.translate.y+2*this.gridSize)));return new mxPoint(U,z)};Graph.prototype.getCenterInsertPoint=function(z){z=null!=z?z:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
-2)/this.view.scale-this.view.translate.y-z.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-z.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(z,L,M){var U=new mxCell;U.value="Text";U.geometry=new mxGeometry(0,0,0,0);U.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){U.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
-U.geometry.relative=!0;U.connectable=!1;var X=this.view.getRelativePoint(M,z,L);U.geometry.x=Math.round(1E4*X.x)/1E4;U.geometry.y=Math.round(X.y);U.geometry.offset=new mxPoint(0,0);X=this.view.getPoint(M,U.geometry);var fa=this.view.scale;U.geometry.offset=new mxPoint(Math.round((z-X.x)/fa),Math.round((L-X.y)/fa))}else X=this.view.translate,U.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",U.geometry.width=40,U.geometry.height=20,U.geometry.x=Math.round(z/this.view.scale)-
-X.x-(null!=M?M.origin.x:0),U.geometry.y=Math.round(L/this.view.scale)-X.y-(null!=M?M.origin.y:0),U.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([U],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[U])),this.autoSizeCell(U)}finally{this.getModel().endUpdate()}return U};Graph.prototype.addClickHandler=function(z,L,M){var U=mxUtils.bind(this,function(){var pa=this.container.getElementsByTagName("a");if(null!=pa)for(var za=0;za<pa.length;za++){var Da=
-this.getAbsoluteUrl(pa[za].getAttribute("href"));null!=Da&&(pa[za].setAttribute("rel",this.linkRelation),pa[za].setAttribute("href",Da),null!=L&&mxEvent.addGestureListeners(pa[za],null,null,L))}});this.model.addListener(mxEvent.CHANGE,U);U();var X=this.container.style.cursor,fa=this.getTolerance(),na=this,ua={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(na,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(pa){var za=
+function(z,K,M){if(K||M)g.apply(this,arguments);else{var U=this.getSelectionCell(),W=null,ha=[],na=mxUtils.bind(this,function(ua){if(null!=this.view.getState(ua)&&(this.model.isVertex(ua)||this.model.isEdge(ua)))if(ha.push(ua),ua==U)W=ha.length-1;else if(z&&null==U&&0<ha.length||null!=W&&z&&ha.length>W||!z&&0<W)return;for(var pa=0;pa<this.model.getChildCount(ua);pa++)na(this.model.getChildAt(ua,pa))});na(this.model.root);0<ha.length&&(W=null!=W?mxUtils.mod(W+(z?1:-1),ha.length):0,this.setSelectionCell(ha[W]))}};
+Graph.prototype.swapShapes=function(z,K,M,U,W,ha,na){K=!1;if(!U&&null!=W&&1==z.length&&(U=this.view.getState(W),M=this.view.getState(z[0]),null!=U&&null!=M&&(null!=ha&&mxEvent.isShiftDown(ha)||"umlLifeline"==U.style.shape&&"umlLifeline"==M.style.shape)&&(U=this.getCellGeometry(W),ha=this.getCellGeometry(z[0]),null!=U&&null!=ha))){K=U.clone();U=ha.clone();U.x=K.x;U.y=K.y;K.x=ha.x;K.y=ha.y;this.model.beginUpdate();try{this.model.setGeometry(W,K),this.model.setGeometry(z[0],U)}finally{this.model.endUpdate()}K=
+!0}return K};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(z,K,M,U,W,ha,na){if(this.swapShapes(z,K,M,U,W,ha,na))return z;na=null!=na?na:{};if(this.isTable(W)){for(var ua=[],pa=0;pa<z.length;pa++)this.isTable(z[pa])?ua=ua.concat(this.model.getChildCells(z[pa],!0).reverse()):ua.push(z[pa]);z=ua}this.model.beginUpdate();try{ua=[];for(pa=0;pa<z.length;pa++)if(null!=W&&this.isTableRow(z[pa])){var za=this.model.getParent(z[pa]),Da=this.getCellGeometry(z[pa]);this.isTable(za)&&ua.push(za);
+if(null!=za&&null!=Da&&this.isTable(za)&&this.isTable(W)&&(U||za!=W)){if(!U){var Ma=this.getCellGeometry(za);null!=Ma&&(Ma=Ma.clone(),Ma.height-=Da.height,this.model.setGeometry(za,Ma))}Ma=this.getCellGeometry(W);null!=Ma&&(Ma=Ma.clone(),Ma.height+=Da.height,this.model.setGeometry(W,Ma));var La=this.model.getChildCells(W,!0);if(0<La.length){z[pa]=U?this.cloneCell(z[pa]):z[pa];var Ua=this.model.getChildCells(z[pa],!0),Sa=this.model.getChildCells(La[0],!0),Fa=Sa.length-Ua.length;if(0<Fa)for(var va=
+0;va<Fa;va++){var ya=this.cloneCell(Ua[Ua.length-1]);null!=ya&&(ya.value="",this.model.add(z[pa],ya))}else if(0>Fa)for(va=0;va>Fa;va--)this.model.remove(Ua[Ua.length+va-1]);Ua=this.model.getChildCells(z[pa],!0);for(va=0;va<Sa.length;va++){var Na=this.getCellGeometry(Sa[va]),Ja=this.getCellGeometry(Ua[va]);null!=Na&&null!=Ja&&(Ja=Ja.clone(),Ja.width=Na.width,this.model.setGeometry(Ua[va],Ja))}}}}var Qa=m.apply(this,arguments);for(pa=0;pa<ua.length;pa++)!U&&this.model.contains(ua[pa])&&0==this.model.getChildCount(ua[pa])&&
+this.model.remove(ua[pa]);U&&this.updateCustomLinks(this.createCellMapping(na,this.createCellLookup(z)),Qa)}finally{this.model.endUpdate()}return Qa};var q=Graph.prototype.removeCells;Graph.prototype.removeCells=function(z,K){var M=[];this.model.beginUpdate();try{for(var U=0;U<z.length;U++)if(this.isTableCell(z[U])){var W=this.model.getParent(z[U]),ha=this.model.getParent(W);1==this.model.getChildCount(W)&&1==this.model.getChildCount(ha)?0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha)&&M.push(ha):
+this.labelChanged(z[U],"")}else{if(this.isTableRow(z[U])&&(ha=this.model.getParent(z[U]),0>mxUtils.indexOf(z,ha)&&0>mxUtils.indexOf(M,ha))){for(var na=this.model.getChildCells(ha,!0),ua=0,pa=0;pa<na.length;pa++)0<=mxUtils.indexOf(z,na[pa])&&ua++;ua==na.length&&M.push(ha)}M.push(z[U])}M=q.apply(this,[M,K])}finally{this.model.endUpdate()}return M};Graph.prototype.updateCustomLinks=function(z,K,M){M=null!=M?M:new Graph;for(var U=0;U<K.length;U++)null!=K[U]&&M.updateCustomLinksForCell(z,K[U],M)};Graph.prototype.updateCustomLinksForCell=
+function(z,K){this.doUpdateCustomLinksForCell(z,K);for(var M=this.model.getChildCount(K),U=0;U<M;U++)this.updateCustomLinksForCell(z,this.model.getChildAt(K,U))};Graph.prototype.doUpdateCustomLinksForCell=function(z,K){};Graph.prototype.getAllConnectionConstraints=function(z,K){if(null!=z){K=mxUtils.getValue(z.style,"points",null);if(null!=K){z=[];try{var M=JSON.parse(K);for(K=0;K<M.length;K++){var U=M[K];z.push(new mxConnectionConstraint(new mxPoint(U[0],U[1]),2<U.length?"0"!=U[2]:!0,null,3<U.length?
+U[3]:0,4<U.length?U[4]:0))}}catch(ha){}return z}if(null!=z.shape&&null!=z.shape.bounds){U=z.shape.direction;K=z.shape.bounds;var W=z.shape.scale;M=K.width/W;K=K.height/W;if(U==mxConstants.DIRECTION_NORTH||U==mxConstants.DIRECTION_SOUTH)U=M,M=K,K=U;K=z.shape.getConstraints(z.style,M,K);if(null!=K)return K;if(null!=z.shape.stencil&&null!=z.shape.stencil.constraints)return z.shape.stencil.constraints;if(null!=z.shape.constraints)return z.shape.constraints}}return null};Graph.prototype.flipEdge=function(z){if(null!=
+z){var K=this.getCurrentCellStyle(z);K=mxUtils.getValue(K,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,K,[z])}};Graph.prototype.isValidRoot=function(z){for(var K=this.model.getChildCount(z),M=0,U=0;U<K;U++){var W=this.model.getChildAt(z,U);this.model.isVertex(W)&&(W=this.getCellGeometry(W),null==W||W.relative||M++)}return 0<M||this.isContainer(z)};Graph.prototype.isValidDropTarget=
+function(z,K,M){for(var U=this.getCurrentCellStyle(z),W=!0,ha=!0,na=0;na<K.length&&ha;na++)W=W&&this.isTable(K[na]),ha=ha&&this.isTableRow(K[na]);return(1==K.length&&null!=M&&mxEvent.isShiftDown(M)&&!mxEvent.isControlDown(M)&&!mxEvent.isAltDown(M)||("1"!=mxUtils.getValue(U,"part","0")||this.isContainer(z))&&"0"!=mxUtils.getValue(U,"dropTarget","1")&&(mxGraph.prototype.isValidDropTarget.apply(this,arguments)||this.isContainer(z))&&!this.isTableRow(z)&&(!this.isTable(z)||ha||W))&&!this.isCellLocked(z)};
+Graph.prototype.createGroupCell=function(){var z=mxGraph.prototype.createGroupCell.apply(this,arguments);z.setStyle("group");return z};Graph.prototype.isExtendParentsOnAdd=function(z){var K=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(K&&null!=z&&null!=this.layoutManager){var M=this.model.getParent(z);null!=M&&(M=this.layoutManager.getLayout(M),null!=M&&M.constructor==mxStackLayout&&(K=!1))}return K};Graph.prototype.getPreferredSizeForCell=function(z){var K=mxGraph.prototype.getPreferredSizeForCell.apply(this,
+arguments);null!=K&&(K.width+=10,K.height+=4,this.gridEnabled&&(K.width=this.snap(K.width),K.height=this.snap(K.height)));return K};Graph.prototype.turnShapes=function(z,K){var M=this.getModel(),U=[];M.beginUpdate();try{for(var W=0;W<z.length;W++){var ha=z[W];if(M.isEdge(ha)){var na=M.getTerminal(ha,!0),ua=M.getTerminal(ha,!1);M.setTerminal(ha,ua,!0);M.setTerminal(ha,na,!1);var pa=M.getGeometry(ha);if(null!=pa){pa=pa.clone();null!=pa.points&&pa.points.reverse();var za=pa.getTerminalPoint(!0),Da=pa.getTerminalPoint(!1);
+pa.setTerminalPoint(za,!1);pa.setTerminalPoint(Da,!0);M.setGeometry(ha,pa);var Ma=this.view.getState(ha),La=this.view.getState(na),Ua=this.view.getState(ua);if(null!=Ma){var Sa=null!=La?this.getConnectionConstraint(Ma,La,!0):null,Fa=null!=Ua?this.getConnectionConstraint(Ma,Ua,!1):null;this.setConnectionConstraint(ha,na,!0,Fa);this.setConnectionConstraint(ha,ua,!1,Sa);var va=mxUtils.getValue(Ma.style,mxConstants.STYLE_SOURCE_PERIMETER_SPACING);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,
+mxUtils.getValue(Ma.style,mxConstants.STYLE_TARGET_PERIMETER_SPACING),[ha]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,va,[ha])}U.push(ha)}}else if(M.isVertex(ha)&&(pa=this.getCellGeometry(ha),null!=pa)){if(!(this.isTable(ha)||this.isTableRow(ha)||this.isTableCell(ha)||this.isSwimlane(ha))){pa=pa.clone();pa.x+=pa.width/2-pa.height/2;pa.y+=pa.height/2-pa.width/2;var ya=pa.width;pa.width=pa.height;pa.height=ya;M.setGeometry(ha,pa)}var Na=this.view.getState(ha);if(null!=Na){var Ja=
+[mxConstants.DIRECTION_EAST,mxConstants.DIRECTION_SOUTH,mxConstants.DIRECTION_WEST,mxConstants.DIRECTION_NORTH],Qa=mxUtils.getValue(Na.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST);this.setCellStyles(mxConstants.STYLE_DIRECTION,Ja[mxUtils.mod(mxUtils.indexOf(Ja,Qa)+(K?-1:1),Ja.length)],[ha])}U.push(ha)}}}finally{M.endUpdate()}return U};Graph.prototype.stencilHasPlaceholders=function(z){if(null!=z&&null!=z.fgNode)for(z=z.fgNode.firstChild;null!=z;){if("text"==z.nodeName&&"1"==z.getAttribute("placeholders"))return!0;
+z=z.nextSibling}return!1};var y=Graph.prototype.processChange;Graph.prototype.processChange=function(z){if(z instanceof mxGeometryChange&&(this.isTableCell(z.cell)||this.isTableRow(z.cell))&&(null==z.previous&&null!=z.geometry||null!=z.previous&&!z.previous.equals(z.geometry))){var K=z.cell;this.isTableCell(K)&&(K=this.model.getParent(K));this.isTableRow(K)&&(K=this.model.getParent(K));var M=this.view.getState(K);null!=M&&null!=M.shape&&(this.view.invalidate(K),M.shape.bounds=null)}y.apply(this,arguments);
+z instanceof mxValueChange&&null!=z.cell&&null!=z.cell.value&&"object"==typeof z.cell.value&&this.invalidateDescendantsWithPlaceholders(z.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(z){z=this.model.getDescendants(z);if(0<z.length)for(var K=0;K<z.length;K++){var M=this.view.getState(z[K]);null!=M&&null!=M.shape&&null!=M.shape.stencil&&this.stencilHasPlaceholders(M.shape.stencil)?this.removeStateForCell(z[K]):this.isReplacePlaceholders(z[K])&&this.view.invalidate(z[K],!1,!1)}};
+Graph.prototype.replaceElement=function(z,K){K=z.ownerDocument.createElement(null!=K?K:"span");for(var M=Array.prototype.slice.call(z.attributes);attr=M.pop();)K.setAttribute(attr.nodeName,attr.nodeValue);K.innerHTML=z.innerHTML;z.parentNode.replaceChild(K,z)};Graph.prototype.processElements=function(z,K){if(null!=z){z=z.getElementsByTagName("*");for(var M=0;M<z.length;M++)K(z[M])}};Graph.prototype.updateLabelElements=function(z,K,M){z=null!=z?z:this.getSelectionCells();for(var U=document.createElement("div"),
+W=0;W<z.length;W++)if(this.isHtmlLabel(z[W])){var ha=this.convertValueToString(z[W]);if(null!=ha&&0<ha.length){U.innerHTML=ha;for(var na=U.getElementsByTagName(null!=M?M:"*"),ua=0;ua<na.length;ua++)K(na[ua]);U.innerHTML!=ha&&this.cellLabelChanged(z[W],U.innerHTML)}}};Graph.prototype.cellLabelChanged=function(z,K,M){K=Graph.zapGremlins(K);this.model.beginUpdate();try{if(null!=z.value&&"object"==typeof z.value){if(this.isReplacePlaceholders(z)&&null!=z.getAttribute("placeholder"))for(var U=z.getAttribute("placeholder"),
+W=z;null!=W;){if(W==this.model.getRoot()||null!=W.value&&"object"==typeof W.value&&W.hasAttribute(U)){this.setAttributeForCell(W,U,K);break}W=this.model.getParent(W)}var ha=z.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&ha.hasAttribute("label_"+Graph.diagramLanguage)?ha.setAttribute("label_"+Graph.diagramLanguage,K):ha.setAttribute("label",K);K=ha}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(z){if(null!=
+z){for(var K=new mxDictionary,M=0;M<z.length;M++)K.put(z[M],!0);var U=[];for(M=0;M<z.length;M++){var W=this.model.getParent(z[M]);null==W||K.get(W)||(K.put(W,!0),U.push(W))}for(M=0;M<U.length;M++)if(W=this.view.getState(U[M]),null!=W&&(this.model.isEdge(W.cell)||this.model.isVertex(W.cell))&&this.isCellDeletable(W.cell)&&this.isTransparentState(W)){for(var ha=!0,na=0;na<this.model.getChildCount(W.cell)&&ha;na++)K.get(this.model.getChildAt(W.cell,na))||(ha=!1);ha&&z.push(W.cell)}}mxGraph.prototype.cellsRemoved.apply(this,
+arguments)};Graph.prototype.removeCellsAfterUngroup=function(z){for(var K=[],M=0;M<z.length;M++)this.isCellDeletable(z[M])&&this.isTransparentState(this.view.getState(z[M]))&&K.push(z[M]);z=K;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(z,K){this.setAttributeForCell(z,"link",K)};Graph.prototype.setTooltipForCell=function(z,K){var M="tooltip";Graph.translateDiagram&&null!=Graph.diagramLanguage&&mxUtils.isNode(z.value)&&z.value.hasAttribute("tooltip_"+
+Graph.diagramLanguage)&&(M="tooltip_"+Graph.diagramLanguage);this.setAttributeForCell(z,M,K)};Graph.prototype.getAttributeForCell=function(z,K,M){z=null!=z.value&&"object"===typeof z.value?z.value.getAttribute(K):null;return null!=z?z:M};Graph.prototype.setAttributeForCell=function(z,K,M){if(null!=z.value&&"object"==typeof z.value)var U=z.value.cloneNode(!0);else U=mxUtils.createXmlDocument().createElement("UserObject"),U.setAttribute("label",z.value||"");null!=M?U.setAttribute(K,M):U.removeAttribute(K);
+this.model.setValue(z,U)};var F=Graph.prototype.getDropTarget;Graph.prototype.getDropTarget=function(z,K,M,U){this.getModel();if(mxEvent.isAltDown(K))return null;for(var W=0;W<z.length;W++){var ha=this.model.getParent(z[W]);if(this.model.isEdge(ha)&&0>mxUtils.indexOf(z,ha))return null}ha=F.apply(this,arguments);var na=!0;for(W=0;W<z.length&&na;W++)na=na&&this.isTableRow(z[W]);na&&(this.isTableCell(ha)&&(ha=this.model.getParent(ha)),this.isTableRow(ha)&&(ha=this.model.getParent(ha)),this.isTable(ha)||
+(ha=null));return ha};Graph.prototype.click=function(z){mxGraph.prototype.click.call(this,z);this.firstClickState=z.getState();this.firstClickSource=z.getSource()};Graph.prototype.dblClick=function(z,K){this.isEnabled()&&(K=this.insertTextForEvent(z,K),mxGraph.prototype.dblClick.call(this,z,K))};Graph.prototype.insertTextForEvent=function(z,K){var M=mxUtils.convertPoint(this.container,mxEvent.getClientX(z),mxEvent.getClientY(z));if(null!=z&&!this.model.isVertex(K)){var U=this.model.isEdge(K)?this.view.getState(K):
+null,W=mxEvent.getSource(z);this.firstClickState!=U||this.firstClickSource!=W||null!=U&&null!=U.text&&null!=U.text.node&&null!=U.text.boundingBox&&(mxUtils.contains(U.text.boundingBox,M.x,M.y)||mxUtils.isAncestorNode(U.text.node,mxEvent.getSource(z)))||(null!=U||this.isCellLocked(this.getDefaultParent()))&&(null==U||this.isCellLocked(U.cell))||!(null!=U||mxClient.IS_SVG&&W==this.view.getCanvas().ownerSVGElement)||(null==U&&(U=this.view.getState(this.getCellAt(M.x,M.y))),K=this.addText(M.x,M.y,U))}return K};
+Graph.prototype.getInsertPoint=function(){var z=this.getGridSize(),K=this.container.scrollLeft/this.view.scale-this.view.translate.x,M=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible){var U=this.getPageLayout(),W=this.getPageSize();K=Math.max(K,U.x*W.width);M=Math.max(M,U.y*W.height)}return new mxPoint(this.snap(K+z),this.snap(M+z))};Graph.prototype.getFreeInsertPoint=function(){var z=this.view,K=this.getGraphBounds(),M=this.getInsertPoint(),U=this.snap(Math.round(Math.max(M.x,
+K.x/z.scale-z.translate.x+(0==K.width?2*this.gridSize:0))));z=this.snap(Math.round(Math.max(M.y,(K.y+K.height)/z.scale-z.translate.y+2*this.gridSize)));return new mxPoint(U,z)};Graph.prototype.getCenterInsertPoint=function(z){z=null!=z?z:new mxRectangle;return mxUtils.hasScrollbars(this.container)?new mxPoint(this.snap(Math.round((this.container.scrollLeft+this.container.clientWidth/2)/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/
+2)/this.view.scale-this.view.translate.y-z.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-z.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-z.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(z,K,M){var U=new mxCell;U.value="Text";U.geometry=new mxGeometry(0,0,0,0);U.vertex=!0;if(null!=M&&this.model.isEdge(M.cell)){U.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";
+U.geometry.relative=!0;U.connectable=!1;var W=this.view.getRelativePoint(M,z,K);U.geometry.x=Math.round(1E4*W.x)/1E4;U.geometry.y=Math.round(W.y);U.geometry.offset=new mxPoint(0,0);W=this.view.getPoint(M,U.geometry);var ha=this.view.scale;U.geometry.offset=new mxPoint(Math.round((z-W.x)/ha),Math.round((K-W.y)/ha))}else W=this.view.translate,U.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",U.geometry.width=40,U.geometry.height=20,U.geometry.x=Math.round(z/this.view.scale)-
+W.x-(null!=M?M.origin.x:0),U.geometry.y=Math.round(K/this.view.scale)-W.y-(null!=M?M.origin.y:0),U.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([U],null!=M?M.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[U])),this.autoSizeCell(U)}finally{this.getModel().endUpdate()}return U};Graph.prototype.addClickHandler=function(z,K,M){var U=mxUtils.bind(this,function(){var pa=this.container.getElementsByTagName("a");if(null!=pa)for(var za=0;za<pa.length;za++){var Da=
+this.getAbsoluteUrl(pa[za].getAttribute("href"));null!=Da&&(pa[za].setAttribute("rel",this.linkRelation),pa[za].setAttribute("href",Da),null!=K&&mxEvent.addGestureListeners(pa[za],null,null,K))}});this.model.addListener(mxEvent.CHANGE,U);U();var W=this.container.style.cursor,ha=this.getTolerance(),na=this,ua={currentState:null,currentLink:null,currentTarget:null,highlight:null!=z&&""!=z&&z!=mxConstants.NONE?new mxCellHighlight(na,z,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(pa){var za=
pa.sourceState;if(null==za||null==na.getLinkForCell(za.cell))pa=na.getCellAt(pa.getGraphX(),pa.getGraphY(),null,null,null,function(Da,Ma,La){return null==na.getLinkForCell(Da.cell)}),za=null==za||na.model.isAncestor(pa,za.cell)?na.view.getState(pa):null;za!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=za,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(pa,za){this.startX=za.getGraphX();this.startY=za.getGraphY();this.scrollLeft=na.container.scrollLeft;
-this.scrollTop=na.container.scrollTop;null==this.currentLink&&"auto"==na.container.style.overflow&&(na.container.style.cursor="move");this.updateCurrentState(za)},mouseMove:function(pa,za){if(na.isMouseDown)null!=this.currentLink&&(pa=Math.abs(this.startX-za.getGraphX()),za=Math.abs(this.startY-za.getGraphY()),(pa>fa||za>fa)&&this.clear());else{for(pa=za.getSource();null!=pa&&"a"!=pa.nodeName.toLowerCase();)pa=pa.parentNode;null!=pa?this.clear():(null!=na.tooltipHandler&&null!=this.currentLink&&null!=
-this.currentState&&na.tooltipHandler.reset(za,!0,this.currentState),(null==this.currentState||za.getState()!=this.currentState&&null!=za.sourceState||!na.intersects(this.currentState,za.getGraphX(),za.getGraphY()))&&this.updateCurrentState(za))}},mouseUp:function(pa,za){var Da=za.getSource();for(pa=za.getEvent();null!=Da&&"a"!=Da.nodeName.toLowerCase();)Da=Da.parentNode;null==Da&&Math.abs(this.scrollLeft-na.container.scrollLeft)<fa&&Math.abs(this.scrollTop-na.container.scrollTop)<fa&&(null==za.sourceState||
-!za.isSource(za.sourceState.control))&&((mxEvent.isLeftMouseButton(pa)||mxEvent.isMiddleMouseButton(pa))&&!mxEvent.isPopupTrigger(pa)||mxEvent.isTouchEvent(pa))&&(null!=this.currentLink?(Da=na.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&Da||null==L||L(pa,this.currentLink),mxEvent.isConsumed(pa)||(pa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(pa)?"_blank":Da?na.linkTarget:"_top",na.openLink(this.currentLink,pa),za.consume())):null!=M&&!za.isConsumed()&&
-Math.abs(this.scrollLeft-na.container.scrollLeft)<fa&&Math.abs(this.scrollTop-na.container.scrollTop)<fa&&Math.abs(this.startX-za.getGraphX())<fa&&Math.abs(this.startY-za.getGraphY())<fa&&M(za.getEvent()));this.clear()},activate:function(pa){this.currentLink=na.getAbsoluteUrl(na.getLinkForCell(pa.cell));null!=this.currentLink&&(this.currentTarget=na.getLinkTargetForCell(pa.cell),na.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(pa))},clear:function(){null!=na.container&&
-(na.container.style.cursor=X);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=na.tooltipHandler&&na.tooltipHandler.hide()}};na.click=function(pa){};na.addMouseListener(ua);mxEvent.addListener(document,"mouseleave",function(pa){ua.clear()})};Graph.prototype.duplicateCells=function(z,L){z=null!=z?z:this.getSelectionCells();L=null!=L?L:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);
-var U=this.getModel(),X=this.gridSize,fa=[];U.beginUpdate();try{var na={},ua=this.createCellLookup(z),pa=this.cloneCells(z,!1,na,!0);for(M=0;M<z.length;M++){var za=U.getParent(z[M]);if(null!=za){var Da=this.moveCells([pa[M]],X,X,!1)[0];fa.push(Da);if(L)U.add(za,pa[M]);else{var Ma=za.getIndex(z[M]);U.add(za,pa[M],Ma+1)}if(this.isTable(za)){var La=this.getCellGeometry(pa[M]),Ua=this.getCellGeometry(za);null!=La&&null!=Ua&&(Ua=Ua.clone(),Ua.height+=La.height,U.setGeometry(za,Ua))}}else fa.push(pa[M])}this.updateCustomLinks(this.createCellMapping(na,
-ua),pa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",pa))}finally{U.endUpdate()}return fa};Graph.prototype.insertImage=function(z,L,M){if(null!=z&&null!=this.cellEditor.textarea){for(var U=this.cellEditor.textarea.getElementsByTagName("img"),X=[],fa=0;fa<U.length;fa++)X.push(U[fa]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==X.length+1)for(fa=z.length-1;0<=fa;fa--)if(0==fa||z[fa]!=X[fa-1]){z[fa].setAttribute("width",
-L);z[fa].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var L=this.cellEditor.textarea.getElementsByTagName("a"),M=[],U=0;U<L.length;U++)M.push(L[U]);document.execCommand("createlink",!1,mxUtils.trim(z));L=this.cellEditor.textarea.getElementsByTagName("a");if(L.length==M.length+1)for(U=L.length-1;0<=U;U--)if(L[U]!=M[U-1]){for(L=L[U].getElementsByTagName("a");0<L.length;){for(M=
-L[0].parentNode;null!=L[0].firstChild;)M.insertBefore(L[0].firstChild,L[0]);M.removeChild(L[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(z))};Graph.prototype.isCellResizable=function(z){var L=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(L||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,L){null==
-L&&(L=this.getSelectionCells());if(null!=L&&1<L.length){for(var M=[],U=null,X=null,fa=0;fa<L.length;fa++)if(this.getModel().isVertex(L[fa])){var na=this.view.getState(L[fa]);if(null!=na){var ua=z?na.getCenterX():na.getCenterY();U=null!=U?Math.max(U,ua):ua;X=null!=X?Math.min(X,ua):ua;M.push(na)}}if(2<M.length){M.sort(function(Ma,La){return z?Ma.x-La.x:Ma.y-La.y});na=this.view.translate;ua=this.view.scale;X=X/ua-(z?na.x:na.y);U=U/ua-(z?na.x:na.y);this.getModel().beginUpdate();try{var pa=(U-X)/(M.length-
-1);U=X;for(fa=1;fa<M.length-1;fa++){var za=this.view.getState(this.model.getParent(M[fa].cell)),Da=this.getCellGeometry(M[fa].cell);U+=pa;null!=Da&&null!=za&&(Da=Da.clone(),z?Da.x=Math.round(U-Da.width/2)-za.origin.x:Da.y=Math.round(U-Da.height/2)-za.origin.y,this.getModel().setGeometry(M[fa].cell,Da))}}finally{this.getModel().endUpdate()}}}return L};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=
-function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(L,M){return this.getLinkForCell(L.cell)});return z};Graph.prototype.parseBackgroundImage=function(z){var L=null;null!=z&&0<z.length&&(z=JSON.parse(z),L=new mxImage(z.src,z.width,z.height));return L};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,L,M,U,X,fa,na,ua,pa,za,Da,Ma,La,Ua){var Ra=null;if(null!=Ua)for(Ra=new mxDictionary,Da=0;Da<Ua.length;Da++)Ra.put(Ua[Da],
-!0);if(Ua=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{L=null!=L?L:1;M=null!=M?M:0;X=null!=X?X:!0;fa=null!=fa?fa:!0;na=null!=na?na:!0;za=null!=za?za:!1;var Fa="page"==La?this.view.getBackgroundPageBounds():fa&&null==Ra||U||"diagram"==La?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),va=this.view.scale;"diagram"==La&&null!=this.backgroundImage&&(Fa=mxRectangle.fromRectangle(Fa),Fa.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*
-va,(this.view.translate.y+this.backgroundImage.y)*va,this.backgroundImage.width*va,this.backgroundImage.height*va)));if(null==Fa)throw Error(mxResources.get("drawingEmpty"));U=L/va;La=X?-.5:0;var ya=Graph.createSvgNode(La,La,Math.max(1,Math.ceil(Fa.width*U)+2*M)+(za&&0==M?5:0),Math.max(1,Math.ceil(Fa.height*U)+2*M)+(za&&0==M?5:0),z),Na=ya.ownerDocument,Ja=null!=Na.createElementNS?Na.createElementNS(mxConstants.NS_SVG,"g"):Na.createElement("g");ya.appendChild(Ja);var Pa=this.createSvgCanvas(Ja);Pa.foOffset=
-X?-.5:0;Pa.textOffset=X?-.5:0;Pa.imageOffset=X?-.5:0;Pa.translate(Math.floor(M/L-Fa.x/va),Math.floor(M/L-Fa.y/va));var Ya=document.createElement("div"),cb=Pa.getAlternateText;Pa.getAlternateText=function(db,kb,ib,nb,vb,mb,Bb,yb,lb,ob,gb,rb,tb){if(null!=mb&&0<this.state.fontSize)try{mxUtils.isNode(mb)?mb=mb.innerText:(Ya.innerHTML=mb,mb=mxUtils.extractTextWithWhitespace(Ya.childNodes));for(var zb=Math.ceil(2*nb/this.state.fontSize),wb=[],Ab=0,pb=0;(0==zb||Ab<zb)&&pb<mb.length;){var xb=mb.charCodeAt(pb);
-if(10==xb||13==xb){if(0<Ab)break}else wb.push(mb.charAt(pb)),255>xb&&Ab++;pb++}wb.length<mb.length&&1<mb.length-wb.length&&(mb=mxUtils.trim(wb.join(""))+"...");return mb}catch(c){return cb.apply(this,arguments)}else return cb.apply(this,arguments)};var fb=this.backgroundImage;if(null!=fb){z=va/L;var qb=this.view.translate;La=new mxRectangle((fb.x+qb.x)*z,(fb.y+qb.y)*z,fb.width*z,fb.height*z);mxUtils.intersects(Fa,La)&&Pa.image(fb.x+qb.x,fb.y+qb.y,fb.width,fb.height,fb.src,!0)}Pa.scale(U);Pa.textEnabled=
-na;ua=null!=ua?ua:this.createSvgImageExport();var ub=ua.drawCellState,ab=ua.getLinkForCellState;ua.getLinkForCellState=function(db,kb){var ib=ab.apply(this,arguments);return null==ib||db.view.graph.isCustomLink(ib)?null:ib};ua.getLinkTargetForCellState=function(db,kb){return db.view.graph.getLinkTargetForCell(db.cell)};ua.drawCellState=function(db,kb){for(var ib=db.view.graph,nb=null!=Ra?Ra.get(db.cell):ib.isCellSelected(db.cell),vb=ib.model.getParent(db.cell);!(fa&&null==Ra||nb)&&null!=vb;)nb=null!=
-Ra?Ra.get(vb):ib.isCellSelected(vb),vb=ib.model.getParent(vb);(fa&&null==Ra||nb)&&ub.apply(this,arguments)};ua.drawState(this.getView().getState(this.model.root),Pa);this.updateSvgLinks(ya,pa,!0);this.addForeignObjectWarning(Pa,ya);return ya}finally{Ua&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(z,L){if("0"!=urlParams["svg-warning"]&&0<L.getElementsByTagName("foreignObject").length){var M=z.createElement("switch"),U=z.createElement("g");
-U.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var X=z.createElement("a");X.setAttribute("transform","translate(0,-5)");null==X.setAttributeNS||L.ownerDocument!=document&&null==document.documentMode?(X.setAttribute("xlink:href",Graph.foreignObjectWarningLink),X.setAttribute("target","_blank")):(X.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),X.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));z=z.createElement("text");
-z.setAttribute("text-anchor","middle");z.setAttribute("font-size","10px");z.setAttribute("x","50%");z.setAttribute("y","100%");mxUtils.write(z,Graph.foreignObjectWarningText);M.appendChild(U);X.appendChild(z);M.appendChild(X);L.appendChild(M)}};Graph.prototype.updateSvgLinks=function(z,L,M){z=z.getElementsByTagName("a");for(var U=0;U<z.length;U++)if(null==z[U].getAttribute("target")){var X=z[U].getAttribute("href");null==X&&(X=z[U].getAttribute("xlink:href"));null!=X&&(null!=L&&/^https?:\/\//.test(X)?
-z[U].setAttribute("target",L):M&&this.isCustomLink(X)&&z[U].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(z){z=new mxSvgCanvas2D(z);z.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;z.pointerEvents=!0;return z};Graph.prototype.getSelectedElement=function(){var z=null;if(window.getSelection){var L=window.getSelection();L.getRangeAt&&L.rangeCount&&(z=L.getRangeAt(0).commonAncestorContainer)}else document.selection&&(z=document.selection.createRange().parentElement());
-return z};Graph.prototype.getSelectedEditingElement=function(){for(var z=this.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=z.parentNode;null!=z&&z==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(z=this.cellEditor.textarea.firstChild);return z};Graph.prototype.getParentByName=function(z,L,M){for(;null!=z&&z.nodeName!=L;){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.getParentByNames=
-function(z,L,M){for(;null!=z&&!(0<=mxUtils.indexOf(L,z.nodeName));){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.selectNode=function(z){var L=null;if(window.getSelection){if(L=window.getSelection(),L.getRangeAt&&L.rangeCount){var M=document.createRange();M.selectNode(z);L.removeAllRanges();L.addRange(M)}}else(L=document.selection)&&"Control"!=L.type&&(z=L.createRange(),z.collapse(!0),M=L.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,
-L,M){var U=this.getCellGeometry(z);if(null!=U){U=U.clone();if(null!=U.points)for(var X=0;X<U.points.length;X++)L?U.points[X].x=M+(M-U.points[X].x):U.points[X].y=M+(M-U.points[X].y);X=function(fa){null!=fa&&(L?fa.x=M+(M-fa.x):fa.y=M+(M-fa.y))};X(U.getTerminalPoint(!0));X(U.getTerminalPoint(!1));this.model.setGeometry(z,U)}};Graph.prototype.flipChildren=function(z,L,M){this.model.beginUpdate();try{for(var U=this.model.getChildCount(z),X=0;X<U;X++){var fa=this.model.getChildAt(z,X);if(this.model.isEdge(fa))this.flipEdgePoints(fa,
-L,M);else{var na=this.getCellGeometry(fa);null!=na&&(na=na.clone(),L?na.x=M+(M-na.x-na.width):na.y=M+(M-na.y-na.height),this.model.setGeometry(fa,na))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(z,L){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],U=0;U<z.length;U++)if(this.model.isEdge(z[U])){var X=this.view.getState(z[U]);null!=X&&this.flipEdgePoints(z[U],L,(L?X.getCenterX():X.getCenterY())/this.view.scale-(L?X.origin.x:X.origin.y)-(L?this.view.translate.x:
-this.view.translate.y))}else{var fa=this.getCellGeometry(z[U]);null!=fa&&this.flipChildren(z[U],L,L?fa.getCenterX()-fa.x:fa.getCenterY()-fa.y);M.push(z[U])}this.toggleCellStyles(L?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,L){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var U=0;U<z.length;U++){var X=this.model.getParent(z[U]);if(this.isTable(X)){var fa=this.getCellGeometry(z[U]),na=this.getCellGeometry(X);
-null!=fa&&null!=na&&(na=na.clone(),na.height-=fa.height,this.model.setGeometry(X,na))}}var ua=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,L)}finally{this.model.endUpdate()}if(null!=ua)for(M=[],U=0;U<ua.length;U++)this.model.contains(ua[U])&&(this.model.isVertex(ua[U])||this.model.isEdge(ua[U]))&&M.push(ua[U])}return M};Graph.prototype.insertTableColumn=function(z,L){var M=this.getModel();M.beginUpdate();try{var U=z,X=0;if(this.isTableCell(z)){var fa=M.getParent(z);
-U=M.getParent(fa);X=mxUtils.indexOf(M.getChildCells(fa,!0),z)}else this.isTableRow(z)?U=M.getParent(z):z=M.getChildCells(U,!0)[0],L||(X=M.getChildCells(z,!0).length-1);var na=M.getChildCells(U,!0),ua=Graph.minTableColumnWidth;for(z=0;z<na.length;z++){var pa=M.getChildCells(na[z],!0)[X],za=M.cloneCell(pa,!1),Da=this.getCellGeometry(za);za.value=null;za.style=mxUtils.setStyle(mxUtils.setStyle(za.style,"rowspan",null),"colspan",null);if(null!=Da){null!=Da.alternateBounds&&(Da.width=Da.alternateBounds.width,
-Da.height=Da.alternateBounds.height,Da.alternateBounds=null);ua=Da.width;var Ma=this.getCellGeometry(na[z]);null!=Ma&&(Da.height=Ma.height)}M.add(na[z],za,X+(L?0:1))}var La=this.getCellGeometry(U);null!=La&&(La=La.clone(),La.width+=ua,M.setGeometry(U,La))}finally{M.endUpdate()}};Graph.prototype.deleteLane=function(z){var L=this.getModel();L.beginUpdate();try{var M=null;M="stackLayout"==this.getCurrentCellStyle(z).childLayout?z:L.getParent(z);var U=L.getChildCells(M,!0);0==U.length?L.remove(M):(M==
-z&&(z=U[U.length-1]),L.remove(z))}finally{L.endUpdate()}};Graph.prototype.insertLane=function(z,L){var M=this.getModel();M.beginUpdate();try{var U=null;if("stackLayout"==this.getCurrentCellStyle(z).childLayout){U=z;var X=M.getChildCells(U,!0);z=X[L?0:X.length-1]}else U=M.getParent(z);var fa=U.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(U,z,fa+(L?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,L){var M=this.getModel();M.beginUpdate();try{var U=z,X=z;if(this.isTableCell(z))X=
-M.getParent(z),U=M.getParent(X);else if(this.isTableRow(z))U=M.getParent(z);else{var fa=M.getChildCells(U,!0);X=fa[L?0:fa.length-1]}var na=M.getChildCells(X,!0),ua=U.getIndex(X);X=M.cloneCell(X,!1);X.value=null;var pa=this.getCellGeometry(X);if(null!=pa){for(fa=0;fa<na.length;fa++){z=M.cloneCell(na[fa],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var za=this.getCellGeometry(z);null!=za&&(null!=za.alternateBounds&&(za.width=za.alternateBounds.width,
-za.height=za.alternateBounds.height,za.alternateBounds=null),za.height=pa.height);X.insert(z)}M.add(U,X,ua+(L?0:1));var Da=this.getCellGeometry(U);null!=Da&&(Da=Da.clone(),Da.height+=pa.height,M.setGeometry(U,Da))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&(U=L.getParent(z));this.isTableRow(U)&&(M=L.getParent(U));var X=L.getChildCells(M,!0);if(0==X.length)L.remove(M);else{this.isTableRow(U)||(U=
-X[0]);var fa=L.getChildCells(U,!0);if(1>=fa.length)L.remove(M);else{var na=fa.length-1;this.isTableCell(z)&&(na=mxUtils.indexOf(fa,z));for(U=z=0;U<X.length;U++){var ua=L.getChildCells(X[U],!0)[na];L.remove(ua);var pa=this.getCellGeometry(ua);null!=pa&&(z=Math.max(z,pa.width))}var za=this.getCellGeometry(M);null!=za&&(za=za.clone(),za.width-=z,L.setGeometry(M,za))}}}finally{L.endUpdate()}};Graph.prototype.deleteTableRow=function(z){var L=this.getModel();L.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&
-(z=U=L.getParent(z));this.isTableRow(z)&&(M=L.getParent(U));var X=L.getChildCells(M,!0);if(1>=X.length)L.remove(M);else{this.isTableRow(U)||(U=X[X.length-1]);L.remove(U);z=0;var fa=this.getCellGeometry(U);null!=fa&&(z=fa.height);var na=this.getCellGeometry(M);null!=na&&(na=na.clone(),na.height-=z,L.setGeometry(M,na))}}finally{L.endUpdate()}};Graph.prototype.insertRow=function(z,L){for(var M=z.tBodies[0],U=M.rows[0].cells,X=z=0;X<U.length;X++){var fa=U[X].getAttribute("colspan");z+=null!=fa?parseInt(fa):
-1}L=M.insertRow(L);for(X=0;X<z;X++)mxUtils.br(L.insertCell(-1));return L.cells[0]};Graph.prototype.deleteRow=function(z,L){z.tBodies[0].deleteRow(L)};Graph.prototype.insertColumn=function(z,L){var M=z.tHead;if(null!=M)for(var U=0;U<M.rows.length;U++){var X=document.createElement("th");M.rows[U].appendChild(X);mxUtils.br(X)}z=z.tBodies[0];for(M=0;M<z.rows.length;M++)U=z.rows[M].insertCell(L),mxUtils.br(U);return z.rows[0].cells[0<=L?L:z.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(z,
-L){if(0<=L){z=z.tBodies[0].rows;for(var M=0;M<z.length;M++)z[M].cells.length>L&&z[M].deleteCell(L)}};Graph.prototype.pasteHtmlAtCaret=function(z){if(window.getSelection){var L=window.getSelection();if(L.getRangeAt&&L.rangeCount){L=L.getRangeAt(0);L.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var U;U=M.firstChild;)lastNode=z.appendChild(U);L.insertNode(z)}}else(L=document.selection)&&"Control"!=L.type&&L.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=
-function(z,L){function M(X,fa){X.length>fa&&(X=X.substring(0,Math.round(fa/2))+"..."+X.substring(X.length-Math.round(fa/4)));return X}z=null!=z?z:"javascript:void(0);";if(null==L||0==L.length)L=this.isCustomLink(z)?this.getLinkTitle(z):z;var U=document.createElement("a");U.setAttribute("rel",this.linkRelation);U.setAttribute("href",this.getAbsoluteUrl(z));U.setAttribute("title",M(this.isCustomLink(z)?this.getLinkTitle(z):z,80));null!=this.linkTarget&&U.setAttribute("target",this.linkTarget);mxUtils.write(U,
-M(L,40));this.isCustomLink(z)&&mxEvent.addListener(U,"click",mxUtils.bind(this,function(X){this.customLinkClicked(z);mxEvent.consume(X)}));return U};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(fa,na){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(fa){fa=z.apply(this,arguments);if(mxEvent.isTouchEvent(fa.getEvent())&&
-null==fa.getState()){var na=this.getCellAt(fa.graphX,fa.graphY);null!=na&&this.isSwimlane(na)&&this.hitsSwimlaneContent(na,fa.graphX,fa.graphY)||(fa.state=this.view.getState(na),null!=fa.state&&null!=fa.state.shape&&(this.container.style.cursor=fa.state.shape.node.style.cursor))}null==fa.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return fa};var L=!1,M=!1,U=!1,X=this.fireMouseEvent;this.fireMouseEvent=function(fa,na,ua){fa==mxEvent.MOUSE_DOWN&&(na=this.updateMouseEvent(na),
-L=this.isCellSelected(na.getCell()),M=this.isSelectionEmpty(),U=this.popupMenuHandler.isMenuShowing());X.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(fa,na){var ua=mxEvent.isMouseEvent(na.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==na.getState()||!na.isSource(na.getState().control))&&(this.popupMenuHandler.popupTrigger||!U&&!ua&&(M&&null==na.getCell()&&this.isSelectionEmpty()||L&&this.isCellSelected(na.getCell())));
-ua=!L||ua?null:mxUtils.bind(this,function(pa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var za=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(na.getX()+za.x+1,na.getY()+za.y+1,pa,na.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[fa,na,ua])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=
-this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():document.getSelection?z=document.getSelection():document.selection&&(z=document.selection.createRange().text);return""!=z};mxCellEditor.prototype.insertTab=function(z){var L=this.textarea.ownerDocument.defaultView.getSelection(),M=L.getRangeAt(0),U="\t";if(null!=z)for(U="";0<z;)U+=" ",z--;z=document.createElement("span");
-z.style.whiteSpace="pre";z.appendChild(document.createTextNode(U));M.insertNode(z);M.setStartAfter(z);M.setEndAfter(z);L.removeAllRanges();L.addRange(M)};mxCellEditor.prototype.alignText=function(z,L){var M=null!=L&&mxEvent.isShiftDown(L);if(M||null!=window.getSelection&&null!=window.getSelection().containsNode){var U=!0;this.graph.processElements(this.textarea,function(X){M||window.getSelection().containsNode(X,!0)?(X.removeAttribute("align"),X.style.textAlign=null):U=!1});U&&this.graph.cellEditor.setAlign(z)}document.execCommand("justify"+
-z.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var z=window.getSelection();if(z.getRangeAt&&z.rangeCount){for(var L=[],M=0,U=z.rangeCount;M<U;++M)L.push(z.getRangeAt(M));return L}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(z){try{if(z)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var L=0,M=z.length;L<
-M;++L)sel.addRange(z[L])}else document.selection&&z.select&&z.select()}catch(U){}};var C=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(z){null!=z.text&&(z.text.replaceLinefeeds="0"!=mxUtils.getValue(z.style,"nl2Br","1"));C.apply(this,arguments)};var I=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(z,L){this.isKeepFocusEvent(z)||!mxEvent.isAltDown(z.getEvent())?I.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=
-function(z){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var G=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(z,L){z=this.graph.getStartEditingCell(z,L);G.apply(this,arguments);var M=this.graph.view.getState(z);this.textarea.className=null!=M&&1==M.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(z);
-M=this.graph.getModel().getParent(z);var U=this.graph.getCellGeometry(z);if(this.graph.getModel().isEdge(M)&&null!=U&&U.relative||this.graph.getModel().isEdge(z))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var aa=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function L(X,fa){fa.originalNode=X;X=X.firstChild;for(var na=fa.firstChild;null!=X&&null!=na;)L(X,na),X=X.nextSibling,na=na.nextSibling;
-return fa}function M(X,fa){if(null!=X)if(fa.originalNode!=X)U(X);else for(X=X.firstChild,fa=fa.firstChild;null!=X;){var na=X.nextSibling;null==fa?U(X):(M(X,fa),fa=fa.nextSibling);X=na}}function U(X){for(var fa=X.firstChild;null!=fa;){var na=fa.nextSibling;U(fa);fa=na}1==X.nodeType&&("BR"===X.nodeName||null!=X.firstChild)||3==X.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(X)).length?(3==X.nodeType&&mxUtils.setTextContent(X,mxUtils.getTextContent(X).replace(/\n|\r/g,"")),1==X.nodeType&&(X.removeAttribute("style"),
-X.removeAttribute("class"),X.removeAttribute("width"),X.removeAttribute("cellpadding"),X.removeAttribute("cellspacing"),X.removeAttribute("border"))):X.parentNode.removeChild(X)}aa.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(X){var fa=L(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
-0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,fa):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var z=this.graph.view.getState(this.editingCell);if(null!=z){var L=null!=z&&"0"!=mxUtils.getValue(z.style,"nl2Br","1"),M=this.saveSelection();if(this.codeViewMode){ua=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ua.length&&"\n"==ua.charAt(ua.length-1)&&(ua=ua.substring(0,ua.length-1));ua=this.graph.sanitizeHtml(L?
-ua.replace(/\n/g,"<br/>"):ua,!0);this.textarea.className="mxCellEditor geContentEditable";pa=mxUtils.getValue(z.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);L=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var U=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),X=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,fa=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,
+this.scrollTop=na.container.scrollTop;null==this.currentLink&&"auto"==na.container.style.overflow&&(na.container.style.cursor="move");this.updateCurrentState(za)},mouseMove:function(pa,za){if(na.isMouseDown)null!=this.currentLink&&(pa=Math.abs(this.startX-za.getGraphX()),za=Math.abs(this.startY-za.getGraphY()),(pa>ha||za>ha)&&this.clear());else{for(pa=za.getSource();null!=pa&&"a"!=pa.nodeName.toLowerCase();)pa=pa.parentNode;null!=pa?this.clear():(null!=na.tooltipHandler&&null!=this.currentLink&&null!=
+this.currentState&&na.tooltipHandler.reset(za,!0,this.currentState),(null==this.currentState||za.getState()!=this.currentState&&null!=za.sourceState||!na.intersects(this.currentState,za.getGraphX(),za.getGraphY()))&&this.updateCurrentState(za))}},mouseUp:function(pa,za){var Da=za.getSource();for(pa=za.getEvent();null!=Da&&"a"!=Da.nodeName.toLowerCase();)Da=Da.parentNode;null==Da&&Math.abs(this.scrollLeft-na.container.scrollLeft)<ha&&Math.abs(this.scrollTop-na.container.scrollTop)<ha&&(null==za.sourceState||
+!za.isSource(za.sourceState.control))&&((mxEvent.isLeftMouseButton(pa)||mxEvent.isMiddleMouseButton(pa))&&!mxEvent.isPopupTrigger(pa)||mxEvent.isTouchEvent(pa))&&(null!=this.currentLink?(Da=na.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&Da||null==K||K(pa,this.currentLink),mxEvent.isConsumed(pa)||(pa=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(pa)?"_blank":Da?na.linkTarget:"_top",na.openLink(this.currentLink,pa),za.consume())):null!=M&&!za.isConsumed()&&
+Math.abs(this.scrollLeft-na.container.scrollLeft)<ha&&Math.abs(this.scrollTop-na.container.scrollTop)<ha&&Math.abs(this.startX-za.getGraphX())<ha&&Math.abs(this.startY-za.getGraphY())<ha&&M(za.getEvent()));this.clear()},activate:function(pa){this.currentLink=na.getAbsoluteUrl(na.getLinkForCell(pa.cell));null!=this.currentLink&&(this.currentTarget=na.getLinkTargetForCell(pa.cell),na.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(pa))},clear:function(){null!=na.container&&
+(na.container.style.cursor=W);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=na.tooltipHandler&&na.tooltipHandler.hide()}};na.click=function(pa){};na.addMouseListener(ua);mxEvent.addListener(document,"mouseleave",function(pa){ua.clear()})};Graph.prototype.duplicateCells=function(z,K){z=null!=z?z:this.getSelectionCells();K=null!=K?K:!0;for(var M=0;M<z.length;M++)this.isTableCell(z[M])&&(z[M]=this.model.getParent(z[M]));z=this.model.getTopmostCells(z);
+var U=this.getModel(),W=this.gridSize,ha=[];U.beginUpdate();try{var na={},ua=this.createCellLookup(z),pa=this.cloneCells(z,!1,na,!0);for(M=0;M<z.length;M++){var za=U.getParent(z[M]);if(null!=za){var Da=this.moveCells([pa[M]],W,W,!1)[0];ha.push(Da);if(K)U.add(za,pa[M]);else{var Ma=za.getIndex(z[M]);U.add(za,pa[M],Ma+1)}if(this.isTable(za)){var La=this.getCellGeometry(pa[M]),Ua=this.getCellGeometry(za);null!=La&&null!=Ua&&(Ua=Ua.clone(),Ua.height+=La.height,U.setGeometry(za,Ua))}}else ha.push(pa[M])}this.updateCustomLinks(this.createCellMapping(na,
+ua),pa,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",pa))}finally{U.endUpdate()}return ha};Graph.prototype.insertImage=function(z,K,M){if(null!=z&&null!=this.cellEditor.textarea){for(var U=this.cellEditor.textarea.getElementsByTagName("img"),W=[],ha=0;ha<U.length;ha++)W.push(U[ha]);document.execCommand("insertimage",!1,z);z=this.cellEditor.textarea.getElementsByTagName("img");if(z.length==W.length+1)for(ha=z.length-1;0<=ha;ha--)if(0==ha||z[ha]!=W[ha-1]){z[ha].setAttribute("width",
+K);z[ha].setAttribute("height",M);break}}};Graph.prototype.insertLink=function(z){if(null!=this.cellEditor.textarea)if(0==z.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var K=this.cellEditor.textarea.getElementsByTagName("a"),M=[],U=0;U<K.length;U++)M.push(K[U]);document.execCommand("createlink",!1,mxUtils.trim(z));K=this.cellEditor.textarea.getElementsByTagName("a");if(K.length==M.length+1)for(U=K.length-1;0<=U;U--)if(K[U]!=M[U-1]){for(K=K[U].getElementsByTagName("a");0<K.length;){for(M=
+K[0].parentNode;null!=K[0].firstChild;)M.insertBefore(K[0].firstChild,K[0]);M.removeChild(K[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(z))};Graph.prototype.isCellResizable=function(z){var K=mxGraph.prototype.isCellResizable.apply(this,arguments),M=this.getCurrentCellStyle(z);return!this.isTableCell(z)&&!this.isTableRow(z)&&(K||"0"!=mxUtils.getValue(M,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==M[mxConstants.STYLE_WHITE_SPACE])};Graph.prototype.distributeCells=function(z,K){null==
+K&&(K=this.getSelectionCells());if(null!=K&&1<K.length){for(var M=[],U=null,W=null,ha=0;ha<K.length;ha++)if(this.getModel().isVertex(K[ha])){var na=this.view.getState(K[ha]);if(null!=na){var ua=z?na.getCenterX():na.getCenterY();U=null!=U?Math.max(U,ua):ua;W=null!=W?Math.min(W,ua):ua;M.push(na)}}if(2<M.length){M.sort(function(Ma,La){return z?Ma.x-La.x:Ma.y-La.y});na=this.view.translate;ua=this.view.scale;W=W/ua-(z?na.x:na.y);U=U/ua-(z?na.x:na.y);this.getModel().beginUpdate();try{var pa=(U-W)/(M.length-
+1);U=W;for(ha=1;ha<M.length-1;ha++){var za=this.view.getState(this.model.getParent(M[ha].cell)),Da=this.getCellGeometry(M[ha].cell);U+=pa;null!=Da&&null!=za&&(Da=Da.clone(),z?Da.x=Math.round(U-Da.width/2)-za.origin.x:Da.y=Math.round(U-Da.height/2)-za.origin.y,this.getModel().setGeometry(M[ha].cell,Da))}}finally{this.getModel().endUpdate()}}}return K};Graph.prototype.isCloneEvent=function(z){return mxClient.IS_MAC&&mxEvent.isMetaDown(z)||mxEvent.isControlDown(z)};Graph.prototype.createSvgImageExport=
+function(){var z=new mxImageExport;z.getLinkForCellState=mxUtils.bind(this,function(K,M){return this.getLinkForCell(K.cell)});return z};Graph.prototype.parseBackgroundImage=function(z){var K=null;null!=z&&0<z.length&&(z=JSON.parse(z),K=new mxImage(z.src,z.width,z.height));return K};Graph.prototype.getBackgroundImageObject=function(z){return z};Graph.prototype.getSvg=function(z,K,M,U,W,ha,na,ua,pa,za,Da,Ma,La,Ua){var Sa=null;if(null!=Ua)for(Sa=new mxDictionary,Da=0;Da<Ua.length;Da++)Sa.put(Ua[Da],
+!0);if(Ua=this.useCssTransforms)this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange();try{K=null!=K?K:1;M=null!=M?M:0;W=null!=W?W:!0;ha=null!=ha?ha:!0;na=null!=na?na:!0;za=null!=za?za:!1;var Fa="page"==La?this.view.getBackgroundPageBounds():ha&&null==Sa||U||"diagram"==La?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),va=this.view.scale;"diagram"==La&&null!=this.backgroundImage&&(Fa=mxRectangle.fromRectangle(Fa),Fa.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*
+va,(this.view.translate.y+this.backgroundImage.y)*va,this.backgroundImage.width*va,this.backgroundImage.height*va)));if(null==Fa)throw Error(mxResources.get("drawingEmpty"));U=K/va;La=W?-.5:0;var ya=Graph.createSvgNode(La,La,Math.max(1,Math.ceil(Fa.width*U)+2*M)+(za&&0==M?5:0),Math.max(1,Math.ceil(Fa.height*U)+2*M)+(za&&0==M?5:0),z),Na=ya.ownerDocument,Ja=null!=Na.createElementNS?Na.createElementNS(mxConstants.NS_SVG,"g"):Na.createElement("g");ya.appendChild(Ja);var Qa=this.createSvgCanvas(Ja);Qa.foOffset=
+W?-.5:0;Qa.textOffset=W?-.5:0;Qa.imageOffset=W?-.5:0;Qa.translate(Math.floor(M/K-Fa.x/va),Math.floor(M/K-Fa.y/va));var Za=document.createElement("div"),cb=Qa.getAlternateText;Qa.getAlternateText=function(db,kb,ib,ob,vb,nb,Bb,yb,mb,pb,gb,rb,tb){if(null!=nb&&0<this.state.fontSize)try{mxUtils.isNode(nb)?nb=nb.innerText:(Za.innerHTML=nb,nb=mxUtils.extractTextWithWhitespace(Za.childNodes));for(var zb=Math.ceil(2*ob/this.state.fontSize),wb=[],Ab=0,lb=0;(0==zb||Ab<zb)&&lb<nb.length;){var xb=nb.charCodeAt(lb);
+if(10==xb||13==xb){if(0<Ab)break}else wb.push(nb.charAt(lb)),255>xb&&Ab++;lb++}wb.length<nb.length&&1<nb.length-wb.length&&(nb=mxUtils.trim(wb.join(""))+"...");return nb}catch(c){return cb.apply(this,arguments)}else return cb.apply(this,arguments)};var fb=this.backgroundImage;if(null!=fb){z=va/K;var qb=this.view.translate;La=new mxRectangle((fb.x+qb.x)*z,(fb.y+qb.y)*z,fb.width*z,fb.height*z);mxUtils.intersects(Fa,La)&&Qa.image(fb.x+qb.x,fb.y+qb.y,fb.width,fb.height,fb.src,!0)}Qa.scale(U);Qa.textEnabled=
+na;ua=null!=ua?ua:this.createSvgImageExport();var ub=ua.drawCellState,ab=ua.getLinkForCellState;ua.getLinkForCellState=function(db,kb){var ib=ab.apply(this,arguments);return null==ib||db.view.graph.isCustomLink(ib)?null:ib};ua.getLinkTargetForCellState=function(db,kb){return db.view.graph.getLinkTargetForCell(db.cell)};ua.drawCellState=function(db,kb){for(var ib=db.view.graph,ob=null!=Sa?Sa.get(db.cell):ib.isCellSelected(db.cell),vb=ib.model.getParent(db.cell);!(ha&&null==Sa||ob)&&null!=vb;)ob=null!=
+Sa?Sa.get(vb):ib.isCellSelected(vb),vb=ib.model.getParent(vb);(ha&&null==Sa||ob)&&ub.apply(this,arguments)};ua.drawState(this.getView().getState(this.model.root),Qa);this.updateSvgLinks(ya,pa,!0);this.addForeignObjectWarning(Qa,ya);return ya}finally{Ua&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(z,K){if("0"!=urlParams["svg-warning"]&&0<K.getElementsByTagName("foreignObject").length){var M=z.createElement("switch"),U=z.createElement("g");
+U.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var W=z.createElement("a");W.setAttribute("transform","translate(0,-5)");null==W.setAttributeNS||K.ownerDocument!=document&&null==document.documentMode?(W.setAttribute("xlink:href",Graph.foreignObjectWarningLink),W.setAttribute("target","_blank")):(W.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),W.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));z=z.createElement("text");
+z.setAttribute("text-anchor","middle");z.setAttribute("font-size","10px");z.setAttribute("x","50%");z.setAttribute("y","100%");mxUtils.write(z,Graph.foreignObjectWarningText);M.appendChild(U);W.appendChild(z);M.appendChild(W);K.appendChild(M)}};Graph.prototype.updateSvgLinks=function(z,K,M){z=z.getElementsByTagName("a");for(var U=0;U<z.length;U++)if(null==z[U].getAttribute("target")){var W=z[U].getAttribute("href");null==W&&(W=z[U].getAttribute("xlink:href"));null!=W&&(null!=K&&/^https?:\/\//.test(W)?
+z[U].setAttribute("target",K):M&&this.isCustomLink(W)&&z[U].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(z){z=new mxSvgCanvas2D(z);z.minStrokeWidth=this.cellRenderer.minSvgStrokeWidth;z.pointerEvents=!0;return z};Graph.prototype.getSelectedElement=function(){var z=null;if(window.getSelection){var K=window.getSelection();K.getRangeAt&&K.rangeCount&&(z=K.getRangeAt(0).commonAncestorContainer)}else document.selection&&(z=document.selection.createRange().parentElement());
+return z};Graph.prototype.getSelectedEditingElement=function(){for(var z=this.getSelectedElement();null!=z&&z.nodeType!=mxConstants.NODETYPE_ELEMENT;)z=z.parentNode;null!=z&&z==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(z=this.cellEditor.textarea.firstChild);return z};Graph.prototype.getParentByName=function(z,K,M){for(;null!=z&&z.nodeName!=K;){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.getParentByNames=
+function(z,K,M){for(;null!=z&&!(0<=mxUtils.indexOf(K,z.nodeName));){if(z==M)return null;z=z.parentNode}return z};Graph.prototype.selectNode=function(z){var K=null;if(window.getSelection){if(K=window.getSelection(),K.getRangeAt&&K.rangeCount){var M=document.createRange();M.selectNode(z);K.removeAllRanges();K.addRange(M)}}else(K=document.selection)&&"Control"!=K.type&&(z=K.createRange(),z.collapse(!0),M=K.createRange(),M.setEndPoint("StartToStart",z),M.select())};Graph.prototype.flipEdgePoints=function(z,
+K,M){var U=this.getCellGeometry(z);if(null!=U){U=U.clone();if(null!=U.points)for(var W=0;W<U.points.length;W++)K?U.points[W].x=M+(M-U.points[W].x):U.points[W].y=M+(M-U.points[W].y);W=function(ha){null!=ha&&(K?ha.x=M+(M-ha.x):ha.y=M+(M-ha.y))};W(U.getTerminalPoint(!0));W(U.getTerminalPoint(!1));this.model.setGeometry(z,U)}};Graph.prototype.flipChildren=function(z,K,M){this.model.beginUpdate();try{for(var U=this.model.getChildCount(z),W=0;W<U;W++){var ha=this.model.getChildAt(z,W);if(this.model.isEdge(ha))this.flipEdgePoints(ha,
+K,M);else{var na=this.getCellGeometry(ha);null!=na&&(na=na.clone(),K?na.x=M+(M-na.x-na.width):na.y=M+(M-na.y-na.height),this.model.setGeometry(ha,na))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=function(z,K){this.model.beginUpdate();try{z=this.model.getTopmostCells(z);for(var M=[],U=0;U<z.length;U++)if(this.model.isEdge(z[U])){var W=this.view.getState(z[U]);null!=W&&this.flipEdgePoints(z[U],K,(K?W.getCenterX():W.getCenterY())/this.view.scale-(K?W.origin.x:W.origin.y)-(K?this.view.translate.x:
+this.view.translate.y))}else{var ha=this.getCellGeometry(z[U]);null!=ha&&this.flipChildren(z[U],K,K?ha.getCenterX()-ha.x:ha.getCenterY()-ha.y);M.push(z[U])}this.toggleCellStyles(K?mxConstants.STYLE_FLIPH:mxConstants.STYLE_FLIPV,!1,M)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(z,K){var M=null;if(null!=z&&0<z.length){this.model.beginUpdate();try{for(var U=0;U<z.length;U++){var W=this.model.getParent(z[U]);if(this.isTable(W)){var ha=this.getCellGeometry(z[U]),na=this.getCellGeometry(W);
+null!=ha&&null!=na&&(na=na.clone(),na.height-=ha.height,this.model.setGeometry(W,na))}}var ua=this.selectParentAfterDelete?this.model.getParents(z):null;this.removeCells(z,K)}finally{this.model.endUpdate()}if(null!=ua)for(M=[],U=0;U<ua.length;U++)this.model.contains(ua[U])&&(this.model.isVertex(ua[U])||this.model.isEdge(ua[U]))&&M.push(ua[U])}return M};Graph.prototype.insertTableColumn=function(z,K){var M=this.getModel();M.beginUpdate();try{var U=z,W=0;if(this.isTableCell(z)){var ha=M.getParent(z);
+U=M.getParent(ha);W=mxUtils.indexOf(M.getChildCells(ha,!0),z)}else this.isTableRow(z)?U=M.getParent(z):z=M.getChildCells(U,!0)[0],K||(W=M.getChildCells(z,!0).length-1);var na=M.getChildCells(U,!0),ua=Graph.minTableColumnWidth;for(z=0;z<na.length;z++){var pa=M.getChildCells(na[z],!0)[W],za=M.cloneCell(pa,!1),Da=this.getCellGeometry(za);za.value=null;za.style=mxUtils.setStyle(mxUtils.setStyle(za.style,"rowspan",null),"colspan",null);if(null!=Da){null!=Da.alternateBounds&&(Da.width=Da.alternateBounds.width,
+Da.height=Da.alternateBounds.height,Da.alternateBounds=null);ua=Da.width;var Ma=this.getCellGeometry(na[z]);null!=Ma&&(Da.height=Ma.height)}M.add(na[z],za,W+(K?0:1))}var La=this.getCellGeometry(U);null!=La&&(La=La.clone(),La.width+=ua,M.setGeometry(U,La))}finally{M.endUpdate()}};Graph.prototype.deleteLane=function(z){var K=this.getModel();K.beginUpdate();try{var M=null;M="stackLayout"==this.getCurrentCellStyle(z).childLayout?z:K.getParent(z);var U=K.getChildCells(M,!0);0==U.length?K.remove(M):(M==
+z&&(z=U[U.length-1]),K.remove(z))}finally{K.endUpdate()}};Graph.prototype.insertLane=function(z,K){var M=this.getModel();M.beginUpdate();try{var U=null;if("stackLayout"==this.getCurrentCellStyle(z).childLayout){U=z;var W=M.getChildCells(U,!0);z=W[K?0:W.length-1]}else U=M.getParent(z);var ha=U.getIndex(z);z=M.cloneCell(z,!1);z.value=null;M.add(U,z,ha+(K?0:1))}finally{M.endUpdate()}};Graph.prototype.insertTableRow=function(z,K){var M=this.getModel();M.beginUpdate();try{var U=z,W=z;if(this.isTableCell(z))W=
+M.getParent(z),U=M.getParent(W);else if(this.isTableRow(z))U=M.getParent(z);else{var ha=M.getChildCells(U,!0);W=ha[K?0:ha.length-1]}var na=M.getChildCells(W,!0),ua=U.getIndex(W);W=M.cloneCell(W,!1);W.value=null;var pa=this.getCellGeometry(W);if(null!=pa){for(ha=0;ha<na.length;ha++){z=M.cloneCell(na[ha],!1);z.value=null;z.style=mxUtils.setStyle(mxUtils.setStyle(z.style,"rowspan",null),"colspan",null);var za=this.getCellGeometry(z);null!=za&&(null!=za.alternateBounds&&(za.width=za.alternateBounds.width,
+za.height=za.alternateBounds.height,za.alternateBounds=null),za.height=pa.height);W.insert(z)}M.add(U,W,ua+(K?0:1));var Da=this.getCellGeometry(U);null!=Da&&(Da=Da.clone(),Da.height+=pa.height,M.setGeometry(U,Da))}}finally{M.endUpdate()}};Graph.prototype.deleteTableColumn=function(z){var K=this.getModel();K.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&(U=K.getParent(z));this.isTableRow(U)&&(M=K.getParent(U));var W=K.getChildCells(M,!0);if(0==W.length)K.remove(M);else{this.isTableRow(U)||(U=
+W[0]);var ha=K.getChildCells(U,!0);if(1>=ha.length)K.remove(M);else{var na=ha.length-1;this.isTableCell(z)&&(na=mxUtils.indexOf(ha,z));for(U=z=0;U<W.length;U++){var ua=K.getChildCells(W[U],!0)[na];K.remove(ua);var pa=this.getCellGeometry(ua);null!=pa&&(z=Math.max(z,pa.width))}var za=this.getCellGeometry(M);null!=za&&(za=za.clone(),za.width-=z,K.setGeometry(M,za))}}}finally{K.endUpdate()}};Graph.prototype.deleteTableRow=function(z){var K=this.getModel();K.beginUpdate();try{var M=z,U=z;this.isTableCell(z)&&
+(z=U=K.getParent(z));this.isTableRow(z)&&(M=K.getParent(U));var W=K.getChildCells(M,!0);if(1>=W.length)K.remove(M);else{this.isTableRow(U)||(U=W[W.length-1]);K.remove(U);z=0;var ha=this.getCellGeometry(U);null!=ha&&(z=ha.height);var na=this.getCellGeometry(M);null!=na&&(na=na.clone(),na.height-=z,K.setGeometry(M,na))}}finally{K.endUpdate()}};Graph.prototype.insertRow=function(z,K){for(var M=z.tBodies[0],U=M.rows[0].cells,W=z=0;W<U.length;W++){var ha=U[W].getAttribute("colspan");z+=null!=ha?parseInt(ha):
+1}K=M.insertRow(K);for(W=0;W<z;W++)mxUtils.br(K.insertCell(-1));return K.cells[0]};Graph.prototype.deleteRow=function(z,K){z.tBodies[0].deleteRow(K)};Graph.prototype.insertColumn=function(z,K){var M=z.tHead;if(null!=M)for(var U=0;U<M.rows.length;U++){var W=document.createElement("th");M.rows[U].appendChild(W);mxUtils.br(W)}z=z.tBodies[0];for(M=0;M<z.rows.length;M++)U=z.rows[M].insertCell(K),mxUtils.br(U);return z.rows[0].cells[0<=K?K:z.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(z,
+K){if(0<=K){z=z.tBodies[0].rows;for(var M=0;M<z.length;M++)z[M].cells.length>K&&z[M].deleteCell(K)}};Graph.prototype.pasteHtmlAtCaret=function(z){if(window.getSelection){var K=window.getSelection();if(K.getRangeAt&&K.rangeCount){K=K.getRangeAt(0);K.deleteContents();var M=document.createElement("div");M.innerHTML=z;z=document.createDocumentFragment();for(var U;U=M.firstChild;)lastNode=z.appendChild(U);K.insertNode(z)}}else(K=document.selection)&&"Control"!=K.type&&K.createRange().pasteHTML(z)};Graph.prototype.createLinkForHint=
+function(z,K){function M(W,ha){W.length>ha&&(W=W.substring(0,Math.round(ha/2))+"..."+W.substring(W.length-Math.round(ha/4)));return W}z=null!=z?z:"javascript:void(0);";if(null==K||0==K.length)K=this.isCustomLink(z)?this.getLinkTitle(z):z;var U=document.createElement("a");U.setAttribute("rel",this.linkRelation);U.setAttribute("href",this.getAbsoluteUrl(z));U.setAttribute("title",M(this.isCustomLink(z)?this.getLinkTitle(z):z,80));null!=this.linkTarget&&U.setAttribute("target",this.linkTarget);mxUtils.write(U,
+M(K,40));this.isCustomLink(z)&&mxEvent.addListener(U,"click",mxUtils.bind(this,function(W){this.customLinkClicked(z);mxEvent.consume(W)}));return U};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(ha,na){this.popupMenuHandler.hideMenu()});var z=this.updateMouseEvent;this.updateMouseEvent=function(ha){ha=z.apply(this,arguments);if(mxEvent.isTouchEvent(ha.getEvent())&&
+null==ha.getState()){var na=this.getCellAt(ha.graphX,ha.graphY);null!=na&&this.isSwimlane(na)&&this.hitsSwimlaneContent(na,ha.graphX,ha.graphY)||(ha.state=this.view.getState(na),null!=ha.state&&null!=ha.state.shape&&(this.container.style.cursor=ha.state.shape.node.style.cursor))}null==ha.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return ha};var K=!1,M=!1,U=!1,W=this.fireMouseEvent;this.fireMouseEvent=function(ha,na,ua){ha==mxEvent.MOUSE_DOWN&&(na=this.updateMouseEvent(na),
+K=this.isCellSelected(na.getCell()),M=this.isSelectionEmpty(),U=this.popupMenuHandler.isMenuShowing());W.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(ha,na){var ua=mxEvent.isMouseEvent(na.getEvent());this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==na.getState()||!na.isSource(na.getState().control))&&(this.popupMenuHandler.popupTrigger||!U&&!ua&&(M&&null==na.getCell()&&this.isSelectionEmpty()||K&&this.isCellSelected(na.getCell())));
+ua=!K||ua?null:mxUtils.bind(this,function(pa){window.setTimeout(mxUtils.bind(this,function(){if(!this.isEditing()){var za=mxUtils.getScrollOrigin();this.popupMenuHandler.popup(na.getX()+za.x+1,na.getY()+za.y+1,pa,na.getEvent())}}),500)});mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler,[ha,na,ua])})};mxCellEditor.prototype.isContentEditing=function(){var z=this.graph.view.getState(this.editingCell);return null!=z&&1==z.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=
+this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.isTextSelected=function(){var z="";window.getSelection?z=window.getSelection():document.getSelection?z=document.getSelection():document.selection&&(z=document.selection.createRange().text);return""!=z};mxCellEditor.prototype.insertTab=function(z){var K=this.textarea.ownerDocument.defaultView.getSelection(),M=K.getRangeAt(0),U="\t";if(null!=z)for(U="";0<z;)U+=" ",z--;z=document.createElement("span");
+z.style.whiteSpace="pre";z.appendChild(document.createTextNode(U));M.insertNode(z);M.setStartAfter(z);M.setEndAfter(z);K.removeAllRanges();K.addRange(M)};mxCellEditor.prototype.alignText=function(z,K){var M=null!=K&&mxEvent.isShiftDown(K);if(M||null!=window.getSelection&&null!=window.getSelection().containsNode){var U=!0;this.graph.processElements(this.textarea,function(W){M||window.getSelection().containsNode(W,!0)?(W.removeAttribute("align"),W.style.textAlign=null):U=!1});U&&this.graph.cellEditor.setAlign(z)}document.execCommand("justify"+
+z.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var z=window.getSelection();if(z.getRangeAt&&z.rangeCount){for(var K=[],M=0,U=z.rangeCount;M<U;++M)K.push(z.getRangeAt(M));return K}}else if(document.selection&&document.selection.createRange)return document.selection.createRange();return null};mxCellEditor.prototype.restoreSelection=function(z){try{if(z)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var K=0,M=z.length;K<
+M;++K)sel.addRange(z[K])}else document.selection&&z.select&&z.select()}catch(U){}};var C=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(z){null!=z.text&&(z.text.replaceLinefeeds="0"!=mxUtils.getValue(z.style,"nl2Br","1"));C.apply(this,arguments)};var I=mxConstraintHandler.prototype.update;mxConstraintHandler.prototype.update=function(z,K){this.isKeepFocusEvent(z)||!mxEvent.isAltDown(z.getEvent())?I.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=
+function(z){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var G=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(z,K){z=this.graph.getStartEditingCell(z,K);G.apply(this,arguments);var M=this.graph.view.getState(z);this.textarea.className=null!=M&&1==M.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(z);
+M=this.graph.getModel().getParent(z);var U=this.graph.getCellGeometry(z);if(this.graph.getModel().isEdge(M)&&null!=U&&U.relative||this.graph.getModel().isEdge(z))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var Z=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(z){function K(W,ha){ha.originalNode=W;W=W.firstChild;for(var na=ha.firstChild;null!=W&&null!=na;)K(W,na),W=W.nextSibling,na=na.nextSibling;
+return ha}function M(W,ha){if(null!=W)if(ha.originalNode!=W)U(W);else for(W=W.firstChild,ha=ha.firstChild;null!=W;){var na=W.nextSibling;null==ha?U(W):(M(W,ha),ha=ha.nextSibling);W=na}}function U(W){for(var ha=W.firstChild;null!=ha;){var na=ha.nextSibling;U(ha);ha=na}1==W.nodeType&&("BR"===W.nodeName||null!=W.firstChild)||3==W.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(W)).length?(3==W.nodeType&&mxUtils.setTextContent(W,mxUtils.getTextContent(W).replace(/\n|\r/g,"")),1==W.nodeType&&(W.removeAttribute("style"),
+W.removeAttribute("class"),W.removeAttribute("width"),W.removeAttribute("cellpadding"),W.removeAttribute("cellspacing"),W.removeAttribute("border"))):W.parentNode.removeChild(W)}Z.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(W){var ha=K(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||
+0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?M(this.textarea,ha):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var z=this.graph.view.getState(this.editingCell);if(null!=z){var K=null!=z&&"0"!=mxUtils.getValue(z.style,"nl2Br","1"),M=this.saveSelection();if(this.codeViewMode){ua=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<ua.length&&"\n"==ua.charAt(ua.length-1)&&(ua=ua.substring(0,ua.length-1));ua=this.graph.sanitizeHtml(K?
+ua.replace(/\n/g,"<br/>"):ua,!0);this.textarea.className="mxCellEditor geContentEditable";pa=mxUtils.getValue(z.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE);K=mxUtils.getValue(z.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY);var U=mxUtils.getValue(z.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),W=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,ha=(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,
0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,na=[];(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&na.push("underline");(mxUtils.getValue(z.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&na.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(pa*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=
-Math.round(pa)+"px";this.textarea.style.textDecoration=na.join(" ");this.textarea.style.fontWeight=X?"bold":"normal";this.textarea.style.fontStyle=fa?"italic":"";this.textarea.style.fontFamily=L;this.textarea.style.textAlign=U;this.textarea.style.padding="0px";this.textarea.innerHTML!=ua&&(this.textarea.innerHTML=ua,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&
-this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ua=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ua=mxUtils.replaceTrailingNewlines(ua,"<div><br></div>"));ua=this.graph.sanitizeHtml(L?ua.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ua,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var pa=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(pa*
+Math.round(pa)+"px";this.textarea.style.textDecoration=na.join(" ");this.textarea.style.fontWeight=W?"bold":"normal";this.textarea.style.fontStyle=ha?"italic":"";this.textarea.style.fontFamily=K;this.textarea.style.textAlign=U;this.textarea.style.padding="0px";this.textarea.innerHTML!=ua&&(this.textarea.innerHTML=ua,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&
+this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerText="");var ua=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(ua=mxUtils.replaceTrailingNewlines(ua,"<div><br></div>"));ua=this.graph.sanitizeHtml(K?ua.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):ua,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var pa=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(pa*
mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(pa)+"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!=ua&&(this.textarea.innerHTML=ua);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&
-this.restoreSelection(this.switchSelectionState);this.switchSelectionState=M;this.resize()}};var ca=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(z,L){if(null!=this.textarea)if(z=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=z){var M=z.view.scale;this.bounds=mxRectangle.fromRectangle(z);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*M;this.bounds.height=60*M;var U=null!=z.text?z.text.margin:null;null==U&&(U=mxUtils.getAlignmentAsPoint(mxUtils.getValue(z.style,
+this.restoreSelection(this.switchSelectionState);this.switchSelectionState=M;this.resize()}};var ca=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(z,K){if(null!=this.textarea)if(z=this.graph.getView().getState(this.editingCell),this.codeViewMode&&null!=z){var M=z.view.scale;this.bounds=mxRectangle.fromRectangle(z);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*M;this.bounds.height=60*M;var U=null!=z.text?z.text.margin:null;null==U&&(U=mxUtils.getAlignmentAsPoint(mxUtils.getValue(z.style,
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(z.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=U.x*this.bounds.width;this.bounds.y+=U.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/M)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/M)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/M)+(this.textarea.offsetHeight-
this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*M);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/M)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*M);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("+M+","+
-M+")")}else this.textarea.style.height="",this.textarea.style.overflow="",ca.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(z,L){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var M=this.graph.getEditingValue(z.cell,L);"1"==mxUtils.getValue(z.style,"nl2Br","1")&&(M=M.replace(/\n/g,"<br/>"));return M=this.graph.sanitizeHtml(M,!0)};mxCellEditorGetCurrentValue=
-mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(z){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var L=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return L="1"==mxUtils.getValue(z.style,"nl2Br","1")?L.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):L.replace(/\r\n/g,"").replace(/\n/g,"")};var ba=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(z){this.codeViewMode&&
-this.toggleViewMode();ba.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(z){}};var Z=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(z,L){this.graph.getModel().beginUpdate();try{Z.apply(this,arguments),""==L&&this.graph.isCellDeletable(z.cell)&&0==this.graph.model.getChildCount(z.cell)&&this.graph.isTransparentState(z)&&this.graph.removeCells([z.cell],!1)}finally{this.graph.getModel().endUpdate()}};
-mxCellEditor.prototype.getBackgroundColor=function(z){var L=mxUtils.getValue(z.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=L&&L!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(L=mxUtils.getValue(z.style,mxConstants.STYLE_FILLCOLOR,null));L==mxConstants.NONE&&(L=null);return L};mxCellEditor.prototype.getBorderColor=function(z){var L=mxUtils.getValue(z.style,
-mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=L&&L!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(L=mxUtils.getValue(z.style,mxConstants.STYLE_STROKECOLOR,null));L==mxConstants.NONE&&(L=null);return L};mxCellEditor.prototype.getMinimumSize=function(z){var L=this.graph.getView().scale;return new mxRectangle(0,0,null==z.text?30:z.text.size*L+20,30)};mxGraphHandlerIsValidDropTarget=
-mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(z,L){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(L.getEvent)};mxGraphView.prototype.formatUnitText=function(z){return z?e(z,this.unit):z};mxGraphHandler.prototype.updateHint=function(z){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var L=this.graph.view.translate,M=this.graph.view.scale;
-z=this.roundLength((this.bounds.x+this.currentDx)/M-L.x);L=this.roundLength((this.bounds.y+this.currentDy)/M-L.y);M=this.graph.view.unit;this.hint.innerHTML=e(z,M)+", "+e(L,M);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=
-null)};var qa=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(z,L){qa.apply(this,arguments);var M=this.graph.getCellStyle(z);if(null==M.childLayout){var U=this.graph.model.getParent(z),X=null!=U?this.graph.getCellGeometry(U):null;if(null!=X&&(M=this.graph.getCellStyle(U),"stackLayout"==M.childLayout)){var fa=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var na=this.graph.getActualStartSize(U);
-X=X.clone();M?X.height=L.height+na.y+na.height+2*fa:X.width=L.width+na.x+na.width+2*fa;this.graph.model.setGeometry(U,X)}}};var N=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function z(ua){M.get(ua)||(M.put(ua,!0),X.push(ua))}for(var L=N.apply(this,arguments),M=new mxDictionary,U=this.graph.model,X=[],fa=0;fa<L.length;fa++){var na=L[fa];this.graph.isTableCell(na)?z(U.getParent(U.getParent(na))):this.graph.isTableRow(na)&&
-z(U.getParent(na));z(na)}return X};var Y=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var L=Y.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};var ea=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(z){var L=ea.apply(this,arguments);L.stroke="#C0C0C0";L.strokewidth=1;return L};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=
-function(){var z=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+z.x/2,this.bounds.y+this.rotationHandleVSpacing-z.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(z,L){return this.graph.isRecursiveVertexResize(z)&&!mxEvent.isAltDown(L.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(z,L){return mxEvent.isControlDown(L.getEvent())||mxEvent.isMetaDown(L.getEvent())};var ka=mxVertexHandler.prototype.isRotationHandleVisible;
-mxVertexHandler.prototype.isRotationHandleVisible=function(){return ka.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var ja=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=
-function(){return ja.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var V=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(z){return z.tableHandle||V.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var z=0;this.graph.isTableRow(this.state.cell)?z=1:this.graph.isTableCell(this.state.cell)&&
-(z=2);return z};var J=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return J.apply(this,arguments).grow(-this.getSelectionBorderInset())};var W=null,Q=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==W&&(W=mxCellRenderer.defaultShapes.tableLine);var z=Q.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var L=function(Ra,Fa,va){for(var ya=[],Na=0;Na<Ra.length;Na++){var Ja=
-Ra[Na];ya.push(null==Ja?null:new mxPoint((pa+Ja.x+Fa)*fa,(za+Ja.y+va)*fa))}return ya},M=this,U=this.graph,X=U.model,fa=U.view.scale,na=this.state,ua=this.selectionBorder,pa=this.state.origin.x+U.view.translate.x,za=this.state.origin.y+U.view.translate.y;null==z&&(z=[]);var Da=U.view.getCellStates(X.getChildCells(this.state.cell,!0));if(0<Da.length){var Ma=X.getChildCells(Da[0].cell,!0),La=U.getTableLines(this.state.cell,!1,!0),Ua=U.getTableLines(this.state.cell,!0,!1);for(X=0;X<Da.length;X++)mxUtils.bind(this,
-function(Ra){var Fa=Da[Ra],va=Ra<Da.length-1?Da[Ra+1]:null;va=null!=va?U.getCellGeometry(va.cell):null;var ya=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=Ua[Ra]?new W(Ua[Ra],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;Fa=new mxHandle(Fa,"row-resize",null,va);Fa.tableHandle=!0;var Na=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=
-this.shape){this.shape.stroke=0==Na?mxConstants.NONE:ua.stroke;if(this.shape.constructor==W)this.shape.line=L(Ua[Ra],0,Na),this.shape.updateBoundsFromLine();else{var Pa=U.getActualStartSize(na.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*fa;this.shape.bounds.x=na.x+(Ra==Da.length-1?0:Pa.x*fa);this.shape.bounds.width=na.width-(Ra==Da.length-1?0:Pa.width+Pa.x+fa)}this.shape.redraw()}};var Ja=!1;Fa.setPosition=function(Pa,Ya,cb){Na=Math.max(Graph.minTableRowHeight-
-Pa.height,Ya.y-Pa.y-Pa.height);Ja=mxEvent.isShiftDown(cb.getEvent());null!=ya&&Ja&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Fa.execute=function(Pa){if(0!=Na)U.setTableRowHeight(this.state.cell,Na,!Ja);else if(!M.blockDelayedSelection){var Ya=U.getCellAt(Pa.getGraphX(),Pa.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(Ya,Pa)}Na=0};Fa.reset=function(){Na=0};z.push(Fa)})(X);for(X=0;X<Ma.length;X++)mxUtils.bind(this,function(Ra){var Fa=U.view.getState(Ma[Ra]),va=U.getCellGeometry(Ma[Ra]),
-ya=null!=va.alternateBounds?va.alternateBounds:va;null==Fa&&(Fa=new mxCellState(U.view,Ma[Ra],U.getCellStyle(Ma[Ra])),Fa.x=na.x+va.x*fa,Fa.y=na.y+va.y*fa,Fa.width=ya.width*fa,Fa.height=ya.height*fa,Fa.updateCachedBounds());va=Ra<Ma.length-1?Ma[Ra+1]:null;va=null!=va?U.getCellGeometry(va):null;var Na=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=La[Ra]?new W(La[Ra],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;
-Fa=new mxHandle(Fa,"col-resize",null,va);Fa.tableHandle=!0;var Ja=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Ja?mxConstants.NONE:ua.stroke;if(this.shape.constructor==W)this.shape.line=L(La[Ra],Ja,0),this.shape.updateBoundsFromLine();else{var Ya=U.getActualStartSize(na.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Ja)*fa;this.shape.bounds.y=na.y+(Ra==Ma.length-
-1?0:Ya.y*fa);this.shape.bounds.height=na.height-(Ra==Ma.length-1?0:(Ya.height+Ya.y)*fa)}this.shape.redraw()}};var Pa=!1;Fa.setPosition=function(Ya,cb,fb){Ja=Math.max(Graph.minTableColumnWidth-ya.width,cb.x-Ya.x-ya.width);Pa=mxEvent.isShiftDown(fb.getEvent());null==Na||Pa||(Ja=Math.min(Ja,Na.width-Graph.minTableColumnWidth))};Fa.execute=function(Ya){if(0!=Ja)U.setTableColumnWidth(this.state.cell,Ja,Pa);else if(!M.blockDelayedSelection){var cb=U.getCellAt(Ya.getGraphX(),Ya.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(cb,
-Ya)}Ja=0};Fa.positionChanged=function(){};Fa.reset=function(){Ja=0};z.push(Fa)})(X)}}return null!=z?z.reverse():null};var S=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(z){S.apply(this,arguments);if(null!=this.moveHandles)for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].style.visibility=z?"":"hidden";if(null!=this.cornerHandles)for(L=0;L<this.cornerHandles.length;L++)this.cornerHandles[L].node.style.visibility=z?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=
-function(){var z=this.graph.model;if(null!=this.moveHandles){for(var L=0;L<this.moveHandles.length;L++)this.moveHandles[L].parentNode.removeChild(this.moveHandles[L]);this.moveHandles=null}this.moveHandles=[];for(L=0;L<z.getChildCount(this.state.cell);L++)mxUtils.bind(this,function(M){if(null!=M&&z.isVertex(M.cell)){var U=mxUtils.createImage(Editor.rowMoveImage);U.style.position="absolute";U.style.cursor="pointer";U.style.width="7px";U.style.height="4px";U.style.padding="4px 2px 4px 2px";U.rowState=
-M;mxEvent.addGestureListeners(U,mxUtils.bind(this,function(X){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(X)&&this.graph.isCellSelected(M.cell)||this.graph.selectCellForEvent(M.cell,X);mxEvent.isPopupTrigger(X)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(X),mxEvent.getClientY(X),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(X),this.graph.isMouseDown=!0);
-mxEvent.consume(X)}),null,mxUtils.bind(this,function(X){mxEvent.isPopupTrigger(X)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(X),mxEvent.getClientY(X),M.cell,X),mxEvent.consume(X))}));this.moveHandles.push(U);this.graph.container.appendChild(U)}})(this.graph.view.getState(z.getChildAt(this.state.cell,L)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&
-this.refreshMoveHandles()};var ha=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,0),L=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var U=0;U<this.customHandles.length;U++)if(null!=this.customHandles[U].shape&&null!=this.customHandles[U].shape.bounds){var X=
-this.customHandles[U].shape.bounds,fa=X.getCenterX(),na=X.getCenterY();if(Math.abs(this.state.x-fa)<X.width/2||Math.abs(this.state.y-na)<X.height/2||Math.abs(this.state.x+this.state.width-fa)<X.width/2||Math.abs(this.state.y+this.state.height-na)<X.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(L/=2,this.graph.isTable(this.state.cell)&&(L+=7),z.x=this.sizers[0].bounds.width+L,z.y=this.sizers[0].bounds.height+L):z=ha.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=
-function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{z=this.state.view.scale;var L=this.state.view.unit;this.hint.innerHTML=e(this.roundLength(this.bounds.width/z),L)+" x "+e(this.roundLength(this.bounds.height/z),L)}z=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||
-"0");null==z&&(z=this.bounds);this.hint.style.left=z.x+Math.round((z.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=z.y+z.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var la=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(z,L){la.apply(this,arguments);null!=
-this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var u=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(z,L){u.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(z,L){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var M=
-this.graph.view.translate,U=this.graph.view.scale,X=this.roundLength(L.x/U-M.x);M=this.roundLength(L.y/U-M.y);U=this.graph.view.unit;this.hint.innerHTML=e(X,U)+", "+e(M,U);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(X=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*X.x)+"%, "+Math.round(100*X.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility=
-"hidden");this.hint.style.left=Math.round(z.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(z.getGraphY(),L.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"/>');
+M+")")}else this.textarea.style.height="",this.textarea.style.overflow="",ca.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(z,K){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var M=this.graph.getEditingValue(z.cell,K);"1"==mxUtils.getValue(z.style,"nl2Br","1")&&(M=M.replace(/\n/g,"<br/>"));return M=this.graph.sanitizeHtml(M,!0)};mxCellEditorGetCurrentValue=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(z){if("0"==mxUtils.getValue(z.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var K=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return K="1"==mxUtils.getValue(z.style,"nl2Br","1")?K.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):K.replace(/\r\n/g,"").replace(/\n/g,"")};var aa=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(z){this.codeViewMode&&
+this.toggleViewMode();aa.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(z){}};var Y=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(z,K){this.graph.getModel().beginUpdate();try{Y.apply(this,arguments),""==K&&this.graph.isCellDeletable(z.cell)&&0==this.graph.model.getChildCount(z.cell)&&this.graph.isTransparentState(z)&&this.graph.removeCells([z.cell],!1)}finally{this.graph.getModel().endUpdate()}};
+mxCellEditor.prototype.getBackgroundColor=function(z){var K=mxUtils.getValue(z.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=K&&K!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(K=mxUtils.getValue(z.style,mxConstants.STYLE_FILLCOLOR,null));K==mxConstants.NONE&&(K=null);return K};mxCellEditor.prototype.getBorderColor=function(z){var K=mxUtils.getValue(z.style,
+mxConstants.STYLE_LABEL_BORDERCOLOR,null);null!=K&&K!=mxConstants.NONE||!(null!=z.cell.geometry&&0<z.cell.geometry.width)||0==mxUtils.getValue(z.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(z.style,mxConstants.STYLE_HORIZONTAL,1)||(K=mxUtils.getValue(z.style,mxConstants.STYLE_STROKECOLOR,null));K==mxConstants.NONE&&(K=null);return K};mxCellEditor.prototype.getMinimumSize=function(z){var K=this.graph.getView().scale;return new mxRectangle(0,0,null==z.text?30:z.text.size*K+20,30)};mxGraphHandlerIsValidDropTarget=
+mxGraphHandler.prototype.isValidDropTarget;mxGraphHandler.prototype.isValidDropTarget=function(z,K){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(K.getEvent)};mxGraphView.prototype.formatUnitText=function(z){return z?e(z,this.unit):z};mxGraphHandler.prototype.updateHint=function(z){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var K=this.graph.view.translate,M=this.graph.view.scale;
+z=this.roundLength((this.bounds.x+this.currentDx)/M-K.x);K=this.roundLength((this.bounds.y+this.currentDy)/M-K.y);M=this.graph.view.unit;this.hint.innerHTML=e(z,M)+", "+e(K,M);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=
+null)};var qa=mxStackLayout.prototype.resizeCell;mxStackLayout.prototype.resizeCell=function(z,K){qa.apply(this,arguments);var M=this.graph.getCellStyle(z);if(null==M.childLayout){var U=this.graph.model.getParent(z),W=null!=U?this.graph.getCellGeometry(U):null;if(null!=W&&(M=this.graph.getCellStyle(U),"stackLayout"==M.childLayout)){var ha=parseFloat(mxUtils.getValue(M,"stackBorder",mxStackLayout.prototype.border));M="1"==mxUtils.getValue(M,"horizontalStack","1");var na=this.graph.getActualStartSize(U);
+W=W.clone();M?W.height=K.height+na.y+na.height+2*ha:W.width=K.width+na.x+na.width+2*ha;this.graph.model.setGeometry(U,W)}}};var Q=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function z(ua){M.get(ua)||(M.put(ua,!0),W.push(ua))}for(var K=Q.apply(this,arguments),M=new mxDictionary,U=this.graph.model,W=[],ha=0;ha<K.length;ha++){var na=K[ha];this.graph.isTableCell(na)?z(U.getParent(U.getParent(na))):this.graph.isTableRow(na)&&
+z(U.getParent(na));z(na)}return W};var X=mxVertexHandler.prototype.createParentHighlightShape;mxVertexHandler.prototype.createParentHighlightShape=function(z){var K=X.apply(this,arguments);K.stroke="#C0C0C0";K.strokewidth=1;return K};var fa=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(z){var K=fa.apply(this,arguments);K.stroke="#C0C0C0";K.strokewidth=1;return K};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=
+function(){var z=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+z.x/2,this.bounds.y+this.rotationHandleVSpacing-z.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(z,K){return this.graph.isRecursiveVertexResize(z)&&!mxEvent.isAltDown(K.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(z,K){return mxEvent.isControlDown(K.getEvent())||mxEvent.isMetaDown(K.getEvent())};var ka=mxVertexHandler.prototype.isRotationHandleVisible;
+mxVertexHandler.prototype.isRotationHandleVisible=function(){return ka.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):this.bounds};var ia=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=
+function(){return ia.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var V=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(z){return z.tableHandle||V.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=function(){var z=0;this.graph.isTableRow(this.state.cell)?z=1:this.graph.isTableCell(this.state.cell)&&
+(z=2);return z};var L=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return L.apply(this,arguments).grow(-this.getSelectionBorderInset())};var ea=null,O=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==ea&&(ea=mxCellRenderer.defaultShapes.tableLine);var z=O.apply(this,arguments);if(this.graph.isTable(this.state.cell)){var K=function(Sa,Fa,va){for(var ya=[],Na=0;Na<Sa.length;Na++){var Ja=
+Sa[Na];ya.push(null==Ja?null:new mxPoint((pa+Ja.x+Fa)*ha,(za+Ja.y+va)*ha))}return ya},M=this,U=this.graph,W=U.model,ha=U.view.scale,na=this.state,ua=this.selectionBorder,pa=this.state.origin.x+U.view.translate.x,za=this.state.origin.y+U.view.translate.y;null==z&&(z=[]);var Da=U.view.getCellStates(W.getChildCells(this.state.cell,!0));if(0<Da.length){var Ma=W.getChildCells(Da[0].cell,!0),La=U.getTableLines(this.state.cell,!1,!0),Ua=U.getTableLines(this.state.cell,!0,!1);for(W=0;W<Da.length;W++)mxUtils.bind(this,
+function(Sa){var Fa=Da[Sa],va=Sa<Da.length-1?Da[Sa+1]:null;va=null!=va?U.getCellGeometry(va.cell):null;var ya=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=Ua[Sa]?new ea(Ua[Sa],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;Fa=new mxHandle(Fa,"row-resize",null,va);Fa.tableHandle=!0;var Na=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=
+this.shape){this.shape.stroke=0==Na?mxConstants.NONE:ua.stroke;if(this.shape.constructor==ea)this.shape.line=K(Ua[Sa],0,Na),this.shape.updateBoundsFromLine();else{var Qa=U.getActualStartSize(na.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+Na*ha;this.shape.bounds.x=na.x+(Sa==Da.length-1?0:Qa.x*ha);this.shape.bounds.width=na.width-(Sa==Da.length-1?0:Qa.width+Qa.x+ha)}this.shape.redraw()}};var Ja=!1;Fa.setPosition=function(Qa,Za,cb){Na=Math.max(Graph.minTableRowHeight-
+Qa.height,Za.y-Qa.y-Qa.height);Ja=mxEvent.isShiftDown(cb.getEvent());null!=ya&&Ja&&(Na=Math.min(Na,ya.height-Graph.minTableRowHeight))};Fa.execute=function(Qa){if(0!=Na)U.setTableRowHeight(this.state.cell,Na,!Ja);else if(!M.blockDelayedSelection){var Za=U.getCellAt(Qa.getGraphX(),Qa.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(Za,Qa)}Na=0};Fa.reset=function(){Na=0};z.push(Fa)})(W);for(W=0;W<Ma.length;W++)mxUtils.bind(this,function(Sa){var Fa=U.view.getState(Ma[Sa]),va=U.getCellGeometry(Ma[Sa]),
+ya=null!=va.alternateBounds?va.alternateBounds:va;null==Fa&&(Fa=new mxCellState(U.view,Ma[Sa],U.getCellStyle(Ma[Sa])),Fa.x=na.x+va.x*ha,Fa.y=na.y+va.y*ha,Fa.width=ya.width*ha,Fa.height=ya.height*ha,Fa.updateCachedBounds());va=Sa<Ma.length-1?Ma[Sa+1]:null;va=null!=va?U.getCellGeometry(va):null;var Na=null!=va&&null!=va.alternateBounds?va.alternateBounds:va;va=null!=La[Sa]?new ea(La[Sa],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);va.isDashed=ua.isDashed;va.svgStrokeTolerance++;
+Fa=new mxHandle(Fa,"col-resize",null,va);Fa.tableHandle=!0;var Ja=0;Fa.shape.node.parentNode.insertBefore(Fa.shape.node,Fa.shape.node.parentNode.firstChild);Fa.redraw=function(){if(null!=this.shape){this.shape.stroke=0==Ja?mxConstants.NONE:ua.stroke;if(this.shape.constructor==ea)this.shape.line=K(La[Sa],Ja,0),this.shape.updateBoundsFromLine();else{var Za=U.getActualStartSize(na.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(ya.width+Ja)*ha;this.shape.bounds.y=na.y+(Sa==Ma.length-
+1?0:Za.y*ha);this.shape.bounds.height=na.height-(Sa==Ma.length-1?0:(Za.height+Za.y)*ha)}this.shape.redraw()}};var Qa=!1;Fa.setPosition=function(Za,cb,fb){Ja=Math.max(Graph.minTableColumnWidth-ya.width,cb.x-Za.x-ya.width);Qa=mxEvent.isShiftDown(fb.getEvent());null==Na||Qa||(Ja=Math.min(Ja,Na.width-Graph.minTableColumnWidth))};Fa.execute=function(Za){if(0!=Ja)U.setTableColumnWidth(this.state.cell,Ja,Qa);else if(!M.blockDelayedSelection){var cb=U.getCellAt(Za.getGraphX(),Za.getGraphY())||na.cell;U.graphHandler.selectCellForEvent(cb,
+Za)}Ja=0};Fa.positionChanged=function(){};Fa.reset=function(){Ja=0};z.push(Fa)})(W)}}return null!=z?z.reverse():null};var N=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(z){N.apply(this,arguments);if(null!=this.moveHandles)for(var K=0;K<this.moveHandles.length;K++)this.moveHandles[K].style.visibility=z?"":"hidden";if(null!=this.cornerHandles)for(K=0;K<this.cornerHandles.length;K++)this.cornerHandles[K].node.style.visibility=z?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=
+function(){var z=this.graph.model;if(null!=this.moveHandles){for(var K=0;K<this.moveHandles.length;K++)this.moveHandles[K].parentNode.removeChild(this.moveHandles[K]);this.moveHandles=null}this.moveHandles=[];for(K=0;K<z.getChildCount(this.state.cell);K++)mxUtils.bind(this,function(M){if(null!=M&&z.isVertex(M.cell)){var U=mxUtils.createImage(Editor.rowMoveImage);U.style.position="absolute";U.style.cursor="pointer";U.style.width="7px";U.style.height="4px";U.style.padding="4px 2px 4px 2px";U.rowState=
+M;mxEvent.addGestureListeners(U,mxUtils.bind(this,function(W){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(W)&&this.graph.isCellSelected(M.cell)||this.graph.selectCellForEvent(M.cell,W);mxEvent.isPopupTrigger(W)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(W),mxEvent.getClientY(W),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(W),this.graph.isMouseDown=!0);
+mxEvent.consume(W)}),null,mxUtils.bind(this,function(W){mxEvent.isPopupTrigger(W)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(W),mxEvent.getClientY(W),M.cell,W),mxEvent.consume(W))}));this.moveHandles.push(U);this.graph.container.appendChild(U)}})(this.graph.view.getState(z.getChildAt(this.state.cell,K)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var z=0;z<this.customHandles.length;z++)this.customHandles[z].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&
+this.refreshMoveHandles()};var ba=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var z=new mxPoint(0,0),K=this.tolerance,M=this.state.style.shape;null==mxCellRenderer.defaultShapes[M]&&mxStencilRegistry.getStencil(M);M=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!M&&null!=this.customHandles)for(var U=0;U<this.customHandles.length;U++)if(null!=this.customHandles[U].shape&&null!=this.customHandles[U].shape.bounds){var W=
+this.customHandles[U].shape.bounds,ha=W.getCenterX(),na=W.getCenterY();if(Math.abs(this.state.x-ha)<W.width/2||Math.abs(this.state.y-na)<W.height/2||Math.abs(this.state.x+this.state.width-ha)<W.width/2||Math.abs(this.state.y+this.state.height-na)<W.height/2){M=!0;break}}M&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(K/=2,this.graph.isTable(this.state.cell)&&(K+=7),z.x=this.sizers[0].bounds.width+K,z.y=this.sizers[0].bounds.height+K):z=ba.apply(this,arguments);return z};mxVertexHandler.prototype.updateHint=
+function(z){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{z=this.state.view.scale;var K=this.state.view.unit;this.hint.innerHTML=e(this.roundLength(this.bounds.width/z),K)+" x "+e(this.roundLength(this.bounds.height/z),K)}z=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||
+"0");null==z&&(z=this.bounds);this.hint.style.left=z.x+Math.round((z.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=z.y+z.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var la=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(z,K){la.apply(this,arguments);null!=
+this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display="none")};var u=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(z,K){u.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(z,K){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var M=
+this.graph.view.translate,U=this.graph.view.scale,W=this.roundLength(K.x/U-M.x);M=this.roundLength(K.y/U-M.y);U=this.graph.view.unit;this.hint.innerHTML=e(W,U)+", "+e(M,U);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(W=this.constraintHandler.currentConstraint.point,this.hint.innerHTML="["+Math.round(100*W.x)+"%, "+Math.round(100*W.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility=
+"hidden");this.hint.style.left=Math.round(z.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(z.getGraphY(),K.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="'+
@@ -2630,264 +2631,264 @@ mxEdgeHandler.prototype.endHandleImage=HoverIcons.prototype.endMainHandle;mxEdge
HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangleUp=HoverIcons.prototype.triangleUp,Sidebar.prototype.triangleRight=HoverIcons.prototype.triangleRight,Sidebar.prototype.triangleDown=HoverIcons.prototype.triangleDown,Sidebar.prototype.triangleLeft=HoverIcons.prototype.triangleLeft,Sidebar.prototype.refreshTarget=HoverIcons.prototype.refreshTarget,Sidebar.prototype.roundDrop=HoverIcons.prototype.roundDrop);mxVertexHandler.prototype.rotationEnabled=!0;mxVertexHandler.prototype.manageSizers=
!0;mxVertexHandler.prototype.livePreview=!0;mxGraphHandler.prototype.maxLivePreview=16;mxRubberband.prototype.defaultOpacity=30;mxConnectionHandler.prototype.outlineConnect=!0;mxCellHighlight.prototype.keepOnTop=!0;mxVertexHandler.prototype.parentHighlightEnabled=!0;mxEdgeHandler.prototype.parentHighlightEnabled=!0;mxEdgeHandler.prototype.dblClickRemoveEnabled=!0;mxEdgeHandler.prototype.straightRemoveEnabled=!0;mxEdgeHandler.prototype.virtualBendsEnabled=!0;mxEdgeHandler.prototype.mergeRemoveEnabled=
!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(z){return!mxEvent.isShiftDown(z.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=
-12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(z){return mxEvent.isMouseEvent(z.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return null==z.getState()&&!mxEvent.isMouseEvent(L)||mxEvent.isPopupTrigger(L)&&(null==z.getState()||mxEvent.isControlDown(L)||mxEvent.isShiftDown(L))};var H=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
-function(z,L){H.apply(this,arguments);mxEvent.isTouchEvent(L.getEvent())&&this.graph.isCellSelected(L.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(z){var L=z.getEvent();return mxEvent.isLeftMouseButton(L)&&(this.useLeftButtonForPanning&&null==z.getState()||mxEvent.isControlDown(L)&&!mxEvent.isShiftDown(L))||this.usePopupTrigger&&mxEvent.isPopupTrigger(L)};mxRubberband.prototype.isSpaceEvent=function(z){return this.graph.isEnabled()&&
-!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,L){if(this.cancelled)this.cancelled=!1,L.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,U=null,X=null,fa=z=null;
-null!=this.first&&null!=this.currentX&&null!=this.currentY&&(U=this.first.x,X=this.first.y,z=(this.currentX-U)/this.graph.view.scale,fa=(this.currentY-X)/this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(z=this.graph.snap(z),fa=this.graph.snap(fa),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(fa)<this.graph.tolerance&&(fa=0))));this.reset();if(M){if(this.isSpaceEvent(L)){this.graph.model.beginUpdate();try{var na=this.graph.getCellsBeyond(U,X,this.graph.getDefaultParent(),
-!0,!0);for(M=0;M<na.length;M++)if(this.graph.isCellMovable(na[M])){var ua=this.graph.view.getState(na[M]),pa=this.graph.getCellGeometry(na[M]);null!=ua&&null!=pa&&(pa=pa.clone(),pa.translate(z,fa),this.graph.model.setGeometry(na[M],pa))}}finally{this.graph.model.endUpdate()}}else na=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(na,L.getEvent());L.consume()}}};mxRubberband.prototype.mouseMove=function(z,L){if(!L.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
-z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=L.getX()+M.x;M=L.getY()+M.y;var U=this.first.x-z,X=this.first.y-M,fa=this.graph.tolerance;if(null!=this.div||Math.abs(U)>fa||Math.abs(X)>fa)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(L)?(z=this.x+this.width,M=this.y+this.height,U=this.graph.view.scale,mxEvent.isAltDown(L.getEvent())||(this.width=this.graph.snap(this.width/U)*U,this.height=this.graph.snap(this.height/U)*U,this.graph.isGridEnabled()||
+12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(z){return mxEvent.isMouseEvent(z.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(z){var K=z.getEvent();return null==z.getState()&&!mxEvent.isMouseEvent(K)||mxEvent.isPopupTrigger(K)&&(null==z.getState()||mxEvent.isControlDown(K)||mxEvent.isShiftDown(K))};var H=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
+function(z,K){H.apply(this,arguments);mxEvent.isTouchEvent(K.getEvent())&&this.graph.isCellSelected(K.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(z){var K=z.getEvent();return mxEvent.isLeftMouseButton(K)&&(this.useLeftButtonForPanning&&null==z.getState()||mxEvent.isControlDown(K)&&!mxEvent.isShiftDown(K))||this.usePopupTrigger&&mxEvent.isPopupTrigger(K)};mxRubberband.prototype.isSpaceEvent=function(z){return this.graph.isEnabled()&&
+!this.graph.isCellLocked(this.graph.getDefaultParent())&&(mxEvent.isControlDown(z.getEvent())||mxEvent.isMetaDown(z.getEvent()))&&mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(z,K){if(this.cancelled)this.cancelled=!1,K.consume();else{var M=null!=this.div&&"none"!=this.div.style.display,U=null,W=null,ha=z=null;
+null!=this.first&&null!=this.currentX&&null!=this.currentY&&(U=this.first.x,W=this.first.y,z=(this.currentX-U)/this.graph.view.scale,ha=(this.currentY-W)/this.graph.view.scale,mxEvent.isAltDown(K.getEvent())||(z=this.graph.snap(z),ha=this.graph.snap(ha),this.graph.isGridEnabled()||(Math.abs(z)<this.graph.tolerance&&(z=0),Math.abs(ha)<this.graph.tolerance&&(ha=0))));this.reset();if(M){if(this.isSpaceEvent(K)){this.graph.model.beginUpdate();try{var na=this.graph.getCellsBeyond(U,W,this.graph.getDefaultParent(),
+!0,!0);for(M=0;M<na.length;M++)if(this.graph.isCellMovable(na[M])){var ua=this.graph.view.getState(na[M]),pa=this.graph.getCellGeometry(na[M]);null!=ua&&null!=pa&&(pa=pa.clone(),pa.translate(z,ha),this.graph.model.setGeometry(na[M],pa))}}finally{this.graph.model.endUpdate()}}else na=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(na,K.getEvent());K.consume()}}};mxRubberband.prototype.mouseMove=function(z,K){if(!K.isConsumed()&&null!=this.first){var M=mxUtils.getScrollOrigin(this.graph.container);
+z=mxUtils.getOffset(this.graph.container);M.x-=z.x;M.y-=z.y;z=K.getX()+M.x;M=K.getY()+M.y;var U=this.first.x-z,W=this.first.y-M,ha=this.graph.tolerance;if(null!=this.div||Math.abs(U)>ha||Math.abs(W)>ha)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(z,M),this.isSpaceEvent(K)?(z=this.x+this.width,M=this.y+this.height,U=this.graph.view.scale,mxEvent.isAltDown(K.getEvent())||(this.width=this.graph.snap(this.width/U)*U,this.height=this.graph.snap(this.height/U)*U,this.graph.isGridEnabled()||
(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=z-this.width),this.y<this.first.y&&(this.y=M-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",
null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&
-(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),L.consume()}};var O=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);O.apply(this,arguments)};var T=(new Date).getTime(),R=0,da=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(z,L,M,U){da.apply(this,arguments);M!=this.currentTerminalState?(T=(new Date).getTime(),
-R=0):R=(new Date).getTime()-T;this.currentTerminalState=M};var P=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(z){return mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())?!1:null!=this.currentTerminalState&&z.getState()==this.currentTerminalState&&2E3<R||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&P.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
-function(z,L,M){L=null!=z&&0==z;var U=this.state.getVisibleTerminalState(L);z=null!=z&&(0==z||z>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==z)?this.graph.getConnectionConstraint(this.state,U,L):null;M=null!=(null!=z?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(L),z):null)?M?this.endFixedHandleImage:this.fixedHandleImage:null!=z&&null!=U?M?this.endTerminalHandleImage:this.terminalHandleImage:M?this.endHandleImage:this.handleImage;if(null!=M)return M=
-new mxImageShape(new mxRectangle(0,0,M.width,M.height),M.src),M.preserveImageAspect=!1,M;M=mxConstants.HANDLE_SIZE;this.preferHtml&&--M;return new mxRectangleShape(new mxRectangle(0,0,M,M),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ma=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(z,L,M){this.handleImage=L==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:L==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
-return ma.apply(this,arguments)};var ra=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(z){if(null!=z&&1==z.length){var L=this.graph.getModel(),M=L.getParent(z[0]),U=this.graph.getCellGeometry(z[0]);if(L.isEdge(M)&&null!=U&&U.relative&&(L=this.graph.view.getState(z[0]),null!=L&&2>L.width&&2>L.height&&null!=L.text&&null!=L.text.boundingBox))return mxRectangle.fromRectangle(L.text.boundingBox)}return ra.apply(this,arguments)};var xa=mxGraphHandler.prototype.getGuideStates;
-mxGraphHandler.prototype.getGuideStates=function(){for(var z=xa.apply(this,arguments),L=[],M=0;M<z.length;M++)"1"!=mxUtils.getValue(z[M].style,"part","0")&&L.push(z[M]);return L};var ta=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(z){var L=this.graph.getModel(),M=L.getParent(z.cell),U=this.graph.getCellGeometry(z.cell);return L.isEdge(M)&&null!=U&&U.relative&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox?(L=z.text.unrotatedBoundingBox||
-z.text.boundingBox,new mxRectangle(Math.round(L.x),Math.round(L.y),Math.round(L.width),Math.round(L.height))):ta.apply(this,arguments)};var Aa=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(z,L){var M=this.graph.getModel(),U=M.getParent(this.state.cell),X=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(L)==mxEvent.ROTATION_HANDLE||!M.isEdge(U)||null==X||!X.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Aa.apply(this,arguments)};
-mxVertexHandler.prototype.rotateClick=function(){var z=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),L=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&z==mxConstants.NONE&&L==mxConstants.NONE?(z=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,z,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};
-var Ca=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(z,L){Ca.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 Ba=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(z,L){Ba.apply(this,arguments);null!=this.rotationShape&&null!=
+(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),K.consume()}};var P=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);P.apply(this,arguments)};var T=(new Date).getTime(),S=0,da=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(z,K,M,U){da.apply(this,arguments);M!=this.currentTerminalState?(T=(new Date).getTime(),
+S=0):S=(new Date).getTime()-T;this.currentTerminalState=M};var R=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(z){return mxEvent.isShiftDown(z.getEvent())&&mxEvent.isAltDown(z.getEvent())?!1:null!=this.currentTerminalState&&z.getState()==this.currentTerminalState&&2E3<S||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&R.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=
+function(z,K,M){K=null!=z&&0==z;var U=this.state.getVisibleTerminalState(K);z=null!=z&&(0==z||z>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==z)?this.graph.getConnectionConstraint(this.state,U,K):null;M=null!=(null!=z?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(K),z):null)?M?this.endFixedHandleImage:this.fixedHandleImage:null!=z&&null!=U?M?this.endTerminalHandleImage:this.terminalHandleImage:M?this.endHandleImage:this.handleImage;if(null!=M)return M=
+new mxImageShape(new mxRectangle(0,0,M.width,M.height),M.src),M.preserveImageAspect=!1,M;M=mxConstants.HANDLE_SIZE;this.preferHtml&&--M;return new mxRectangleShape(new mxRectangle(0,0,M,M),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ma=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(z,K,M){this.handleImage=K==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:K==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;
+return ma.apply(this,arguments)};var ra=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(z){if(null!=z&&1==z.length){var K=this.graph.getModel(),M=K.getParent(z[0]),U=this.graph.getCellGeometry(z[0]);if(K.isEdge(M)&&null!=U&&U.relative&&(K=this.graph.view.getState(z[0]),null!=K&&2>K.width&&2>K.height&&null!=K.text&&null!=K.text.boundingBox))return mxRectangle.fromRectangle(K.text.boundingBox)}return ra.apply(this,arguments)};var xa=mxGraphHandler.prototype.getGuideStates;
+mxGraphHandler.prototype.getGuideStates=function(){for(var z=xa.apply(this,arguments),K=[],M=0;M<z.length;M++)"1"!=mxUtils.getValue(z[M].style,"part","0")&&K.push(z[M]);return K};var ta=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(z){var K=this.graph.getModel(),M=K.getParent(z.cell),U=this.graph.getCellGeometry(z.cell);return K.isEdge(M)&&null!=U&&U.relative&&2>z.width&&2>z.height&&null!=z.text&&null!=z.text.boundingBox?(K=z.text.unrotatedBoundingBox||
+z.text.boundingBox,new mxRectangle(Math.round(K.x),Math.round(K.y),Math.round(K.width),Math.round(K.height))):ta.apply(this,arguments)};var Aa=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(z,K){var M=this.graph.getModel(),U=M.getParent(this.state.cell),W=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(K)==mxEvent.ROTATION_HANDLE||!M.isEdge(U)||null==W||!W.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&Aa.apply(this,arguments)};
+mxVertexHandler.prototype.rotateClick=function(){var z=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),K=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&z==mxConstants.NONE&&K==mxConstants.NONE?(z=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,z,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};
+var Ca=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(z,K){Ca.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 Ba=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(z,K){Ba.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 sa=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){sa.apply(this,arguments);var z=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();
-else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=[];for(var L=0;4>L;L++){var M=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);M.dialect=mxConstants.DIALECT_SVG;M.init(this.graph.view.getOverlayPane());this.cornerHandles.push(M)}}var U=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(X,fa){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));U()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(X,fa){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
-L=this.graph.getLinkForCell(this.state.cell);M=this.graph.getLinksForState(this.state);this.updateLinkHint(L,M);if(null!=L||null!=M&&0<M.length)z=!0;z&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(z,L){try{if(null==z&&(null==L||0==L.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=z||null!=L&&0<L.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding=
+else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=[];for(var K=0;4>K;K++){var M=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);M.dialect=mxConstants.DIALECT_SVG;M.init(this.graph.view.getOverlayPane());this.cornerHandles.push(M)}}var U=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(W,ha){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));U()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(W,ha){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);
+K=this.graph.getLinkForCell(this.state.cell);M=this.graph.getLinksForState(this.state);this.updateLinkHint(K,M);if(null!=K||null!=M&&0<M.length)z=!0;z&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(z,K){try{if(null==z&&(null==K||0==K.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=z||null!=K&&0<K.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding=
"6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerText="";if(null!=z&&(this.linkHint.appendChild(this.graph.createLinkForHint(z)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var M=document.createElement("img");M.setAttribute("src",Editor.editImage);M.setAttribute("title",
-mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(fa){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(fa)}));var U=M.cloneNode(!0);U.setAttribute("src",Editor.trashImage);U.setAttribute("title",mxResources.get("removeIt",
-[mxResources.get("link")]));U.style.marginLeft="4px";this.linkHint.appendChild(U);mxEvent.addListener(U,"click",mxUtils.bind(this,function(fa){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(fa)}))}if(null!=L)for(M=0;M<L.length;M++){var X=document.createElement("div");X.style.marginTop=null!=z||0<M?"6px":"0px";X.appendChild(this.graph.createLinkForHint(L[M].getAttribute("href"),mxUtils.getTextContent(L[M])));this.linkHint.appendChild(X)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(fa){}};
-mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Oa=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Oa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var z=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&
-this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(U,X){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));z();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var L=this.graph.getLinkForCell(this.state.cell),M=this.graph.getLinksForState(this.state);if(null!=
-L||null!=M&&0<M.length)this.updateLinkHint(L,M),this.redrawHandles()};var Ta=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Ta.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Sa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.left=this.moveHandles[z].rowState.x+
-this.moveHandles[z].rowState.width-5+"px",this.moveHandles[z].style.top=this.moveHandles[z].rowState.y+this.moveHandles[z].rowState.height/2-6+"px";if(null!=this.cornerHandles){z=this.getSelectionBorderInset();var L=this.cornerHandles,M=L[0].bounds.height/2;L[0].bounds.x=this.state.x-L[0].bounds.width/2+z;L[0].bounds.y=this.state.y-M+z;L[0].redraw();L[1].bounds.x=L[0].bounds.x+this.state.width-2*z;L[1].bounds.y=L[0].bounds.y;L[1].redraw();L[2].bounds.x=L[0].bounds.x;L[2].bounds.y=this.state.y+this.state.height-
-2*z;L[2].redraw();L[3].bounds.x=L[1].bounds.x;L[3].bounds.y=L[2].bounds.y;L[3].redraw();for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].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":"");Sa.apply(this);null!=this.state&&null!=this.linkHint&&(z=new mxPoint(this.state.getCenterX(),
-this.state.getCenterY()),L=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),M=mxUtils.getBoundingBox(L,this.state.style[mxConstants.STYLE_ROTATION]||"0",z),z=null!=M?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,L=null!=this.state.text?this.state.text.boundingBox:null,null==M&&(M=this.state),M=M.y+M.height,null!=L&&(M=Math.max(M,L.y+L.height)),this.linkHint.style.left=Math.max(0,Math.round(z.x+(z.width-this.linkHint.clientWidth)/
-2))+"px",this.linkHint.style.top=Math.round(M+this.verticalOffset/2+Editor.hintOffset)+"px")};var $a=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){$a.apply(this,arguments);if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)null!=this.moveHandles[z]&&null!=this.moveHandles[z].parentNode&&this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}if(null!=this.cornerHandles){for(z=0;z<this.cornerHandles.length;z++)null!=this.cornerHandles[z]&&
+mxResources.get("editLink"));M.setAttribute("width","11");M.setAttribute("height","11");M.style.marginLeft="10px";M.style.marginBottom="-1px";M.style.cursor="pointer";Editor.isDarkMode()&&(M.style.filter="invert(100%)");this.linkHint.appendChild(M);mxEvent.addListener(M,"click",mxUtils.bind(this,function(ha){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(ha)}));var U=M.cloneNode(!0);U.setAttribute("src",Editor.trashImage);U.setAttribute("title",mxResources.get("removeIt",
+[mxResources.get("link")]));U.style.marginLeft="4px";this.linkHint.appendChild(U);mxEvent.addListener(U,"click",mxUtils.bind(this,function(ha){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(ha)}))}if(null!=K)for(M=0;M<K.length;M++){var W=document.createElement("div");W.style.marginTop=null!=z||0<M?"6px":"0px";W.appendChild(this.graph.createLinkForHint(K[M].getAttribute("href"),mxUtils.getTextContent(K[M])));this.linkHint.appendChild(W)}}null!=this.linkHint&&Graph.sanitizeNode(this.linkHint)}catch(ha){}};
+mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var Pa=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){Pa.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var z=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&
+this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(U,W){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));z();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var K=this.graph.getLinkForCell(this.state.cell),M=this.graph.getLinksForState(this.state);if(null!=
+K||null!=M&&0<M.length)this.updateLinkHint(K,M),this.redrawHandles()};var Ta=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){Ta.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var Oa=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var z=0;z<this.moveHandles.length;z++)this.moveHandles[z].style.left=this.moveHandles[z].rowState.x+
+this.moveHandles[z].rowState.width-5+"px",this.moveHandles[z].style.top=this.moveHandles[z].rowState.y+this.moveHandles[z].rowState.height/2-6+"px";if(null!=this.cornerHandles){z=this.getSelectionBorderInset();var K=this.cornerHandles,M=K[0].bounds.height/2;K[0].bounds.x=this.state.x-K[0].bounds.width/2+z;K[0].bounds.y=this.state.y-M+z;K[0].redraw();K[1].bounds.x=K[0].bounds.x+this.state.width-2*z;K[1].bounds.y=K[0].bounds.y;K[1].redraw();K[2].bounds.x=K[0].bounds.x;K[2].bounds.y=this.state.y+this.state.height-
+2*z;K[2].redraw();K[3].bounds.x=K[1].bounds.x;K[3].bounds.y=K[2].bounds.y;K[3].redraw();for(z=0;z<this.cornerHandles.length;z++)this.cornerHandles[z].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":"");Oa.apply(this);null!=this.state&&null!=this.linkHint&&(z=new mxPoint(this.state.getCenterX(),
+this.state.getCenterY()),K=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),M=mxUtils.getBoundingBox(K,this.state.style[mxConstants.STYLE_ROTATION]||"0",z),z=null!=M?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,K=null!=this.state.text?this.state.text.boundingBox:null,null==M&&(M=this.state),M=M.y+M.height,null!=K&&(M=Math.max(M,K.y+K.height)),this.linkHint.style.left=Math.max(0,Math.round(z.x+(z.width-this.linkHint.clientWidth)/
+2))+"px",this.linkHint.style.top=Math.round(M+this.verticalOffset/2+Editor.hintOffset)+"px")};var Xa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){Xa.apply(this,arguments);if(null!=this.moveHandles){for(var z=0;z<this.moveHandles.length;z++)null!=this.moveHandles[z]&&null!=this.moveHandles[z].parentNode&&this.moveHandles[z].parentNode.removeChild(this.moveHandles[z]);this.moveHandles=null}if(null!=this.cornerHandles){for(z=0;z<this.cornerHandles.length;z++)null!=this.cornerHandles[z]&&
null!=this.cornerHandles[z].node&&null!=this.cornerHandles[z].node.parentNode&&this.cornerHandles[z].node.parentNode.removeChild(this.cornerHandles[z].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 Ga=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Ga.apply(this),null!=this.state&&null!=this.linkHint)){var z=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(z=new mxRectangle(z.x,z.y,z.width,z.height),z.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(z.x+(z.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=
Math.round(z.y+z.height+Editor.hintOffset)+"px"}};var eb=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){eb.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var bb=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){bb.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(c,l,x){mxShape.call(this);this.line=c;this.stroke=l;this.strokewidth=null!=x?x:1;this.updateBoundsFromLine()}function e(){mxSwimlane.call(this)}function k(){mxSwimlane.call(this)}function n(){mxCylinder.call(this)}function D(){mxCylinder.call(this)}function t(){mxActor.call(this)}function E(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function f(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function m(){mxShape.call(this)}function q(){mxShape.call(this)}
-function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function I(){mxCylinder.call(this)}function G(){mxActor.call(this)}function aa(){mxActor.call(this)}function ca(){mxActor.call(this)}function ba(){mxActor.call(this)}function Z(){mxActor.call(this)}function qa(){mxActor.call(this)}function N(){mxActor.call(this)}function Y(c,l){this.canvas=c;this.canvas.setLineJoin("round");
-this.canvas.setLineCap("round");this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,Y.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,Y.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,Y.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,Y.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
-Y.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,Y.prototype.arcTo)}function ea(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function V(){mxActor.call(this)}function J(){mxActor.call(this)}function W(){mxRectangleShape.call(this)}function Q(){mxRectangleShape.call(this)}function S(){mxCylinder.call(this)}function ha(){mxShape.call(this)}function la(){mxShape.call(this)}function u(){mxEllipse.call(this)}
-function H(){mxShape.call(this)}function O(){mxShape.call(this)}function T(){mxRectangleShape.call(this)}function R(){mxShape.call(this)}function da(){mxShape.call(this)}function P(){mxShape.call(this)}function ma(){mxShape.call(this)}function ra(){mxShape.call(this)}function xa(){mxCylinder.call(this)}function ta(){mxCylinder.call(this)}function Aa(){mxRectangleShape.call(this)}function Ca(){mxDoubleEllipse.call(this)}function Ba(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);
-this.spacing=0}function Oa(){mxArrowConnector.call(this);this.spacing=0}function Ta(){mxActor.call(this)}function Sa(){mxRectangleShape.call(this)}function $a(){mxActor.call(this)}function Ga(){mxActor.call(this)}function eb(){mxActor.call(this)}function bb(){mxActor.call(this)}function z(){mxActor.call(this)}function L(){mxActor.call(this)}function M(){mxActor.call(this)}function U(){mxActor.call(this)}function X(){mxActor.call(this)}function fa(){mxActor.call(this)}function na(){mxEllipse.call(this)}
-function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}function za(){mxRhombus.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxEllipse.call(this)}function Ua(){mxEllipse.call(this)}function Ra(){mxActor.call(this)}function Fa(){mxActor.call(this)}function va(){mxActor.call(this)}function ya(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=
-!0;this.indent=2;this.rectOutline="single"}function Na(){mxConnector.call(this)}function Ja(c,l,x,p,v,A,B,ia,K,wa){B+=K;var oa=p.clone();p.x-=v*(2*B+K);p.y-=A*(2*B+K);v*=B+K;A*=B+K;return function(){c.ellipse(oa.x-v-B,oa.y-A-B,2*B,2*B);wa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==
-c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,
-p=0;p<this.line.length&&!l;p++){var v=this.line[p];null!=v&&null!=x&&(l=mxUtils.rectangleIntersectsSegment(c,x,v));x=v}return l};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,l,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):
-!1,B=this.isHorizontal(),ia=this.getTitleSize();0==ia||this.outline?La.prototype.paintVertexShape.apply(this,arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-l,-x));A||this.outline||!(B&&ia<v||!B&&ia<p)||this.paintForeground(c,l,x,p,v)};e.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ia=A;A=B;B=ia}c.rotate(-this.getShapeRotation(),
-A,B,l+p/2,x+v/2);s=this.scale;l=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/s;this.paintTableForeground(c,l,x,p,v)}};e.prototype.paintTableForeground=function(c,l,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],l,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?
-c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,
-parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ia=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),
-c.lineTo(A,A),c.close(),c.fill()),0!=ia&&(c.setFillAlpha(Math.abs(ia)),c.setFillColor(0>ia?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(A,A),c.lineTo(A,v),c.lineTo(0,v-A),c.close(),c.fill()),c.begin(),c.moveTo(A,v),c.lineTo(A,A),c.lineTo(0,0),c.moveTo(A,A),c.lineTo(p,A),c.end(),c.stroke())};n.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",
-n);var Pa=Math.tan(mxUtils.toRadians(30)),Ya=(.5-Pa)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,l,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(l+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=
-20;t.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/Pa);c.translate((p-l)/2,(v-l)/2+l/4);c.moveTo(0,.25*l);c.lineTo(.5*l,l*Ya);c.lineTo(l,.25*l);c.lineTo(.5*l,(.5-Ya)*l);c.lineTo(0,.25*l);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(p,v/(.5+Pa));A?(c.moveTo(0,.25*l),c.lineTo(.5*l,(.5-Ya)*l),c.lineTo(l,.25*l),c.moveTo(.5*l,(.5-Ya)*l),c.lineTo(.5*l,(1-Ya)*l)):(c.translate((p-
-l)/2,(v-l)/2),c.moveTo(0,.25*l),c.lineTo(.5*l,l*Ya),c.lineTo(l,.25*l),c.lineTo(l,.75*l),c.lineTo(.5*l,(1-Ya)*l),c.lineTo(0,.75*l),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),
-c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,-l);A||(c.moveTo(0,l),c.curveTo(0,-l/3,p,-l/3,p,l),c.lineTo(p,v-l),c.curveTo(p,v+l/3,0,v+l/3,0,v-l),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=
-function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-
-A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=
-function(c,l,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(l,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(q,mxShape);
-q.prototype.size=15;q.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};
-mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=15;y.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),
-c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=
-60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;C.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ia=mxUtils.getValue(this.style,"absoluteArcSize",!1),K=parseFloat(mxUtils.getValue(this.style,
-"arcSize",this.arcSize));ia||(K*=Math.min(p,v));K=Math.min(K,.5*p,.5*(v-x));l=Math.max(l,K);l=Math.min(p-K,l);B||(K=0);c.begin();"left"==A?(c.moveTo(Math.max(K,0),x),c.lineTo(Math.max(K,0),0),c.lineTo(l,0),c.lineTo(l,x)):(c.moveTo(p-l,x),c.lineTo(p-l,0),c.lineTo(p-Math.max(K,0),0),c.lineTo(p-Math.max(K,0),x));B?(c.moveTo(0,K+x),c.arcTo(K,K,0,0,1,K,x),c.lineTo(p-K,x),c.arcTo(K,K,0,0,1,p,K+x),c.lineTo(p,v-K),c.arcTo(K,K,0,0,1,p-K,v),c.lineTo(K,v),c.arcTo(K,K,0,0,1,0,v-K)):(c.moveTo(0,x),c.lineTo(p,
-x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,
-"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,
-c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};mxUtils.extend(I,mxCylinder);I.prototype.arcSize=.1;I.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(l*=Math.min(p,v));l=Math.min(l,.5*p,.5*v);A||(l=
-0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,l);c.arcTo(l,l,0,0,1,A+l,0);c.lineTo(p-l,0);c.arcTo(l,l,0,0,1,p,l);c.lineTo(p,v-l);c.arcTo(l,l,0,0,1,p-l,v);c.lineTo(A+l,v);c.arcTo(l,l,0,0,1,A,v-l);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,
-20,20),c.fillAndStroke()):"connPointRefExit"==x&&(c.ellipse(0,.5*v-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*v-5),c.lineTo(15,.5*v+5),c.moveTo(15,.5*v-5),c.lineTo(5,.5*v+5),c.stroke())};I.prototype.getLabelMargins=function(c){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",I);mxUtils.extend(G,mxActor);G.prototype.size=30;G.prototype.isRoundable=
-function(){return!0};G.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(aa,mxActor);aa.prototype.size=.4;aa.prototype.redrawPath=function(c,l,
-x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,l/2);c.quadTo(p/4,1.4*l,p/2,l/2);c.quadTo(3*p/4,l*(1-1.4),p,l/2);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};aa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||
-this.direction==mxConstants.DIRECTION_WEST)return l*=p,new mxRectangle(c.x,c.y+l,x,p-2*l);l*=x;return new mxRectangle(c.x+l,c.y,x-2*l,p)}return c};mxCellRenderer.registerShape("tape",aa);mxUtils.extend(ca,mxActor);ca.prototype.size=.3;ca.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};ca.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));c.moveTo(0,0);c.lineTo(p,0);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};mxCellRenderer.registerShape("document",ca);var cb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,l,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):cb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
-"boundedLbl",!1)){var l=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*l),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(l/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*l*this.scale),0,Math.max(0,.3*l*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,
-"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==
-mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};I.prototype.getLabelMargins=function(c){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(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,Math.max(0,l*this.scale))}return null};mxUtils.extend(ba,mxActor);ba.prototype.size=.2;ba.prototype.fixedSize=20;ba.prototype.isRoundable=function(){return!0};ba.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):
-p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p-l,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",ba);mxUtils.extend(Z,mxActor);Z.prototype.size=.2;Z.prototype.fixedSize=20;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(c,l,x,p,v){l="0"!=
-mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Z);mxUtils.extend(qa,mxActor);qa.prototype.size=
-.5;qa.prototype.redrawPath=function(c,l,x,p,v){c.setFillColor(null);l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(l,0),new mxPoint(l,v/2),new mxPoint(0,v/2),new mxPoint(l,v/2),new mxPoint(l,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(N,mxActor);N.prototype.redrawPath=
-function(c,l,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);l=p/5;c.rect(0,0,l,v);c.fillAndStroke();c.rect(2*l,0,l,v);c.fillAndStroke();c.rect(4*l,0,l,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",N);Y.prototype.moveTo=function(c,l){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;this.firstX=c;this.firstY=l};Y.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)};Y.prototype.quadTo=function(c,l,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};Y.prototype.curveTo=function(c,l,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};Y.prototype.arcTo=function(c,l,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};Y.prototype.lineTo=function(c,l){if(null!=this.lastX&&null!=this.lastY){var x=function(oa){return"number"===
-typeof oa?oa?0>oa?-1:1:oa===oa?0:NaN:NaN},p=Math.abs(c-this.lastX),v=Math.abs(l-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;return}var B=Math.round(A/10),ia=this.defaultVariation;5>B&&(B=5,ia/=3);var K=x(c-this.lastX)*p/B;x=x(l-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var wa=(Math.random()-.5)*ia;this.originalLineTo.call(this.canvas,K*A+this.lastX-wa*v,x*A+this.lastY-wa*p)}this.originalLineTo.call(this.canvas,c,l)}else this.originalLineTo.apply(this.canvas,
-arguments);this.lastX=c;this.lastY=l};Y.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 fb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){fb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};
-var qb=mxShape.prototype.afterPaint;mxShape.prototype.afterPaint=function(c){qb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new Y(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var ab=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,l,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=Y)ab.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+function y(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1}function F(){mxActor.call(this)}function C(){mxCylinder.call(this)}function I(){mxCylinder.call(this)}function G(){mxActor.call(this)}function Z(){mxActor.call(this)}function ca(){mxActor.call(this)}function aa(){mxActor.call(this)}function Y(){mxActor.call(this)}function qa(){mxActor.call(this)}function Q(){mxActor.call(this)}function X(c,l){this.canvas=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=l;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,X.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,X.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,X.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,X.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,X.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,X.prototype.arcTo)}function fa(){mxRectangleShape.call(this)}function ka(){mxRectangleShape.call(this)}function ia(){mxActor.call(this)}function V(){mxActor.call(this)}function L(){mxActor.call(this)}function ea(){mxRectangleShape.call(this)}function O(){mxRectangleShape.call(this)}function N(){mxCylinder.call(this)}function ba(){mxShape.call(this)}function la(){mxShape.call(this)}function u(){mxEllipse.call(this)}function H(){mxShape.call(this)}
+function P(){mxShape.call(this)}function T(){mxRectangleShape.call(this)}function S(){mxShape.call(this)}function da(){mxShape.call(this)}function R(){mxShape.call(this)}function ma(){mxShape.call(this)}function ra(){mxShape.call(this)}function xa(){mxCylinder.call(this)}function ta(){mxCylinder.call(this)}function Aa(){mxRectangleShape.call(this)}function Ca(){mxDoubleEllipse.call(this)}function Ba(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function Pa(){mxArrowConnector.call(this);
+this.spacing=0}function Ta(){mxActor.call(this)}function Oa(){mxRectangleShape.call(this)}function Xa(){mxActor.call(this)}function Ga(){mxActor.call(this)}function eb(){mxActor.call(this)}function bb(){mxActor.call(this)}function z(){mxActor.call(this)}function K(){mxActor.call(this)}function M(){mxActor.call(this)}function U(){mxActor.call(this)}function W(){mxActor.call(this)}function ha(){mxActor.call(this)}function na(){mxEllipse.call(this)}function ua(){mxEllipse.call(this)}function pa(){mxEllipse.call(this)}
+function za(){mxRhombus.call(this)}function Da(){mxEllipse.call(this)}function Ma(){mxEllipse.call(this)}function La(){mxEllipse.call(this)}function Ua(){mxEllipse.call(this)}function Sa(){mxActor.call(this)}function Fa(){mxActor.call(this)}function va(){mxActor.call(this)}function ya(c,l,x,p){mxShape.call(this);this.bounds=c;this.fill=l;this.stroke=x;this.strokewidth=null!=p?p:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Na(){mxConnector.call(this)}
+function Ja(c,l,x,p,v,A,B,ja,J,wa){B+=J;var oa=p.clone();p.x-=v*(2*B+J);p.y-=A*(2*B+J);v*=B+J;A*=B+J;return function(){c.ellipse(oa.x-v-B,oa.y-A-B,2*B,2*B);wa?c.fillAndStroke():c.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var c=null;if(null!=this.line)for(var l=0;l<this.line.length;l++){var x=this.line[l];null!=x&&(x=new mxRectangle(x.x,x.y,this.strokewidth,this.strokewidth),null==c?c=x:c.add(x))}this.bounds=null!=c?c:new mxRectangle};b.prototype.paintVertexShape=
+function(c,l,x,p,v){this.paintTableLine(c,this.line,0,0)};b.prototype.paintTableLine=function(c,l,x,p){if(null!=l){var v=null;c.begin();for(var A=0;A<l.length;A++){var B=l[A];null!=B&&(null==v?c.moveTo(B.x+x,B.y+p):null!=v&&c.lineTo(B.x+x,B.y+p));v=B}c.end();c.stroke()}};b.prototype.intersectsRectangle=function(c){var l=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var x=null,p=0;p<this.line.length&&!l;p++){var v=this.line[p];null!=v&&null!=x&&(l=mxUtils.rectangleIntersectsSegment(c,
+x,v));x=v}return l};mxCellRenderer.registerShape("tableLine",b);mxUtils.extend(e,mxSwimlane);e.prototype.getLabelBounds=function(c){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};e.prototype.paintVertexShape=function(c,l,x,p,v){var A=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,B=this.isHorizontal(),ja=this.getTitleSize();0==ja||this.outline?La.prototype.paintVertexShape.apply(this,
+arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),c.translate(-l,-x));A||this.outline||!(B&&ja<v||!B&&ja<p)||this.paintForeground(c,l,x,p,v)};e.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.state){var A=this.flipH,B=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH){var ja=A;A=B;B=ja}c.rotate(-this.getShapeRotation(),A,B,l+p/2,x+v/2);s=this.scale;l=this.bounds.x/s;x=this.bounds.y/s;p=this.bounds.width/s;v=this.bounds.height/
+s;this.paintTableForeground(c,l,x,p,v)}};e.prototype.paintTableForeground=function(c,l,x,p,v){p=this.state.view.graph.getTableLines(this.state.cell,"0"!=mxUtils.getValue(this.state.style,"rowLines","1"),"0"!=mxUtils.getValue(this.state.style,"columnLines","1"));for(v=0;v<p.length;v++)b.prototype.paintTableLine(c,p[v],l,x)};e.prototype.configurePointerEvents=function(c){0==this.getTitleSize()?c.pointerEvents=!1:mxSwimlane.prototype.configurePointerEvents.apply(this,arguments)};mxCellRenderer.registerShape("table",
+e);mxUtils.extend(k,e);k.prototype.paintForeground=function(){};mxCellRenderer.registerShape("tableRow",k);mxUtils.extend(n,mxCylinder);n.prototype.size=20;n.prototype.darkOpacity=0;n.prototype.darkOpacity2=0;n.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ja=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"darkOpacity2",this.darkOpacity2))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(A,v);c.lineTo(0,v-A);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(p-A,0),c.lineTo(p,A),c.lineTo(A,A),c.close(),c.fill()),0!=ja&&(c.setFillAlpha(Math.abs(ja)),c.setFillColor(0>ja?"#FFFFFF":"#000000"),c.begin(),c.moveTo(0,0),c.lineTo(A,
+A),c.lineTo(A,v),c.lineTo(0,v-A),c.close(),c.fill()),c.begin(),c.moveTo(A,v),c.lineTo(A,A),c.lineTo(0,0),c.moveTo(A,A),c.lineTo(p,A),c.end(),c.stroke())};n.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?(c=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(c,c,0,0)):null};mxCellRenderer.registerShape("cube",n);var Qa=Math.tan(mxUtils.toRadians(30)),Za=(.5-Qa)/2;mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(D,
+mxCylinder);D.prototype.size=6;D.prototype.paintVertexShape=function(c,l,x,p,v){c.setFillColor(this.stroke);var A=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;c.ellipse(l+.5*(p-A),x+.5*(v-A),A,A);c.fill();c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};mxCellRenderer.registerShape("waypoint",D);mxUtils.extend(t,mxActor);t.prototype.size=20;t.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/Qa);c.translate((p-l)/2,(v-l)/2+l/4);c.moveTo(0,
+.25*l);c.lineTo(.5*l,l*Za);c.lineTo(l,.25*l);c.lineTo(.5*l,(.5-Za)*l);c.lineTo(0,.25*l);c.close();c.end()};mxCellRenderer.registerShape("isoRectangle",t);mxUtils.extend(E,mxCylinder);E.prototype.size=20;E.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(p,v/(.5+Qa));A?(c.moveTo(0,.25*l),c.lineTo(.5*l,(.5-Za)*l),c.lineTo(l,.25*l),c.moveTo(.5*l,(.5-Za)*l),c.lineTo(.5*l,(1-Za)*l)):(c.translate((p-l)/2,(v-l)/2),c.moveTo(0,.25*l),c.lineTo(.5*l,l*Za),c.lineTo(l,.25*l),c.lineTo(l,.75*l),c.lineTo(.5*
+l,(1-Za)*l),c.lineTo(0,.75*l),c.close());c.end()};mxCellRenderer.registerShape("isoCube",E);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(c,l,x,p,v,A){l=Math.min(v/2,Math.round(v/8)+this.strokewidth-1);if(A&&null!=this.fill||!A&&null==this.fill)c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,l/2),c.moveTo(0,l),c.curveTo(0,2*l,p,2*l,p,l),A||(c.stroke(),c.begin()),c.translate(0,
+-l);A||(c.moveTo(0,l),c.curveTo(0,-l/3,p,-l/3,p,l),c.lineTo(p,v-l),c.curveTo(p,v+l/3,0,v+l/3,0,v-l),c.close())};d.prototype.getLabelMargins=function(c){return new mxRectangle(0,2.5*Math.min(c.height/2,Math.round(c.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(f,mxCylinder);f.prototype.size=30;f.prototype.darkOpacity=0;f.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",
+this.size))))),B=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));c.translate(l,x);c.begin();c.moveTo(0,0);c.lineTo(p-A,0);c.lineTo(p,A);c.lineTo(p,v);c.lineTo(0,v);c.lineTo(0,0);c.close();c.end();c.fillAndStroke();this.outline||(c.setShadow(!1),0!=B&&(c.setFillAlpha(Math.abs(B)),c.setFillColor(0>B?"#FFFFFF":"#000000"),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),c.close(),c.fill()),c.begin(),c.moveTo(p-A,0),c.lineTo(p-A,A),c.lineTo(p,A),
+c.end(),c.stroke())};mxCellRenderer.registerShape("note",f);mxUtils.extend(g,f);mxCellRenderer.registerShape("note2",g);g.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,0)}return null};mxUtils.extend(m,mxShape);m.prototype.isoAngle=15;m.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,
+"isoAngle",this.isoAngle))))*Math.PI/200;A=Math.min(p*Math.tan(A),.5*v);c.translate(l,x);c.begin();c.moveTo(.5*p,0);c.lineTo(p,A);c.lineTo(p,v-A);c.lineTo(.5*p,v);c.lineTo(0,v-A);c.lineTo(0,A);c.close();c.fillAndStroke();c.setShadow(!1);c.begin();c.moveTo(0,A);c.lineTo(.5*p,2*A);c.lineTo(p,A);c.moveTo(.5*p,2*A);c.lineTo(.5*p,v);c.stroke()};mxCellRenderer.registerShape("isoCube2",m);mxUtils.extend(q,mxShape);q.prototype.size=15;q.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*
+v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke())};mxCellRenderer.registerShape("cylinder2",q);mxUtils.extend(y,mxCylinder);y.prototype.size=
+15;y.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.max(0,Math.min(.5*v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"lid",!0);c.translate(l,x);0==A?(c.rect(0,0,p,v),c.fillAndStroke()):(c.begin(),B?(c.moveTo(0,A),c.arcTo(.5*p,A,0,0,1,.5*p,0),c.arcTo(.5*p,A,0,0,1,p,A)):(c.moveTo(0,0),c.arcTo(.5*p,A,0,0,0,.5*p,A),c.arcTo(.5*p,A,0,0,0,p,0)),c.lineTo(p,v-A),c.arcTo(.5*p,A,0,0,1,.5*p,v),c.arcTo(.5*p,A,0,0,1,0,v-A),c.close(),c.fillAndStroke(),c.setShadow(!1),
+B&&(c.begin(),c.moveTo(p,A),c.arcTo(.5*p,A,0,0,1,.5*p,2*A),c.arcTo(.5*p,A,0,0,1,0,A),c.stroke()))};mxCellRenderer.registerShape("cylinder3",y);mxUtils.extend(F,mxActor);F.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p/2,.5*v,p,0);c.quadTo(.5*p,v/2,p,v);c.quadTo(p/2,.5*v,0,v);c.quadTo(.5*p,v/2,0,0);c.end()};mxCellRenderer.registerShape("switch",F);mxUtils.extend(C,mxCylinder);C.prototype.tabWidth=60;C.prototype.tabHeight=20;C.prototype.tabPosition="right";C.prototype.arcSize=.1;
+C.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var A=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),B=mxUtils.getValue(this.style,"rounded",!1),ja=mxUtils.getValue(this.style,"absoluteArcSize",!1),J=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));ja||(J*=Math.min(p,v));
+J=Math.min(J,.5*p,.5*(v-x));l=Math.max(l,J);l=Math.min(p-J,l);B||(J=0);c.begin();"left"==A?(c.moveTo(Math.max(J,0),x),c.lineTo(Math.max(J,0),0),c.lineTo(l,0),c.lineTo(l,x)):(c.moveTo(p-l,x),c.lineTo(p-l,0),c.lineTo(p-Math.max(J,0),0),c.lineTo(p-Math.max(J,0),x));B?(c.moveTo(0,J+x),c.arcTo(J,J,0,0,1,J,x),c.lineTo(p-J,x),c.arcTo(J,J,0,0,1,p,J+x),c.lineTo(p,v-J),c.arcTo(J,J,0,0,1,p-J,v),c.lineTo(J,v),c.arcTo(J,J,0,0,1,0,v-J)):(c.moveTo(0,x),c.lineTo(p,x),c.lineTo(p,v),c.lineTo(0,v));c.close();c.fillAndStroke();
+c.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(c.begin(),c.moveTo(p-30,x+20),c.lineTo(p-20,x+10),c.lineTo(p-10,x+20),c.close(),c.stroke())};mxCellRenderer.registerShape("folder",C);C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,
+"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-
+l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};mxUtils.extend(I,mxCylinder);I.prototype.arcSize=.1;I.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);var A=mxUtils.getValue(this.style,"rounded",!1),B=mxUtils.getValue(this.style,"absoluteArcSize",!1);l=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x=mxUtils.getValue(this.style,"umlStateConnection",null);B||(l*=Math.min(p,v));l=Math.min(l,.5*p,.5*v);A||(l=0);A=0;null!=x&&(A=10);c.begin();c.moveTo(A,
+l);c.arcTo(l,l,0,0,1,A+l,0);c.lineTo(p-l,0);c.arcTo(l,l,0,0,1,p,l);c.lineTo(p,v-l);c.arcTo(l,l,0,0,1,p-l,v);c.lineTo(A+l,v);c.arcTo(l,l,0,0,1,A,v-l);c.close();c.fillAndStroke();c.setShadow(!1);"collapseState"==mxUtils.getValue(this.style,"umlStateSymbol",null)&&(c.roundrect(p-40,v-20,10,10,3,3),c.stroke(),c.roundrect(p-20,v-20,10,10,3,3),c.stroke(),c.begin(),c.moveTo(p-30,v-15),c.lineTo(p-20,v-15),c.stroke());"connPointRefEntry"==x?(c.ellipse(0,.5*v-10,20,20),c.fillAndStroke()):"connPointRefExit"==
+x&&(c.ellipse(0,.5*v-10,20,20),c.fillAndStroke(),c.begin(),c.moveTo(5,.5*v-5),c.lineTo(15,.5*v+5),c.moveTo(15,.5*v-5),c.lineTo(5,.5*v+5),c.stroke())};I.prototype.getLabelMargins=function(c){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",I);mxUtils.extend(G,mxActor);G.prototype.size=30;G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=
+function(c,l,x,p,v){l=Math.max(0,Math.min(p,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("card",G);mxUtils.extend(Z,mxActor);Z.prototype.size=.4;Z.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));c.moveTo(0,l/2);c.quadTo(p/4,1.4*l,p/2,l/2);c.quadTo(3*p/4,l*(1-1.4),p,l/2);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};Z.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",this.size),x=c.width,p=c.height;if(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return l*=
+p,new mxRectangle(c.x,c.y+l,x,p-2*l);l*=x;return new mxRectangle(c.x+l,c.y,x-2*l,p)}return c};mxCellRenderer.registerShape("tape",Z);mxUtils.extend(ca,mxActor);ca.prototype.size=.3;ca.prototype.getLabelMargins=function(c){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*c.height):null};ca.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(0,
+0);c.lineTo(p,0);c.lineTo(p,v-l/2);c.quadTo(3*p/4,v-1.4*l,p/2,v-l/2);c.quadTo(p/4,v-l*(1-1.4),0,v-l/2);c.lineTo(0,l/2);c.close();c.end()};mxCellRenderer.registerShape("document",ca);var cb=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(c,l,x,p){var v=mxUtils.getValue(this.style,"size");return null!=v?p*Math.max(0,Math.min(1,v)):cb.apply(this,arguments)};mxCylinder.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=2*mxUtils.getValue(this.style,
+"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,c.height*l),0,0)}return null};y.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(l/=2);return new mxRectangle(0,Math.min(c.height*this.scale,2*l*this.scale),0,Math.max(0,.3*l*this.scale))}return null};C.prototype.getLabelMargins=function(c){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var l=mxUtils.getValue(this.style,
+"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var x=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;l=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),v=mxUtils.getValue(this.style,"absoluteArcSize",!1),A=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));v||(A*=Math.min(c.width,c.height));A=Math.min(A,.5*c.width,.5*(c.height-l));p||(A=0);return"left"==mxUtils.getValue(this.style,"tabPosition",
+this.tabPosition)?new mxRectangle(A,0,Math.min(c.width,c.width-x),Math.min(c.height,c.height-l)):new mxRectangle(Math.min(c.width,c.width-x),0,A,Math.min(c.height,c.height-l))}return new mxRectangle(0,Math.min(c.height,l),0,0)}return null};I.prototype.getLabelMargins=function(c){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(c){if(mxUtils.getValue(this.style,
+"boundedLbl",!1)){var l=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(c.height*this.scale,l*this.scale),0,Math.max(0,l*this.scale))}return null};mxUtils.extend(aa,mxActor);aa.prototype.size=.2;aa.prototype.fixedSize=20;aa.prototype.isRoundable=function(){return!0};aa.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p,0),new mxPoint(p-l,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("parallelogram",aa);mxUtils.extend(Y,mxActor);Y.prototype.size=.2;Y.prototype.fixedSize=20;Y.prototype.isRoundable=function(){return!0};Y.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
+p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("trapezoid",Y);mxUtils.extend(qa,mxActor);qa.prototype.size=.5;qa.prototype.redrawPath=function(c,l,x,p,v){c.setFillColor(null);
+l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(p,0),new mxPoint(l,0),new mxPoint(l,v/2),new mxPoint(0,v/2),new mxPoint(l,v/2),new mxPoint(l,v),new mxPoint(p,v)],this.isRounded,x,!1);c.end()};mxCellRenderer.registerShape("curlyBracket",qa);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(c,l,x,p,v){c.setStrokeWidth(1);c.setFillColor(this.stroke);
+l=p/5;c.rect(0,0,l,v);c.fillAndStroke();c.rect(2*l,0,l,v);c.fillAndStroke();c.rect(4*l,0,l,v);c.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",Q);X.prototype.moveTo=function(c,l){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;this.firstX=c;this.firstY=l};X.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)};
+X.prototype.quadTo=function(c,l,x,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=p};X.prototype.curveTo=function(c,l,x,p,v,A){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=v;this.lastY=A};X.prototype.arcTo=function(c,l,x,p,v,A,B){this.originalArcTo.apply(this.canvas,arguments);this.lastX=A;this.lastY=B};X.prototype.lineTo=function(c,l){if(null!=this.lastX&&null!=this.lastY){var x=function(oa){return"number"===typeof oa?oa?0>oa?-1:1:oa===oa?0:NaN:NaN},p=
+Math.abs(c-this.lastX),v=Math.abs(l-this.lastY),A=Math.sqrt(p*p+v*v);if(2>A){this.originalLineTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=l;return}var B=Math.round(A/10),ja=this.defaultVariation;5>B&&(B=5,ja/=3);var J=x(c-this.lastX)*p/B;x=x(l-this.lastY)*v/B;p/=A;v/=A;for(A=0;A<B;A++){var wa=(Math.random()-.5)*ja;this.originalLineTo.call(this.canvas,J*A+this.lastX-wa*v,x*A+this.lastY-wa*p)}this.originalLineTo.call(this.canvas,c,l)}else this.originalLineTo.apply(this.canvas,arguments);
+this.lastX=c;this.lastY=l};X.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 fb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(c){fb.apply(this,arguments);null==c.handJiggle&&(c.handJiggle=this.createHandJiggle(c))};var qb=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(c){qb.apply(this,arguments);null!=c.handJiggle&&(c.handJiggle.destroy(),delete c.handJiggle)};mxShape.prototype.createComicCanvas=function(c){return new X(c,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(c){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(c)};mxRhombus.prototype.defaultJiggle=2;var ub=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"))&&ub.apply(this,arguments)};var ab=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(c,l,x,p,v){if(null==c.handJiggle||c.handJiggle.constructor!=X)ab.apply(this,arguments);else{var A=!0;null!=this.style&&(A="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
"1"));if(A||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)A||null!=this.fill&&this.fill!=mxConstants.NONE||(c.pointerEvents=!1),c.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?A=Math.min(p/2,Math.min(v/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,A=Math.min(p*
-A,v*A)),c.moveTo(l+A,x),c.lineTo(l+p-A,x),c.quadTo(l+p,x,l+p,x+A),c.lineTo(l+p,x+v-A),c.quadTo(l+p,x+v,l+p-A,x+v),c.lineTo(l+A,x+v),c.quadTo(l,x+v,l,x+v-A),c.lineTo(l,x+A),c.quadTo(l,x,l+A,x)):(c.moveTo(l,x),c.lineTo(l+p,x),c.lineTo(l+p,x+v),c.lineTo(l,x+v),c.lineTo(l,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=.1;ea.prototype.fixedSize=!1;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
+A,v*A)),c.moveTo(l+A,x),c.lineTo(l+p-A,x),c.quadTo(l+p,x,l+p,x+A),c.lineTo(l+p,x+v-A),c.quadTo(l+p,x+v,l+p-A,x+v),c.lineTo(l+A,x+v),c.quadTo(l,x+v,l,x+v-A),c.lineTo(l,x+A),c.quadTo(l,x,l+A,x)):(c.moveTo(l,x),c.lineTo(l+p,x),c.lineTo(l+p,x+v),c.lineTo(l,x+v),c.lineTo(l,x)),c.close(),c.end(),c.fillAndStroke()}};mxUtils.extend(fa,mxRectangleShape);fa.prototype.size=.1;fa.prototype.fixedSize=!1;fa.prototype.isHtmlAllowed=function(){return!1};fa.prototype.getLabelBounds=function(c){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var l=c.width,x=c.height;c=new mxRectangle(c.x,c.y,l,x);var p=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded){var v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;p=Math.max(p,Math.min(l*v,x*v))}c.x+=Math.round(p);c.width-=Math.round(2*p);return c}return c};
-ea.prototype.paintForeground=function(c,l,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.moveTo(l+p-B,x);c.lineTo(l+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
-arguments)};mxCellRenderer.registerShape("process",ea);mxCellRenderer.registerShape("process2",ea);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,l,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,l,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ja,mxHexagon);ja.prototype.size=30;ja.prototype.position=.5;ja.prototype.position2=.5;ja.prototype.base=20;ja.prototype.getLabelMargins=function(){return new mxRectangle(0,
-0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(c,l,x,p,v){l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
-this.position2)))),ia=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ia),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,l,!0,[4])};mxCellRenderer.registerShape("callout",ja);mxUtils.extend(V,mxActor);V.prototype.size=.2;V.prototype.fixedSize=20;V.prototype.isRoundable=function(){return!0};V.prototype.redrawPath=function(c,l,x,p,
+fa.prototype.paintForeground=function(c,l,x,p,v){var A=mxUtils.getValue(this.style,"fixedSize",this.fixedSize),B=parseFloat(mxUtils.getValue(this.style,"size",this.size));B=A?Math.max(0,Math.min(p,B)):p*Math.max(0,Math.min(1,B));this.isRounded&&(A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,B=Math.max(B,Math.min(p*A,v*A)));B=Math.round(B);c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.moveTo(l+p-B,x);c.lineTo(l+p-B,x+v);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+arguments)};mxCellRenderer.registerShape("process",fa);mxCellRenderer.registerShape("process2",fa);mxUtils.extend(ka,mxRectangleShape);ka.prototype.paintBackground=function(c,l,x,p,v){c.setFillColor(mxConstants.NONE);c.rect(l,x,p,v);c.fill()};ka.prototype.paintForeground=function(c,l,x,p,v){};mxCellRenderer.registerShape("transparent",ka);mxUtils.extend(ia,mxHexagon);ia.prototype.size=30;ia.prototype.position=.5;ia.prototype.position2=.5;ia.prototype.base=20;ia.prototype.getLabelMargins=function(){return new mxRectangle(0,
+0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(c,l,x,p,v){l=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var A=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),B=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
+this.position2)))),ja=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,v-x),new mxPoint(Math.min(p,A+ja),v-x),new mxPoint(B,v),new mxPoint(Math.max(0,A),v-x),new mxPoint(0,v-x)],this.isRounded,l,!0,[4])};mxCellRenderer.registerShape("callout",ia);mxUtils.extend(V,mxActor);V.prototype.size=.2;V.prototype.fixedSize=20;V.prototype.isRoundable=function(){return!0};V.prototype.redrawPath=function(c,l,x,p,
v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(0,v),new mxPoint(l,v/2)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("step",
-V);mxUtils.extend(J,mxHexagon);J.prototype.size=.25;J.prototype.fixedSize=20;J.prototype.isRoundable=function(){return!0};J.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,
-0),new mxPoint(p-l,0),new mxPoint(p,.5*v),new mxPoint(p-l,v),new mxPoint(l,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",J);mxUtils.extend(W,mxRectangleShape);W.prototype.isHtmlAllowed=function(){return!1};W.prototype.paintForeground=function(c,l,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(l+p/2,x+A);c.lineTo(l+p/2,x+v-A);c.moveTo(l+A,x+v/2);c.lineTo(l+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-W);var db=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};mxRhombus.prototype.paintVertexShape=function(c,l,x,p,v){db.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
-0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),db.apply(this,[c,l,x,p,v]))}};mxUtils.extend(Q,mxRectangleShape);Q.prototype.isHtmlAllowed=function(){return!1};Q.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};Q.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ia=this.style["symbol"+A+"Align"],K=this.style["symbol"+A+"VerticalAlign"],wa=this.style["symbol"+A+"Width"],oa=this.style["symbol"+A+"Height"],Za=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
-Za,hb=this.style["symbol"+A+"ArcSpacing"];null!=hb&&(hb*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),Za+=hb,jb+=hb);hb=l;var Ea=x;hb=ia==mxConstants.ALIGN_CENTER?hb+(p-wa)/2:ia==mxConstants.ALIGN_RIGHT?hb+(p-wa-Za):hb+Za;Ea=K==mxConstants.ALIGN_MIDDLE?Ea+(v-oa)/2:K==mxConstants.ALIGN_BOTTOM?Ea+(v-oa-jb):Ea+jb;c.save();ia=new B;ia.style=this.style;B.prototype.paintVertexShape.call(ia,c,hb,Ea,wa,oa);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
-mxCellRenderer.registerShape("ext",Q);mxUtils.extend(S,mxCylinder);S.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",S);mxUtils.extend(ha,mxShape);ha.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
-2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ha);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
-la);mxUtils.extend(u,mxEllipse);u.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",u);mxUtils.extend(H,mxShape);H.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(O,mxShape);
-O.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};O.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};O.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",O);mxUtils.extend(T,mxRectangleShape);T.prototype.size=
+V);mxUtils.extend(L,mxHexagon);L.prototype.size=.25;L.prototype.fixedSize=20;L.prototype.isRoundable=function(){return!0};L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,
+0),new mxPoint(p-l,0),new mxPoint(p,.5*v),new mxPoint(p-l,v),new mxPoint(l,v),new mxPoint(0,.5*v)],this.isRounded,x,!0)};mxCellRenderer.registerShape("hexagon",L);mxUtils.extend(ea,mxRectangleShape);ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.paintForeground=function(c,l,x,p,v){var A=Math.min(p/5,v/5)+1;c.begin();c.moveTo(l+p/2,x+A);c.lineTo(l+p/2,x+v-A);c.moveTo(l+A,x+v/2);c.lineTo(l+p-A,x+v/2);c.end();c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
+mxCellRenderer.registerShape("plus",ea);var db=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};mxRhombus.prototype.paintVertexShape=function(c,l,x,p,v){db.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var A=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
+0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&(c.setShadow(!1),db.apply(this,[c,l,x,p,v]))}};mxUtils.extend(O,mxRectangleShape);O.prototype.isHtmlAllowed=function(){return!1};O.prototype.getLabelBounds=function(c){if(1==this.style["double"]){var l=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(c.x+l,c.y+l,c.width-2*l,c.height-2*l)}return c};O.prototype.paintForeground=function(c,l,x,p,v){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var A=
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);l+=A;x+=A;p-=2*A;v-=2*A;0<p&&0<v&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}c.setDashed(!1);A=0;do{var B=mxCellRenderer.defaultShapes[this.style["symbol"+A]];if(null!=B){var ja=this.style["symbol"+A+"Align"],J=this.style["symbol"+A+"VerticalAlign"],wa=this.style["symbol"+A+"Width"],oa=this.style["symbol"+A+"Height"],$a=this.style["symbol"+A+"Spacing"]||0,jb=this.style["symbol"+A+"VSpacing"]||
+$a,hb=this.style["symbol"+A+"ArcSpacing"];null!=hb&&(hb*=this.getArcSize(p+this.strokewidth,v+this.strokewidth),$a+=hb,jb+=hb);hb=l;var Ea=x;hb=ja==mxConstants.ALIGN_CENTER?hb+(p-wa)/2:ja==mxConstants.ALIGN_RIGHT?hb+(p-wa-$a):hb+$a;Ea=J==mxConstants.ALIGN_MIDDLE?Ea+(v-oa)/2:J==mxConstants.ALIGN_BOTTOM?Ea+(v-oa-jb):Ea+jb;c.save();ja=new B;ja.style=this.style;B.prototype.paintVertexShape.call(ja,c,hb,Ea,wa,oa);c.restore()}A++}while(null!=B)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};
+mxCellRenderer.registerShape("ext",O);mxUtils.extend(N,mxCylinder);N.prototype.redrawPath=function(c,l,x,p,v,A){A?(c.moveTo(0,0),c.lineTo(p/2,v/2),c.lineTo(p,0),c.end()):(c.moveTo(0,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(0,v),c.close())};mxCellRenderer.registerShape("message",N);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.ellipse(p/4,0,p/2,v/4);c.fillAndStroke();c.begin();c.moveTo(p/2,v/4);c.lineTo(p/2,2*v/3);c.moveTo(p/2,v/3);c.lineTo(0,v/3);c.moveTo(p/
+2,v/3);c.lineTo(p,v/3);c.moveTo(p/2,2*v/3);c.lineTo(0,v);c.moveTo(p/2,2*v/3);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlActor",ba);mxUtils.extend(la,mxShape);la.prototype.getLabelMargins=function(c){return new mxRectangle(c.width/6,0,0,0)};la.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,v/4);c.lineTo(0,3*v/4);c.end();c.stroke();c.begin();c.moveTo(0,v/2);c.lineTo(p/6,v/2);c.end();c.stroke();c.ellipse(p/6,0,5*p/6,v);c.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+la);mxUtils.extend(u,mxEllipse);u.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/8,x+v);c.lineTo(l+7*p/8,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("umlEntity",u);mxUtils.extend(H,mxShape);H.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(p,0);c.lineTo(0,v);c.moveTo(0,0);c.lineTo(p,v);c.end();c.stroke()};mxCellRenderer.registerShape("umlDestroy",H);mxUtils.extend(P,mxShape);
+P.prototype.getLabelBounds=function(c){return new mxRectangle(c.x,c.y+c.height/8,c.width,7*c.height/8)};P.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,0);c.end();c.stroke();c.ellipse(0,v/8,p,7*v/8);c.fillAndStroke()};P.prototype.paintForeground=function(c,l,x,p,v){c.begin();c.moveTo(3*p/8,v/8*1.1);c.lineTo(5*p/8,v/4);c.end();c.stroke()};mxCellRenderer.registerShape("umlControl",P);mxUtils.extend(T,mxRectangleShape);T.prototype.size=
40;T.prototype.isHtmlAllowed=function(){return!1};T.prototype.getLabelBounds=function(c){var l=Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(c.x,c.y,c.width,l)};T.prototype.paintBackground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),B=mxUtils.getValue(this.style,"participant");null==B||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,c,l,
x,p,A):(B=this.state.view.graph.cellRenderer.getShape(B),null!=B&&B!=T&&(B=new B,B.apply(this.state),c.save(),B.paintVertexShape(c,l,x,p,A),c.restore()));A<v&&(c.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),c.begin(),c.moveTo(l+p/2,x+A),c.lineTo(l+p/2,x+v),c.end(),c.stroke())};T.prototype.paintForeground=function(c,l,x,p,v){var A=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,c,l,x,p,Math.min(v,
-A))};mxCellRenderer.registerShape("umlLifeline",T);mxUtils.extend(R,mxShape);R.prototype.width=60;R.prototype.height=30;R.prototype.corner=10;R.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};R.prototype.paintBackground=function(c,l,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
-"width",this.width)))),ia=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),K=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);K!=mxConstants.NONE&&(c.setFillColor(K),c.rect(l,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,l,x,p,v),c.setGradient(this.fill,this.gradient,l,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
-c.moveTo(l,x);c.lineTo(l+B,x);c.lineTo(l+B,x+Math.max(0,ia-1.5*A));c.lineTo(l+Math.max(0,B-A),x+ia);c.lineTo(l,x+ia);c.close();c.fillAndStroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+p,x);c.lineTo(l+p,x+v);c.lineTo(l,x+v);c.lineTo(l,x+ia);c.stroke()};mxCellRenderer.registerShape("umlFrame",R);mxPerimeter.CenterPerimeter=function(c,l,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
+A))};mxCellRenderer.registerShape("umlLifeline",T);mxUtils.extend(S,mxShape);S.prototype.width=60;S.prototype.height=30;S.prototype.corner=10;S.prototype.getLabelMargins=function(c){return new mxRectangle(0,0,c.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),c.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};S.prototype.paintBackground=function(c,l,x,p,v){var A=this.corner,B=Math.min(p,Math.max(A,parseFloat(mxUtils.getValue(this.style,
+"width",this.width)))),ja=Math.min(v,Math.max(1.5*A,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),J=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);J!=mxConstants.NONE&&(c.setFillColor(J),c.rect(l,x,p,v),c.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(c,l,x,p,v),c.setGradient(this.fill,this.gradient,l,x,p,v,this.gradientDirection)):c.setFillColor(this.fill);c.begin();
+c.moveTo(l,x);c.lineTo(l+B,x);c.lineTo(l+B,x+Math.max(0,ja-1.5*A));c.lineTo(l+Math.max(0,B-A),x+ja);c.lineTo(l,x+ja);c.close();c.fillAndStroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+p,x);c.lineTo(l+p,x+v);c.lineTo(l,x+v);c.lineTo(l,x+ja);c.stroke()};mxCellRenderer.registerShape("umlFrame",S);mxPerimeter.CenterPerimeter=function(c,l,x,p){return new mxPoint(c.getCenterX(),c.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(c,
l,x,p){p=T.prototype.size;null!=l&&(p=mxUtils.getValue(l.style,"size",p)*l.view.scale);l=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;x.x<c.getCenterX()&&(l=-1*(l+1));return new mxPoint(c.getCenterX()+l,Math.min(c.y+c.height,Math.max(c.y+p,x.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(c,l,x,p){p=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(c,l,x,p){p=parseFloat(l.style[mxConstants.STYLE_STROKEWIDTH]||1)*l.view.scale/2-1;null!=l.style.backboneSize&&(p+=parseFloat(l.style.backboneSize)*l.view.scale/2-1);if("south"==l.style[mxConstants.STYLE_DIRECTION]||"north"==l.style[mxConstants.STYLE_DIRECTION])return x.x<c.getCenterX()&&(p=-1*(p+1)),new mxPoint(c.getCenterX()+p,Math.min(c.y+c.height,Math.max(c.y,x.y)));x.y<c.getCenterY()&&(p=-1*(p+1));return new mxPoint(Math.min(c.x+
-c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,l,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(l.style,"size",ja.prototype.size))*l.view.scale))),l.style),l,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
-l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?ba.prototype.fixedSize:ba.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ia=c.y,K=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+K,ia+v),new mxPoint(B+
-K,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia)]):(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K,ia),new mxPoint(B+K-v,ia+wa),new mxPoint(B,ia+wa),new mxPoint(B+v,ia)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ia,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,l,x,p){var v="0"!=
-mxUtils.getValue(l.style,"fixedSize","0"),A=v?Z.prototype.fixedSize:Z.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ia=c.y,K=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K-v,ia),new mxPoint(B+K,ia+wa),new mxPoint(B,ia+wa),new mxPoint(B+
-v,ia)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+K,ia),new mxPoint(B+K-v,ia+wa),new mxPoint(B+v,ia+wa),new mxPoint(B,ia)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia+v),new mxPoint(B+K,ia),new mxPoint(B+K,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+
-K,ia+v),new mxPoint(B+K,ia+wa-v),new mxPoint(B,ia+wa),new mxPoint(B,ia)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+K?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ia,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?V.prototype.fixedSize:V.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,
-ia=c.y,K=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(B+K-v,ia),new mxPoint(B+K,c),new mxPoint(B+K-v,ia+wa),new mxPoint(B,ia+wa),new mxPoint(B+v,c),new mxPoint(B,ia)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,Math.min(1,
-A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K,ia),new mxPoint(B+K-v,c),new mxPoint(B+K,ia+wa),new mxPoint(B+v,ia+wa),new mxPoint(B,c),new mxPoint(B+v,ia)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia+v),new mxPoint(oa,ia),new mxPoint(B+K,ia+v),new mxPoint(B+K,ia+wa),new mxPoint(oa,ia+wa-v),new mxPoint(B,ia+wa),new mxPoint(B,ia+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(B,ia),new mxPoint(oa,ia+
-v),new mxPoint(B+K,ia),new mxPoint(B+K,ia+wa-v),new mxPoint(oa,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+K?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ia,oa,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?J.prototype.fixedSize:J.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=
-c.x,ia=c.y,K=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ia=[new mxPoint(oa,ia),new mxPoint(B+K,ia+v),new mxPoint(B+K,ia+wa-v),new mxPoint(oa,ia+wa),new mxPoint(B,ia+wa-v),new mxPoint(B,ia+v),new mxPoint(oa,ia)]):(v=v?Math.max(0,Math.min(K,A)):K*Math.max(0,
-Math.min(1,A)),ia=[new mxPoint(B+v,ia),new mxPoint(B+K-v,ia),new mxPoint(B+K,c),new mxPoint(B+K-v,ia+wa),new mxPoint(B+v,ia+wa),new mxPoint(B,c),new mxPoint(B+v,ia)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+K?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ia,oa,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(da,mxShape);da.prototype.size=10;da.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
-c.translate(l,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",da);mxUtils.extend(P,mxShape);P.prototype.size=10;P.prototype.inset=2;P.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(l,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
-c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",P);mxUtils.extend(ma,mxShape);ma.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",ma);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
+c.width,Math.max(c.x,x.x)),c.getCenterY()+p)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(c,l,x,p){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(c,new mxRectangle(0,0,0,Math.max(0,Math.min(c.height,parseFloat(mxUtils.getValue(l.style,"size",ia.prototype.size))*l.view.scale))),l.style),l,x,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(c,
+l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?aa.prototype.fixedSize:aa.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ja=c.y,J=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+J,ja+v),new mxPoint(B+
+J,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja)]):(v=v?Math.max(0,Math.min(.5*J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J,ja),new mxPoint(B+J-v,ja+wa),new mxPoint(B,ja+wa),new mxPoint(B+v,ja)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+J?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ja,c,x)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(c,l,x,p){var v="0"!=
+mxUtils.getValue(l.style,"fixedSize","0"),A=v?Y.prototype.fixedSize:Y.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,ja=c.y,J=c.width,wa=c.height;l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(.5*J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J-v,ja),new mxPoint(B+J,ja+wa),new mxPoint(B,ja+wa),new mxPoint(B+
+v,ja)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+J,ja),new mxPoint(B+J-v,ja+wa),new mxPoint(B+v,ja+wa),new mxPoint(B,ja)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja+v),new mxPoint(B+J,ja),new mxPoint(B+J,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+
+J,ja+v),new mxPoint(B+J,ja+wa-v),new mxPoint(B,ja+wa),new mxPoint(B,ja)]);wa=c.getCenterX();c=c.getCenterY();c=new mxPoint(wa,c);p&&(x.x<B||x.x>B+J?c.y=x.y:c.x=x.x);return mxUtils.getPerimeterPoint(ja,c,x)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?V.prototype.fixedSize:V.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=c.x,
+ja=c.y,J=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_EAST?(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(B+J-v,ja),new mxPoint(B+J,c),new mxPoint(B+J-v,ja+wa),new mxPoint(B,ja+wa),new mxPoint(B+v,c),new mxPoint(B,ja)]):l==mxConstants.DIRECTION_WEST?(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,Math.min(1,
+A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J,ja),new mxPoint(B+J-v,c),new mxPoint(B+J,ja+wa),new mxPoint(B+v,ja+wa),new mxPoint(B,c),new mxPoint(B+v,ja)]):l==mxConstants.DIRECTION_NORTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja+v),new mxPoint(oa,ja),new mxPoint(B+J,ja+v),new mxPoint(B+J,ja+wa),new mxPoint(oa,ja+wa-v),new mxPoint(B,ja+wa),new mxPoint(B,ja+v)]):(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(B,ja),new mxPoint(oa,ja+
+v),new mxPoint(B+J,ja),new mxPoint(B+J,ja+wa-v),new mxPoint(oa,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+J?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ja,oa,x)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(c,l,x,p){var v="0"!=mxUtils.getValue(l.style,"fixedSize","0"),A=v?L.prototype.fixedSize:L.prototype.size;null!=l&&(A=mxUtils.getValue(l.style,"size",A));v&&(A*=l.view.scale);var B=
+c.x,ja=c.y,J=c.width,wa=c.height,oa=c.getCenterX();c=c.getCenterY();l=null!=l?mxUtils.getValue(l.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;l==mxConstants.DIRECTION_NORTH||l==mxConstants.DIRECTION_SOUTH?(v=v?Math.max(0,Math.min(wa,A)):wa*Math.max(0,Math.min(1,A)),ja=[new mxPoint(oa,ja),new mxPoint(B+J,ja+v),new mxPoint(B+J,ja+wa-v),new mxPoint(oa,ja+wa),new mxPoint(B,ja+wa-v),new mxPoint(B,ja+v),new mxPoint(oa,ja)]):(v=v?Math.max(0,Math.min(J,A)):J*Math.max(0,
+Math.min(1,A)),ja=[new mxPoint(B+v,ja),new mxPoint(B+J-v,ja),new mxPoint(B+J,c),new mxPoint(B+J-v,ja+wa),new mxPoint(B+v,ja+wa),new mxPoint(B,c),new mxPoint(B+v,ja)]);oa=new mxPoint(oa,c);p&&(x.x<B||x.x>B+J?oa.y=x.y:oa.x=x.x);return mxUtils.getPerimeterPoint(ja,oa,x)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(da,mxShape);da.prototype.size=10;da.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size));
+c.translate(l,x);c.ellipse((p-A)/2,0,A,A);c.fillAndStroke();c.begin();c.moveTo(p/2,A);c.lineTo(p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("lollipop",da);mxUtils.extend(R,mxShape);R.prototype.size=10;R.prototype.inset=2;R.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,"size",this.size)),B=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;c.translate(l,x);c.begin();c.moveTo(p/2,A+B);c.lineTo(p/2,v);c.end();c.stroke();
+c.begin();c.moveTo((p-A)/2-B,A/2);c.quadTo((p-A)/2-B,A+B,p/2,A+B);c.quadTo((p+A)/2+B,A+B,(p+A)/2+B,A/2);c.end();c.stroke()};mxCellRenderer.registerShape("requires",R);mxUtils.extend(ma,mxShape);ma.prototype.paintBackground=function(c,l,x,p,v){c.translate(l,x);c.begin();c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.end();c.stroke()};mxCellRenderer.registerShape("requiredInterface",ma);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(c,l,x,p,v){var A=parseFloat(mxUtils.getValue(this.style,
"inset",this.inset))+this.strokewidth;c.translate(l,x);c.ellipse(0,A,p-2*A,v-2*A);c.fillAndStroke();c.begin();c.moveTo(p/2,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p/2,v);c.end();c.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(xa,mxCylinder);xa.prototype.jettyWidth=20;xa.prototype.jettyHeight=10;xa.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",
-this.jettyHeight));x=B/2;B=x+B/2;var ia=Math.min(l,v-l),K=Math.min(ia+2*l,v-l);A?(c.moveTo(x,ia),c.lineTo(B,ia),c.lineTo(B,ia+l),c.lineTo(x,ia+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,K),c.lineTo(x,ia+l),c.lineTo(0,ia+l),c.lineTo(0,ia),c.lineTo(x,ia),c.close());c.end()};mxCellRenderer.registerShape("module",xa);mxUtils.extend(ta,mxCylinder);ta.prototype.jettyWidth=
-32;ta.prototype.jettyHeight=12;ta.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ia=.3*v-l/2,K=.7*v-l/2;A?(c.moveTo(x,ia),c.lineTo(B,ia),c.lineTo(B,ia+l),c.lineTo(x,ia+l),c.moveTo(x,K),c.lineTo(B,K),c.lineTo(B,K+l),c.lineTo(x,K+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,K+l),c.lineTo(0,K+l),c.lineTo(0,K),c.lineTo(x,
-K),c.lineTo(x,ia+l),c.lineTo(0,ia+l),c.lineTo(0,ia),c.lineTo(x,ia),c.close());c.end()};mxCellRenderer.registerShape("component",ta);mxUtils.extend(Aa,mxRectangleShape);Aa.prototype.paintForeground=function(c,l,x,p,v){var A=p/2,B=v/2,ia=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(l+A,x),new mxPoint(l+p,x+B),new mxPoint(l+A,x+v),new mxPoint(l,x+B)],this.isRounded,ia,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
+this.jettyHeight));x=B/2;B=x+B/2;var ja=Math.min(l,v-l),J=Math.min(ja+2*l,v-l);A?(c.moveTo(x,ja),c.lineTo(B,ja),c.lineTo(B,ja+l),c.lineTo(x,ja+l),c.moveTo(x,J),c.lineTo(B,J),c.lineTo(B,J+l),c.lineTo(x,J+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,J+l),c.lineTo(0,J+l),c.lineTo(0,J),c.lineTo(x,J),c.lineTo(x,ja+l),c.lineTo(0,ja+l),c.lineTo(0,ja),c.lineTo(x,ja),c.close());c.end()};mxCellRenderer.registerShape("module",xa);mxUtils.extend(ta,mxCylinder);ta.prototype.jettyWidth=
+32;ta.prototype.jettyHeight=12;ta.prototype.redrawPath=function(c,l,x,p,v,A){var B=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));l=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));x=B/2;B=x+B/2;var ja=.3*v-l/2,J=.7*v-l/2;A?(c.moveTo(x,ja),c.lineTo(B,ja),c.lineTo(B,ja+l),c.lineTo(x,ja+l),c.moveTo(x,J),c.lineTo(B,J),c.lineTo(B,J+l),c.lineTo(x,J+l)):(c.moveTo(x,0),c.lineTo(p,0),c.lineTo(p,v),c.lineTo(x,v),c.lineTo(x,J+l),c.lineTo(0,J+l),c.lineTo(0,J),c.lineTo(x,
+J),c.lineTo(x,ja+l),c.lineTo(0,ja+l),c.lineTo(0,ja),c.lineTo(x,ja),c.close());c.end()};mxCellRenderer.registerShape("component",ta);mxUtils.extend(Aa,mxRectangleShape);Aa.prototype.paintForeground=function(c,l,x,p,v){var A=p/2,B=v/2,ja=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c.begin();this.addPoints(c,[new mxPoint(l+A,x),new mxPoint(l+p,x+B),new mxPoint(l+A,x+v),new mxPoint(l,x+B)],this.isRounded,ja,!0);c.stroke();mxRectangleShape.prototype.paintForeground.apply(this,
arguments)};mxCellRenderer.registerShape("associativeEntity",Aa);mxUtils.extend(Ca,mxDoubleEllipse);Ca.prototype.outerStroke=!0;Ca.prototype.paintVertexShape=function(c,l,x,p,v){var A=Math.min(4,Math.min(p/5,v/5));0<p&&0<v&&(c.ellipse(l+A,x+A,p-2*A,v-2*A),c.fillAndStroke());c.setShadow(!1);this.outerStroke&&(c.ellipse(l,x,p,v),c.stroke())};mxCellRenderer.registerShape("endState",Ca);mxUtils.extend(Ba,Ca);Ba.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",Ba);mxUtils.extend(sa,mxArrowConnector);
-sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(Oa,mxArrowConnector);Oa.prototype.defaultWidth=10;Oa.prototype.defaultArrowWidth=20;Oa.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,
-"startWidth",this.defaultArrowWidth)};Oa.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Oa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Oa);mxUtils.extend(Ta,mxActor);Ta.prototype.size=30;Ta.prototype.isRoundable=function(){return!0};Ta.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,parseFloat(mxUtils.getValue(this.style,
-"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,l),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ta);mxUtils.extend(Sa,mxRectangleShape);Sa.prototype.dx=20;Sa.prototype.dy=20;Sa.prototype.isHtmlAllowed=function(){return!1};Sa.prototype.paintForeground=function(c,l,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
-var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(l,x+A);c.lineTo(l+p,x+A);c.end();c.stroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Sa);
-mxUtils.extend($a,mxActor);$a.prototype.dx=20;$a.prototype.dy=20;$a.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(l,x),
-new mxPoint(l,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",$a);mxUtils.extend(Ga,mxActor);Ga.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",Ga);mxUtils.extend(eb,mxActor);eb.prototype.dx=20;eb.prototype.dy=20;eb.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
+sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(Pa,mxArrowConnector);Pa.prototype.defaultWidth=10;Pa.prototype.defaultArrowWidth=20;Pa.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,
+"startWidth",this.defaultArrowWidth)};Pa.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};Pa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",Pa);mxUtils.extend(Ta,mxActor);Ta.prototype.size=30;Ta.prototype.isRoundable=function(){return!0};Ta.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,parseFloat(mxUtils.getValue(this.style,
+"size",this.size)));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,v),new mxPoint(0,l),new mxPoint(p,0),new mxPoint(p,v)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("manualInput",Ta);mxUtils.extend(Oa,mxRectangleShape);Oa.prototype.dx=20;Oa.prototype.dy=20;Oa.prototype.isHtmlAllowed=function(){return!1};Oa.prototype.paintForeground=function(c,l,x,p,v){mxRectangleShape.prototype.paintForeground.apply(this,arguments);
+var A=0;if(this.isRounded){var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;A=Math.max(A,Math.min(p*B,v*B))}B=Math.max(A,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));A=Math.max(A,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.begin();c.moveTo(l,x+A);c.lineTo(l+p,x+A);c.end();c.stroke();c.begin();c.moveTo(l+B,x);c.lineTo(l+B,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("internalStorage",Oa);
+mxUtils.extend(Xa,mxActor);Xa.prototype.dx=20;Xa.prototype.dy=20;Xa.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint(l,x),
+new mxPoint(l,v),new mxPoint(0,v)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("corner",Xa);mxUtils.extend(Ga,mxActor);Ga.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.lineTo(0,v);c.end();c.moveTo(p,0);c.lineTo(p,v);c.end();c.moveTo(0,v/2);c.lineTo(p,v/2);c.end()};mxCellRenderer.registerShape("crossbar",Ga);mxUtils.extend(eb,mxActor);eb.prototype.dx=20;eb.prototype.dy=20;eb.prototype.redrawPath=function(c,l,x,p,v){l=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
"dx",this.dx))));x=Math.max(0,Math.min(v,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,x),new mxPoint((p+l)/2,x),new mxPoint((p+l)/2,v),new mxPoint((p-l)/2,v),new mxPoint((p-l)/2,x),new mxPoint(0,x)],this.isRounded,A,!0);c.end()};mxCellRenderer.registerShape("tee",eb);mxUtils.extend(bb,
mxActor);bb.prototype.arrowWidth=.3;bb.prototype.arrowSize=.2;bb.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-
l,v),new mxPoint(p-l,A),new mxPoint(0,A)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("singleArrow",bb);mxUtils.extend(z,mxActor);z.prototype.redrawPath=function(c,l,x,p,v){var A=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",bb.prototype.arrowWidth))));l=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",bb.prototype.arrowSize))));x=(v-A)/2;A=x+A;var B=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/
-2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.fixedSize=20;L.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
-"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(U,mxActor);U.prototype.redrawPath=function(c,
-l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",U);mxUtils.extend(X,mxActor);X.prototype.size=20;X.prototype.isRoundable=function(){return!0};X.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,
-.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",X);mxUtils.extend(fa,mxActor);fa.prototype.size=.375;fa.prototype.isRoundable=function(){return!0};fa.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,
-v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(na,mxEllipse);na.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",na);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
+2;this.addPoints(c,[new mxPoint(0,v/2),new mxPoint(l,0),new mxPoint(l,x),new mxPoint(p-l,x),new mxPoint(p-l,0),new mxPoint(p,v/2),new mxPoint(p-l,v),new mxPoint(p-l,A),new mxPoint(l,A),new mxPoint(l,v)],this.isRounded,B,!0);c.end()};mxCellRenderer.registerShape("doubleArrow",z);mxUtils.extend(K,mxActor);K.prototype.size=.1;K.prototype.fixedSize=20;K.prototype.redrawPath=function(c,l,x,p,v){l="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,
+"size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c.moveTo(l,0);c.lineTo(p,0);c.quadTo(p-2*l,v/2,p,v);c.lineTo(l,v);c.quadTo(l-2*l,v/2,l,0);c.close();c.end()};mxCellRenderer.registerShape("dataStorage",K);mxUtils.extend(M,mxActor);M.prototype.redrawPath=function(c,l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.close();c.end()};mxCellRenderer.registerShape("or",M);mxUtils.extend(U,mxActor);U.prototype.redrawPath=function(c,
+l,x,p,v){c.moveTo(0,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,0,v);c.quadTo(p/2,v/2,0,0);c.close();c.end()};mxCellRenderer.registerShape("xor",U);mxUtils.extend(W,mxActor);W.prototype.size=20;W.prototype.isRoundable=function(){return!0};W.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p/2,Math.min(v,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(l,0),new mxPoint(p-l,0),new mxPoint(p,
+.8*l),new mxPoint(p,v),new mxPoint(0,v),new mxPoint(0,.8*l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("loopLimit",W);mxUtils.extend(ha,mxActor);ha.prototype.size=.375;ha.prototype.isRoundable=function(){return!0};ha.prototype.redrawPath=function(c,l,x,p,v){l=v*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));x=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(c,[new mxPoint(0,0),new mxPoint(p,0),new mxPoint(p,
+v-l),new mxPoint(p/2,v),new mxPoint(0,v-l)],this.isRounded,x,!0);c.end()};mxCellRenderer.registerShape("offPageConnector",ha);mxUtils.extend(na,mxEllipse);na.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.begin();c.moveTo(l+p/2,x+v);c.lineTo(l+p,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("tapeData",na);mxUtils.extend(ua,mxEllipse);ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke();c.begin();c.moveTo(l+p/2,x);c.lineTo(l+p/2,x+v);c.end();c.stroke()};mxCellRenderer.registerShape("orEllipse",ua);mxUtils.extend(pa,mxEllipse);pa.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l+.145*p,x+.145*v);c.lineTo(l+.855*p,x+.855*v);c.end();c.stroke();c.begin();c.moveTo(l+.855*p,x+.145*v);c.lineTo(l+.145*p,
x+.855*v);c.end();c.stroke()};mxCellRenderer.registerShape("sumEllipse",pa);mxUtils.extend(za,mxRhombus);za.prototype.paintVertexShape=function(c,l,x,p,v){mxRhombus.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();c.moveTo(l,x+v/2);c.lineTo(l+p,x+v/2);c.end();c.stroke()};mxCellRenderer.registerShape("sortShape",za);mxUtils.extend(Da,mxEllipse);Da.prototype.paintVertexShape=function(c,l,x,p,v){c.begin();c.moveTo(l,x);c.lineTo(l+p,x);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke();
-c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ia=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,ia);c.lineTo(l+A+B,ia-B/2);c.moveTo(l+A,ia);c.lineTo(l+A+B,ia+B/2);c.moveTo(l+A,ia);c.lineTo(l+p-A,ia);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,ia);c.lineTo(l+p-B-A,ia-B/2);c.moveTo(l+
-p-A,ia);c.lineTo(l+p-B-A,ia+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(La,mxEllipse);La.prototype.drawHidden=!0;La.prototype.paintVertexShape=function(c,l,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ia="1"==mxUtils.getValue(this.style,"top","1"),K="1"==mxUtils.getValue(this.style,
-"left","1"),wa="1"==mxUtils.getValue(this.style,"right","1"),oa="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ia||wa||oa||K?(c.rect(l,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(l,x),this.outline||ia?c.lineTo(l+p,x):c.moveTo(l+p,x),this.outline||wa?c.lineTo(l+p,x+v):c.moveTo(l+p,x+v),this.outline||oa?c.lineTo(l,x+v):c.moveTo(l,x+v),(this.outline||K)&&c.lineTo(l,x),c.end(),c.stroke(),c.setLineCap("flat")):
-c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",La);mxUtils.extend(Ua,mxEllipse);Ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(l+p/2,x),c.lineTo(l+p/2,x+v)):(c.moveTo(l,x+v/2),c.lineTo(l+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ua);mxUtils.extend(Ra,mxActor);Ra.prototype.redrawPath=function(c,
-l,x,p,v){l=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Ra);mxUtils.extend(Fa,mxActor);Fa.prototype.size=.2;Fa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,p);var A=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(v-A)/2;x=l+A;var B=(p-A)/2;A=B+A;c.moveTo(0,l);c.lineTo(B,l);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,l);c.lineTo(p,l);c.lineTo(p,x);
+c.begin();c.moveTo(l,x+v);c.lineTo(l+p,x+v);c.lineTo(l+p/2,x+v/2);c.close();c.fillAndStroke()};mxCellRenderer.registerShape("collate",Da);mxUtils.extend(Ma,mxEllipse);Ma.prototype.paintVertexShape=function(c,l,x,p,v){var A=c.state.strokeWidth/2,B=10+2*A,ja=x+v-B/2;c.begin();c.moveTo(l,x);c.lineTo(l,x+v);c.moveTo(l+A,ja);c.lineTo(l+A+B,ja-B/2);c.moveTo(l+A,ja);c.lineTo(l+A+B,ja+B/2);c.moveTo(l+A,ja);c.lineTo(l+p-A,ja);c.moveTo(l+p,x);c.lineTo(l+p,x+v);c.moveTo(l+p-A,ja);c.lineTo(l+p-B-A,ja-B/2);c.moveTo(l+
+p-A,ja);c.lineTo(l+p-B-A,ja+B/2);c.end();c.stroke()};mxCellRenderer.registerShape("dimension",Ma);mxUtils.extend(La,mxEllipse);La.prototype.drawHidden=!0;La.prototype.paintVertexShape=function(c,l,x,p,v){this.outline||c.setStrokeColor(null);if(null!=this.style){var A=c.pointerEvents,B=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||B||(c.pointerEvents=!1);var ja="1"==mxUtils.getValue(this.style,"top","1"),J="1"==mxUtils.getValue(this.style,
+"left","1"),wa="1"==mxUtils.getValue(this.style,"right","1"),oa="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||B||this.outline||ja||wa||oa||J?(c.rect(l,x,p,v),c.fill(),c.pointerEvents=A,c.setStrokeColor(this.stroke),c.setLineCap("square"),c.begin(),c.moveTo(l,x),this.outline||ja?c.lineTo(l+p,x):c.moveTo(l+p,x),this.outline||wa?c.lineTo(l+p,x+v):c.moveTo(l+p,x+v),this.outline||oa?c.lineTo(l,x+v):c.moveTo(l,x+v),(this.outline||J)&&c.lineTo(l,x),c.end(),c.stroke(),c.setLineCap("flat")):
+c.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",La);mxUtils.extend(Ua,mxEllipse);Ua.prototype.paintVertexShape=function(c,l,x,p,v){mxEllipse.prototype.paintVertexShape.apply(this,arguments);c.setShadow(!1);c.begin();"vertical"==mxUtils.getValue(this.style,"line")?(c.moveTo(l+p/2,x),c.lineTo(l+p/2,x+v)):(c.moveTo(l,x+v/2),c.lineTo(l+p,x+v/2));c.end();c.stroke()};mxCellRenderer.registerShape("lineEllipse",Ua);mxUtils.extend(Sa,mxActor);Sa.prototype.redrawPath=function(c,
+l,x,p,v){l=Math.min(p,v/2);c.moveTo(0,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(0,v);c.close();c.end()};mxCellRenderer.registerShape("delay",Sa);mxUtils.extend(Fa,mxActor);Fa.prototype.size=.2;Fa.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(v,p);var A=Math.max(0,Math.min(l,l*parseFloat(mxUtils.getValue(this.style,"size",this.size))));l=(v-A)/2;x=l+A;var B=(p-A)/2;A=B+A;c.moveTo(0,l);c.lineTo(B,l);c.lineTo(B,0);c.lineTo(A,0);c.lineTo(A,l);c.lineTo(p,l);c.lineTo(p,x);
c.lineTo(A,x);c.lineTo(A,v);c.lineTo(B,v);c.lineTo(B,x);c.lineTo(0,x);c.close();c.end()};mxCellRenderer.registerShape("cross",Fa);mxUtils.extend(va,mxActor);va.prototype.size=.25;va.prototype.redrawPath=function(c,l,x,p,v){l=Math.min(p,v/2);x=Math.min(p-l,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*p);c.moveTo(0,v/2);c.lineTo(x,0);c.lineTo(p-l,0);c.quadTo(p,0,p,v/2);c.quadTo(p,v,p-l,v);c.lineTo(x,v);c.close();c.end()};mxCellRenderer.registerShape("display",va);mxUtils.extend(ya,
mxActor);ya.prototype.cst={RECT2:"mxgraph.basic.rect"};ya.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"}]}];ya.prototype.paintVertexShape=function(c,l,x,p,v){c.translate(l,
-x);this.strictDrawShape(c,0,0,p,v)};ya.prototype.strictDrawShape=function(c,l,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ia=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),K=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),wa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),oa=A&&A.indent?
-A.indent:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),Za=A&&A.dashed?A.dashed:mxUtils.getValue(this.style,"dashed",!1),jb=A&&A.dashPattern?A.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),hb=A&&A.relIndent?A.relIndent:Math.max(0,Math.min(50,oa)),Ea=A&&A.top?A.top:mxUtils.getValue(this.style,"top",!0),Ka=A&&A.right?A.right:mxUtils.getValue(this.style,"right",!0),Ia=A&&A.bottom?A.bottom:mxUtils.getValue(this.style,"bottom",!0),Ha=A&&A.left?A.left:
-mxUtils.getValue(this.style,"left",!0),Qa=A&&A.topLeftStyle?A.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),Va=A&&A.topRightStyle?A.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),Wa=A&&A.bottomRightStyle?A.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),Xa=A&&A.bottomLeftStyle?A.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),Eb=A&&A.fillColor?A.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");
+x);this.strictDrawShape(c,0,0,p,v)};ya.prototype.strictDrawShape=function(c,l,x,p,v,A){var B=A&&A.rectStyle?A.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),ja=A&&A.absoluteCornerSize?A.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",this.absoluteCornerSize),J=A&&A.size?A.size:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),wa=A&&A.rectOutline?A.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),oa=A&&A.indent?
+A.indent:Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),$a=A&&A.dashed?A.dashed:mxUtils.getValue(this.style,"dashed",!1),jb=A&&A.dashPattern?A.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),hb=A&&A.relIndent?A.relIndent:Math.max(0,Math.min(50,oa)),Ea=A&&A.top?A.top:mxUtils.getValue(this.style,"top",!0),Ka=A&&A.right?A.right:mxUtils.getValue(this.style,"right",!0),Ia=A&&A.bottom?A.bottom:mxUtils.getValue(this.style,"bottom",!0),Ha=A&&A.left?A.left:
+mxUtils.getValue(this.style,"left",!0),Ra=A&&A.topLeftStyle?A.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),Va=A&&A.topRightStyle?A.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),Wa=A&&A.bottomRightStyle?A.bottomRightStyle:mxUtils.getValue(this.style,"bottomRightStyle","default"),Ya=A&&A.bottomLeftStyle?A.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),Eb=A&&A.fillColor?A.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");
A&&A.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var Fb=A&&A.strokeWidth?A.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),Cb=A&&A.fillColor2?A.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),Db=A&&A.gradientColor2?A.gradientColor2:mxUtils.getValue(this.style,"gradientColor2","none"),Gb=A&&A.gradientDirection2?A.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),Hb=A&&A.opacity?A.opacity:mxUtils.getValue(this.style,"opacity","100"),
-Ib=Math.max(0,Math.min(50,K));A=ya.prototype;c.setDashed(Za);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);K=Math.min(.5*v,.5*p,K);ia||(K=Ib*Math.min(p,v)/100);K=Math.min(K,.5*Math.min(p,v));ia||(oa=Math.min(hb*Math.min(p,v)/100));oa=Math.min(oa,.5*Math.min(p,v)-K);(Ea||Ka||Ia||Ha)&&"frame"!=wa&&(c.begin(),Ea?A.moveNW(c,l,x,p,v,B,Qa,K,Ha):c.moveTo(0,0),Ea&&A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),Ka&&A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),Ia&&
-A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),Ha&&A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),Za=ia=Hb,"none"==Cb&&(ia=0),"none"==Db&&(Za=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ia,Za),c.begin(),Ea?A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha):c.moveTo(oa,0),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),Ia&&Ka&&A.paintSEInner(c,
-l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),Ka&&Ea&&A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),Ea&&Ha&&A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,l,x,p,v,B,Qa,Va,Wa,Xa,K,Ea,Ka,Ia,Ha),c.stroke()));Ea||Ka||Ia||!Ha?Ea||Ka||!Ia||Ha?!Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==
-wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),
-c.fillAndStroke()):Ea||!Ka||Ia||Ha?!Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,
-K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,
-l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&
-Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):
-(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea||Ka||Ia||Ha?
-Ea&&!Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,
-l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,
-K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,
-K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,
-x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,
-l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,
-l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,
-l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,
-v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,
-l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke()):
-Ea&&Ka&&Ia&&Ha&&("frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),c.close(),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,
-B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.paintNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.paintSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.paintSW(c,l,x,p,v,B,Xa,K,Ia),
-A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),c.close(),A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Xa,K,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,K,oa),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,K,oa),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Qa,K,oa),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,
-l,x,p,v,B,Va,K,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Qa,K,Ha),A.paintTop(c,l,x,p,v,B,Va,K,Ka),A.lineNEInner(c,l,x,p,v,B,Va,K,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Qa,K,oa,Ha,Ea),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka)),c.stroke()):
-(c.begin(),A.moveNE(c,l,x,p,v,B,Va,K,Ea),A.paintRight(c,l,x,p,v,B,Wa,K,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,K,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,K,oa,Ea,Ka),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,K,Ka),A.paintBottom(c,l,x,p,v,B,Xa,K,Ha),A.lineSWInner(c,l,x,p,v,B,Xa,K,oa,Ha),
-A.paintBottomInner(c,l,x,p,v,B,Wa,K,oa,Ka,Ia),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Qa,K,Ia),A.paintLeft(c,l,x,p,v,B,Qa,K,Ea),A.lineNWInner(c,l,x,p,v,B,Qa,K,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Xa,K,oa,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,l,x,p,v,B,Qa,Va,
-Wa,Xa,K,Ea,Ka,Ia,Ha);c.stroke()};ya.prototype.moveNW=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,0):c.moveTo(0,ia)};ya.prototype.moveNE=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,0):c.moveTo(p-ia,0)};ya.prototype.moveSE=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(p,v):c.moveTo(p,v-ia)};ya.prototype.moveSW=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.moveTo(0,
-v):c.moveTo(ia,v)};ya.prototype.paintNW=function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,ia,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ia,0);else c.lineTo(0,0)};ya.prototype.paintTop=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,0):c.lineTo(p-ia,0)};ya.prototype.paintNE=
-function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,p,ia)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ia);else c.lineTo(p,0)};ya.prototype.paintRight=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(p,v):c.lineTo(p,v-ia)};ya.prototype.paintLeft=function(c,l,x,p,v,A,B,ia,K){"square"==
-B||"default"==B&&"square"==A||!K?c.lineTo(0,0):c.lineTo(0,ia)};ya.prototype.paintSE=function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,p-ia,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ia,v);else c.lineTo(p,v)};ya.prototype.paintBottom=function(c,l,x,p,v,A,B,ia,K){"square"==B||"default"==B&&"square"==A||!K?c.lineTo(0,
-v):c.lineTo(ia,v)};ya.prototype.paintSW=function(c,l,x,p,v,A,B,ia,K){if(K)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ia,ia,0,0,l,0,v-ia)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ia);else c.lineTo(0,v)};ya.prototype.paintNWInner=function(c,l,x,p,v,A,B,ia,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,K,.5*K+ia);else if("invRound"==
-B||"default"==B&&"invRound"==A)c.arcTo(ia+K,ia+K,0,0,1,K,K+ia);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(K,.5*K+ia);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ia,K+ia),c.lineTo(K,K+ia)};ya.prototype.paintTopInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(0,K):wa&&!oa?c.lineTo(K,0):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ia+.5*K,K):c.lineTo(ia+K,K):c.lineTo(0,
-K):c.lineTo(0,0)};ya.prototype.paintNEInner=function(c,l,x,p,v,A,B,ia,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,p-ia-.5*K,K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ia+K,ia+K,0,0,1,p-ia-K,K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ia-.5*K,K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ia-K,ia+K),c.lineTo(p-ia-K,K)};ya.prototype.paintRightInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(p-K,0):wa&&!oa?c.lineTo(p,
-K):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ia+.5*K):c.lineTo(p-K,ia+K):c.lineTo(p-K,0):c.lineTo(p,0)};ya.prototype.paintLeftInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(K,v):wa&&!oa?c.lineTo(0,v-K):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ia-.5*K):c.lineTo(K,v-ia-K):
-c.lineTo(K,v):c.lineTo(0,v)};ya.prototype.paintSEInner=function(c,l,x,p,v,A,B,ia,K){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,p-K,v-ia-.5*K);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ia+K,ia+K,0,0,1,p-K,v-ia-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-K,v-ia-.5*K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ia-K,v-ia-K),c.lineTo(p-K,v-ia-K)};ya.prototype.paintBottomInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(p,
-v-K):wa&&!oa?c.lineTo(p-K,v):"square"==B||"default"==B&&"square"==A||!wa?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ia-.5*K,v-K):c.lineTo(p-ia-K,v-K):c.lineTo(p,v)};ya.prototype.paintSWInner=function(c,l,x,p,v,A,B,ia,K,wa){if(!wa)c.lineTo(K,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(K,v-K);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ia-.5*K,ia-.5*K,0,0,0,ia+.5*K,v-K);else if("invRound"==B||"default"==B&&"invRound"==
-A)c.arcTo(ia+K,ia+K,0,0,1,ia+K,v-K);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ia+.5*K,v-K);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(K+ia,v-ia-K),c.lineTo(K+ia,v-K)};ya.prototype.moveSWInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(K,v-ia-K):
-c.moveTo(0,v-K)};ya.prototype.lineSWInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,v-ia-K):c.lineTo(0,v-K)};ya.prototype.moveSEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==
-A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,v-ia-K):c.moveTo(p-K,v)};ya.prototype.lineSEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-K,v-K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,v-ia-.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,v-ia-K):
-c.lineTo(p-K,v)};ya.prototype.moveNEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.moveTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-K,ia+K):c.moveTo(p,K)};ya.prototype.lineNEInner=function(c,l,x,p,v,A,B,ia,K,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.lineTo(p-K,K):"rounded"==B||"default"==B&&"rounded"==
-A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-K,ia+K):c.lineTo(p,K)};ya.prototype.moveNWInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.moveTo(K,0):wa&&!oa?c.moveTo(0,K):"square"==B||"default"==B&&"square"==A?c.moveTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
-B&&"fold"==A)&&c.moveTo(K,ia+K):c.moveTo(0,0)};ya.prototype.lineNWInner=function(c,l,x,p,v,A,B,ia,K,wa,oa){wa||oa?!wa&&oa?c.lineTo(K,0):wa&&!oa?c.lineTo(0,K):"square"==B||"default"==B&&"square"==A?c.lineTo(K,K):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(K,ia+.5*K):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(K,ia+K):c.lineTo(0,0)};ya.prototype.paintFolds=function(c,l,x,p,v,A,B,ia,K,wa,oa,Za,jb,hb,Ea){if("fold"==
-A||"fold"==B||"fold"==ia||"fold"==K||"fold"==wa)("fold"==B||"default"==B&&"fold"==A)&&Za&&Ea&&(c.moveTo(0,oa),c.lineTo(oa,oa),c.lineTo(oa,0)),("fold"==ia||"default"==ia&&"fold"==A)&&Za&&jb&&(c.moveTo(p-oa,0),c.lineTo(p-oa,oa),c.lineTo(p,oa)),("fold"==K||"default"==K&&"fold"==A)&&hb&&jb&&(c.moveTo(p-oa,v),c.lineTo(p-oa,v-oa),c.lineTo(p,v-oa)),("fold"==wa||"default"==wa&&"fold"==A)&&hb&&Ea&&(c.moveTo(0,v-oa),c.lineTo(oa,v-oa),c.lineTo(oa,v))};mxCellRenderer.registerShape(ya.prototype.cst.RECT2,ya);
+Ib=Math.max(0,Math.min(50,J));A=ya.prototype;c.setDashed($a);jb&&""!=jb&&c.setDashPattern(jb);c.setStrokeWidth(Fb);J=Math.min(.5*v,.5*p,J);ja||(J=Ib*Math.min(p,v)/100);J=Math.min(J,.5*Math.min(p,v));ja||(oa=Math.min(hb*Math.min(p,v)/100));oa=Math.min(oa,.5*Math.min(p,v)-J);(Ea||Ka||Ia||Ha)&&"frame"!=wa&&(c.begin(),Ea?A.moveNW(c,l,x,p,v,B,Ra,J,Ha):c.moveTo(0,0),Ea&&A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),Ka&&A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),Ia&&
+A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),Ha&&A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),c.close(),c.fill(),c.setShadow(!1),c.setFillColor(Cb),$a=ja=Hb,"none"==Cb&&(ja=0),"none"==Db&&($a=0),c.setGradient(Cb,Db,0,0,p,v,Gb,ja,$a),c.begin(),Ea?A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha):c.moveTo(oa,0),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),Ha&&Ia&&A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),Ia&&Ka&&A.paintSEInner(c,
+l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),Ka&&Ea&&A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),Ea&&Ha&&A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),c.fill(),"none"==Eb&&(c.begin(),A.paintFolds(c,l,x,p,v,B,Ra,Va,Wa,Ya,J,Ea,Ka,Ia,Ha),c.stroke()));Ea||Ka||Ia||!Ha?Ea||Ka||!Ia||Ha?!Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==
+wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),
+c.fillAndStroke()):Ea||!Ka||Ia||Ha?!Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,
+J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke(),c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,
+l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea&&
+Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):
+(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):!Ea||Ka||Ia||Ha?
+Ea&&!Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,
+l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,
+J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke(),c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&!Ka&&Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,
+J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,
+x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,
+l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,
+l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke()):Ea&&Ka&&!Ia&&Ha?"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,
+l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,
+v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke()):Ea&&Ka&&Ia&&!Ha?"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,
+l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke()):
+Ea&&Ka&&Ia&&Ha&&("frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),c.close(),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,
+B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close()),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.paintNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.paintSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.paintSW(c,l,x,p,v,B,Ya,J,Ia),
+A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),c.close(),A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintSWInner(c,l,x,p,v,B,Ya,J,oa,Ia),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),A.paintSEInner(c,l,x,p,v,B,Wa,J,oa),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),A.paintNEInner(c,l,x,p,v,B,Va,J,oa),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),A.paintNWInner(c,l,x,p,v,B,Ra,J,oa),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke())):"frame"!=wa?(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,
+l,x,p,v,B,Va,J,Ka),"double"==wa&&(A.moveNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea)),c.stroke()):(c.begin(),A.moveNW(c,l,x,p,v,B,Ra,J,Ha),A.paintTop(c,l,x,p,v,B,Va,J,Ka),A.lineNEInner(c,l,x,p,v,B,Va,J,oa,Ka),A.paintTopInner(c,l,x,p,v,B,Ra,J,oa,Ha,Ea),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),"double"==wa&&(A.moveSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka)),c.stroke()):
+(c.begin(),A.moveNE(c,l,x,p,v,B,Va,J,Ea),A.paintRight(c,l,x,p,v,B,Wa,J,Ia),A.lineSEInner(c,l,x,p,v,B,Wa,J,oa,Ia),A.paintRightInner(c,l,x,p,v,B,Va,J,oa,Ea,Ka),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),"double"==wa&&(A.moveSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia)),c.stroke()):(c.begin(),A.moveSE(c,l,x,p,v,B,Wa,J,Ka),A.paintBottom(c,l,x,p,v,B,Ya,J,Ha),A.lineSWInner(c,l,x,p,v,B,Ya,J,oa,Ha),
+A.paintBottomInner(c,l,x,p,v,B,Wa,J,oa,Ka,Ia),c.close(),c.fillAndStroke()):"frame"!=wa?(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),"double"==wa&&(A.moveNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha)),c.stroke()):(c.begin(),A.moveSW(c,l,x,p,v,B,Ra,J,Ia),A.paintLeft(c,l,x,p,v,B,Ra,J,Ea),A.lineNWInner(c,l,x,p,v,B,Ra,J,oa,Ea,Ha),A.paintLeftInner(c,l,x,p,v,B,Ya,J,oa,Ia,Ha),c.close(),c.fillAndStroke());c.begin();A.paintFolds(c,l,x,p,v,B,Ra,Va,
+Wa,Ya,J,Ea,Ka,Ia,Ha);c.stroke()};ya.prototype.moveNW=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(0,0):c.moveTo(0,ja)};ya.prototype.moveNE=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(p,0):c.moveTo(p-ja,0)};ya.prototype.moveSE=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(p,v):c.moveTo(p,v-ja)};ya.prototype.moveSW=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.moveTo(0,
+v):c.moveTo(ja,v)};ya.prototype.paintNW=function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,ja,0)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(ja,0);else c.lineTo(0,0)};ya.prototype.paintTop=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.lineTo(p,0):c.lineTo(p-ja,0)};ya.prototype.paintNE=
+function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,p,ja)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p,ja);else c.lineTo(p,0)};ya.prototype.paintRight=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.lineTo(p,v):c.lineTo(p,v-ja)};ya.prototype.paintLeft=function(c,l,x,p,v,A,B,ja,J){"square"==
+B||"default"==B&&"square"==A||!J?c.lineTo(0,0):c.lineTo(0,ja)};ya.prototype.paintSE=function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,p-ja,v)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-ja,v);else c.lineTo(p,v)};ya.prototype.paintBottom=function(c,l,x,p,v,A,B,ja,J){"square"==B||"default"==B&&"square"==A||!J?c.lineTo(0,
+v):c.lineTo(ja,v)};ya.prototype.paintSW=function(c,l,x,p,v,A,B,ja,J){if(J)if("rounded"==B||"default"==B&&"rounded"==A||"invRound"==B||"default"==B&&"invRound"==A){l=0;if("rounded"==B||"default"==B&&"rounded"==A)l=1;c.arcTo(ja,ja,0,0,l,0,v-ja)}else("snip"==B||"default"==B&&"snip"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(0,v-ja);else c.lineTo(0,v)};ya.prototype.paintNWInner=function(c,l,x,p,v,A,B,ja,J){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,J,.5*J+ja);else if("invRound"==
+B||"default"==B&&"invRound"==A)c.arcTo(ja+J,ja+J,0,0,1,J,J+ja);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(J,.5*J+ja);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(J+ja,J+ja),c.lineTo(J,J+ja)};ya.prototype.paintTopInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(0,J):wa&&!oa?c.lineTo(J,0):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(ja+.5*J,J):c.lineTo(ja+J,J):c.lineTo(0,
+J):c.lineTo(0,0)};ya.prototype.paintNEInner=function(c,l,x,p,v,A,B,ja,J){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,p-ja-.5*J,J);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ja+J,ja+J,0,0,1,p-ja-J,J);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-ja-.5*J,J);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ja-J,ja+J),c.lineTo(p-ja-J,J)};ya.prototype.paintRightInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(p-J,0):wa&&!oa?c.lineTo(p,
+J):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-J,ja+.5*J):c.lineTo(p-J,ja+J):c.lineTo(p-J,0):c.lineTo(p,0)};ya.prototype.paintLeftInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(J,v):wa&&!oa?c.lineTo(0,v-J):wa?"square"==B||"default"==B&&"square"==A?c.lineTo(J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(J,v-ja-.5*J):c.lineTo(J,v-ja-J):
+c.lineTo(J,v):c.lineTo(0,v)};ya.prototype.paintSEInner=function(c,l,x,p,v,A,B,ja,J){if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,p-J,v-ja-.5*J);else if("invRound"==B||"default"==B&&"invRound"==A)c.arcTo(ja+J,ja+J,0,0,1,p-J,v-ja-J);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(p-J,v-ja-.5*J);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(p-ja-J,v-ja-J),c.lineTo(p-J,v-ja-J)};ya.prototype.paintBottomInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(p,
+v-J):wa&&!oa?c.lineTo(p-J,v):"square"==B||"default"==B&&"square"==A||!wa?c.lineTo(p-J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-ja-.5*J,v-J):c.lineTo(p-ja-J,v-J):c.lineTo(p,v)};ya.prototype.paintSWInner=function(c,l,x,p,v,A,B,ja,J,wa){if(!wa)c.lineTo(J,v);else if("square"==B||"default"==B&&"square"==A)c.lineTo(J,v-J);else if("rounded"==B||"default"==B&&"rounded"==A)c.arcTo(ja-.5*J,ja-.5*J,0,0,0,ja+.5*J,v-J);else if("invRound"==B||"default"==B&&"invRound"==
+A)c.arcTo(ja+J,ja+J,0,0,1,ja+J,v-J);else if("snip"==B||"default"==B&&"snip"==A)c.lineTo(ja+.5*J,v-J);else if("fold"==B||"default"==B&&"fold"==A)c.lineTo(J+ja,v-ja-J),c.lineTo(J+ja,v-J)};ya.prototype.moveSWInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(J,v-ja-J):
+c.moveTo(0,v-J)};ya.prototype.lineSWInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(J,v-ja-J):c.lineTo(0,v-J)};ya.prototype.moveSEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.moveTo(p-J,v-J):"rounded"==B||"default"==B&&"rounded"==
+A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-J,v-ja-J):c.moveTo(p-J,v)};ya.prototype.lineSEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A?c.lineTo(p-J,v-J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-J,v-ja-.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-J,v-ja-J):
+c.lineTo(p-J,v)};ya.prototype.moveNEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.moveTo(p-J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(p-J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.moveTo(p-J,ja+J):c.moveTo(p,J)};ya.prototype.lineNEInner=function(c,l,x,p,v,A,B,ja,J,wa){wa?"square"==B||"default"==B&&"square"==A||wa?c.lineTo(p-J,J):"rounded"==B||"default"==B&&"rounded"==
+A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(p-J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(p-J,ja+J):c.lineTo(p,J)};ya.prototype.moveNWInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.moveTo(J,0):wa&&!oa?c.moveTo(0,J):"square"==B||"default"==B&&"square"==A?c.moveTo(J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.moveTo(J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==
+B&&"fold"==A)&&c.moveTo(J,ja+J):c.moveTo(0,0)};ya.prototype.lineNWInner=function(c,l,x,p,v,A,B,ja,J,wa,oa){wa||oa?!wa&&oa?c.lineTo(J,0):wa&&!oa?c.lineTo(0,J):"square"==B||"default"==B&&"square"==A?c.lineTo(J,J):"rounded"==B||"default"==B&&"rounded"==A||"snip"==B||"default"==B&&"snip"==A?c.lineTo(J,ja+.5*J):("invRound"==B||"default"==B&&"invRound"==A||"fold"==B||"default"==B&&"fold"==A)&&c.lineTo(J,ja+J):c.lineTo(0,0)};ya.prototype.paintFolds=function(c,l,x,p,v,A,B,ja,J,wa,oa,$a,jb,hb,Ea){if("fold"==
+A||"fold"==B||"fold"==ja||"fold"==J||"fold"==wa)("fold"==B||"default"==B&&"fold"==A)&&$a&&Ea&&(c.moveTo(0,oa),c.lineTo(oa,oa),c.lineTo(oa,0)),("fold"==ja||"default"==ja&&"fold"==A)&&$a&&jb&&(c.moveTo(p-oa,0),c.lineTo(p-oa,oa),c.lineTo(p,oa)),("fold"==J||"default"==J&&"fold"==A)&&hb&&jb&&(c.moveTo(p-oa,v),c.lineTo(p-oa,v-oa),c.lineTo(p,v-oa)),("fold"==wa||"default"==wa&&"fold"==A)&&hb&&Ea&&(c.moveTo(0,v-oa),c.lineTo(oa,v-oa),c.lineTo(oa,v))};mxCellRenderer.registerShape(ya.prototype.cst.RECT2,ya);
ya.prototype.constraints=null;mxUtils.extend(Na,mxConnector);Na.prototype.origPaintEdgeShape=Na.prototype.paintEdgeShape;Na.prototype.paintEdgeShape=function(c,l,x){for(var p=[],v=0;v<l.length;v++)p.push(mxUtils.clone(l[v]));v=c.state.dashed;var A=c.state.fixDash;Na.prototype.origPaintEdgeShape.apply(this,[c,p,x]);3<=c.state.strokeWidth&&(p=mxUtils.getValue(this.style,"fillColor",null),null!=p&&(c.setStrokeColor(p),c.setStrokeWidth(c.state.strokeWidth-2),c.setDashed(v,A),Na.prototype.origPaintEdgeShape.apply(this,
-[c,l,x])))};mxCellRenderer.registerShape("filledEdge",Na);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var l=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==l.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,l,x,p,v,A,B,ia,K,wa){var oa=v*(B+K+1),Za=A*(B+K+1);return function(){c.begin();
-c.moveTo(p.x-oa/2-Za/2,p.y-Za/2+oa/2);c.lineTo(p.x+Za/2-3*oa/2,p.y-3*Za/2-oa/2);c.stroke()}});mxMarker.addMarker("box",function(c,l,x,p,v,A,B,ia,K,wa){var oa=v*(B+K+1),Za=A*(B+K+1),jb=p.x+oa/2,hb=p.y+Za/2;p.x-=oa;p.y-=Za;return function(){c.begin();c.moveTo(jb-oa/2-Za/2,hb-Za/2+oa/2);c.lineTo(jb-oa/2+Za/2,hb-Za/2-oa/2);c.lineTo(jb+Za/2-3*oa/2,hb-3*Za/2-oa/2);c.lineTo(jb-Za/2-3*oa/2,hb-3*Za/2+oa/2);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,l,x,p,v,A,B,ia,K,
-wa){var oa=v*(B+K+1),Za=A*(B+K+1);return function(){c.begin();c.moveTo(p.x-oa/2-Za/2,p.y-Za/2+oa/2);c.lineTo(p.x+Za/2-3*oa/2,p.y-3*Za/2-oa/2);c.moveTo(p.x-oa/2+Za/2,p.y-Za/2-oa/2);c.lineTo(p.x-Za/2-3*oa/2,p.y-3*Za/2+oa/2);c.stroke()}});mxMarker.addMarker("circle",Ja);mxMarker.addMarker("circlePlus",function(c,l,x,p,v,A,B,ia,K,wa){var oa=p.clone(),Za=Ja.apply(this,arguments),jb=v*(B+2*K),hb=A*(B+2*K);return function(){Za.apply(this,arguments);c.begin();c.moveTo(oa.x-v*K,oa.y-A*K);c.lineTo(oa.x-2*jb+
-v*K,oa.y-2*hb+A*K);c.moveTo(oa.x-jb-hb+A*K,oa.y-hb+jb-v*K);c.lineTo(oa.x+hb-jb-A*K,oa.y-hb-jb+v*K);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,l,x,p,v,A,B,ia,K,wa){var oa=v*(B+K+1),Za=A*(B+K+1),jb=p.clone();p.x-=oa;p.y-=Za;return function(){c.begin();c.moveTo(jb.x-Za,jb.y+oa);c.quadTo(p.x-Za,p.y+oa,p.x,p.y);c.quadTo(p.x+Za,p.y-oa,jb.x+Za,jb.y-oa);c.stroke()}});mxMarker.addMarker("async",function(c,l,x,p,v,A,B,ia,K,wa){l=v*K*1.118;x=A*K*1.118;v*=B+K;A*=B+K;var oa=p.clone();oa.x-=l;oa.y-=
-x;p.x+=-v-l;p.y+=-A-x;return function(){c.begin();c.moveTo(oa.x,oa.y);ia?c.lineTo(oa.x-v-A/2,oa.y-A+v/2):c.lineTo(oa.x+A/2-v,oa.y-A-v/2);c.lineTo(oa.x-v,oa.y-A);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(l,x,p,v,A,B,ia,K,wa,oa){A*=ia+wa;B*=ia+wa;var Za=v.clone();return function(){l.begin();l.moveTo(Za.x,Za.y);K?l.lineTo(Za.x-A-B/c,Za.y-B+A/c):l.lineTo(Za.x+B/c-A,Za.y-B-A/c);l.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var kb=
-function(c,l,x){return ib(c,["width"],l,function(p,v,A,B,ia){ia=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ia/2,B.y+A*p/4-v*ia/2)},function(p,v,A,B,ia,K){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));c.style.width=Math.round(2*p)/c.view.scale-x})},ib=function(c,l,x,p,v){return gb(c,l,function(A){var B=c.absolutePoints,ia=B.length-1;A=c.view.translate;var K=c.view.scale,wa=x?B[0]:B[ia];B=x?B[1]:B[ia-1];ia=B.x-wa.x;var oa=B.y-wa.y,Za=Math.sqrt(ia*ia+oa*oa);wa=
-p.call(this,Za,ia/Za,oa/Za,wa,B);return new mxPoint(wa.x/K-A.x,wa.y/K-A.y)},function(A,B,ia){var K=c.absolutePoints,wa=K.length-1;A=c.view.translate;var oa=c.view.scale,Za=x?K[0]:K[wa];K=x?K[1]:K[wa-1];wa=K.x-Za.x;var jb=K.y-Za.y,hb=Math.sqrt(wa*wa+jb*jb);B.x=(B.x+A.x)*oa;B.y=(B.y+A.y)*oa;v.call(this,hb,wa/hb,jb/hb,Za,K,B,ia)})},nb=function(c){return function(l){return[gb(l,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",bb.prototype.arrowWidth))),
+[c,l,x])))};mxCellRenderer.registerShape("filledEdge",Na);"undefined"!==typeof StyleFormatPanel&&function(){var c=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var l=this.editorUi.getSelectionState(),x=c.apply(this,arguments);"umlFrame"==l.style.shape&&x.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return x}}();mxMarker.addMarker("dash",function(c,l,x,p,v,A,B,ja,J,wa){var oa=v*(B+J+1),$a=A*(B+J+1);return function(){c.begin();
+c.moveTo(p.x-oa/2-$a/2,p.y-$a/2+oa/2);c.lineTo(p.x+$a/2-3*oa/2,p.y-3*$a/2-oa/2);c.stroke()}});mxMarker.addMarker("box",function(c,l,x,p,v,A,B,ja,J,wa){var oa=v*(B+J+1),$a=A*(B+J+1),jb=p.x+oa/2,hb=p.y+$a/2;p.x-=oa;p.y-=$a;return function(){c.begin();c.moveTo(jb-oa/2-$a/2,hb-$a/2+oa/2);c.lineTo(jb-oa/2+$a/2,hb-$a/2-oa/2);c.lineTo(jb+$a/2-3*oa/2,hb-3*$a/2-oa/2);c.lineTo(jb-$a/2-3*oa/2,hb-3*$a/2+oa/2);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("cross",function(c,l,x,p,v,A,B,ja,J,
+wa){var oa=v*(B+J+1),$a=A*(B+J+1);return function(){c.begin();c.moveTo(p.x-oa/2-$a/2,p.y-$a/2+oa/2);c.lineTo(p.x+$a/2-3*oa/2,p.y-3*$a/2-oa/2);c.moveTo(p.x-oa/2+$a/2,p.y-$a/2-oa/2);c.lineTo(p.x-$a/2-3*oa/2,p.y-3*$a/2+oa/2);c.stroke()}});mxMarker.addMarker("circle",Ja);mxMarker.addMarker("circlePlus",function(c,l,x,p,v,A,B,ja,J,wa){var oa=p.clone(),$a=Ja.apply(this,arguments),jb=v*(B+2*J),hb=A*(B+2*J);return function(){$a.apply(this,arguments);c.begin();c.moveTo(oa.x-v*J,oa.y-A*J);c.lineTo(oa.x-2*jb+
+v*J,oa.y-2*hb+A*J);c.moveTo(oa.x-jb-hb+A*J,oa.y-hb+jb-v*J);c.lineTo(oa.x+hb-jb-A*J,oa.y-hb-jb+v*J);c.stroke()}});mxMarker.addMarker("halfCircle",function(c,l,x,p,v,A,B,ja,J,wa){var oa=v*(B+J+1),$a=A*(B+J+1),jb=p.clone();p.x-=oa;p.y-=$a;return function(){c.begin();c.moveTo(jb.x-$a,jb.y+oa);c.quadTo(p.x-$a,p.y+oa,p.x,p.y);c.quadTo(p.x+$a,p.y-oa,jb.x+$a,jb.y-oa);c.stroke()}});mxMarker.addMarker("async",function(c,l,x,p,v,A,B,ja,J,wa){l=v*J*1.118;x=A*J*1.118;v*=B+J;A*=B+J;var oa=p.clone();oa.x-=l;oa.y-=
+x;p.x+=-v-l;p.y+=-A-x;return function(){c.begin();c.moveTo(oa.x,oa.y);ja?c.lineTo(oa.x-v-A/2,oa.y-A+v/2):c.lineTo(oa.x+A/2-v,oa.y-A-v/2);c.lineTo(oa.x-v,oa.y-A);c.close();wa?c.fillAndStroke():c.stroke()}});mxMarker.addMarker("openAsync",function(c){c=null!=c?c:2;return function(l,x,p,v,A,B,ja,J,wa,oa){A*=ja+wa;B*=ja+wa;var $a=v.clone();return function(){l.begin();l.moveTo($a.x,$a.y);J?l.lineTo($a.x-A-B/c,$a.y-B+A/c):l.lineTo($a.x+B/c-A,$a.y-B-A/c);l.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var kb=
+function(c,l,x){return ib(c,["width"],l,function(p,v,A,B,ja){ja=c.shape.getEdgeWidth()*c.view.scale+x;return new mxPoint(B.x+v*p/4+A*ja/2,B.y+A*p/4-v*ja/2)},function(p,v,A,B,ja,J){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));c.style.width=Math.round(2*p)/c.view.scale-x})},ib=function(c,l,x,p,v){return gb(c,l,function(A){var B=c.absolutePoints,ja=B.length-1;A=c.view.translate;var J=c.view.scale,wa=x?B[0]:B[ja];B=x?B[1]:B[ja-1];ja=B.x-wa.x;var oa=B.y-wa.y,$a=Math.sqrt(ja*ja+oa*oa);wa=
+p.call(this,$a,ja/$a,oa/$a,wa,B);return new mxPoint(wa.x/J-A.x,wa.y/J-A.y)},function(A,B,ja){var J=c.absolutePoints,wa=J.length-1;A=c.view.translate;var oa=c.view.scale,$a=x?J[0]:J[wa];J=x?J[1]:J[wa-1];wa=J.x-$a.x;var jb=J.y-$a.y,hb=Math.sqrt(wa*wa+jb*jb);B.x=(B.x+A.x)*oa;B.y=(B.y+A.y)*oa;v.call(this,hb,wa/hb,jb/hb,$a,J,B,ja)})},ob=function(c){return function(l){return[gb(l,["arrowWidth","arrowSize"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",bb.prototype.arrowWidth))),
v=Math.max(0,Math.min(c,mxUtils.getValue(this.state.style,"arrowSize",bb.prototype.arrowSize)));return new mxPoint(x.x+(1-v)*x.width,x.y+(1-p)*x.height/2)},function(x,p){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(x.y+x.height/2-p.y)/x.height*2));this.state.style.arrowSize=Math.max(0,Math.min(c,(x.x+x.width-p.x)/x.width))})]}},vb=function(c){return function(l){return[gb(l,["size"],function(x){var p=Math.max(0,Math.min(.5*x.height,parseFloat(mxUtils.getValue(this.state.style,"size",
-c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},mb=function(c,l,x){return function(p){var v=[gb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",l)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
-!1)&&v.push(ob(p));return v}},Bb=function(c,l,x,p,v){x=null!=x?x:.5;return function(A){var B=[gb(A,["size"],function(ia){var K=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,wa=parseFloat(mxUtils.getValue(this.state.style,"size",K?v:c));return new mxPoint(ia.x+Math.max(0,Math.min(.5*ia.width,wa*(K?1:ia.width))),ia.getCenterY())},function(ia,K,wa){ia=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?K.x-ia.x:Math.max(0,Math.min(x,(K.x-ia.x)/ia.width));this.state.style.size=
-ia},!1,p)];l&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(ob(A));return B}},yb=function(c,l,x){c=null!=c?c:.5;return function(p){var v=[gb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ia=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:l)));return new mxPoint(A.x+Math.min(.75*A.width*c,ia*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
-A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(ob(p));return v}},lb=function(){return function(c){var l=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l}},ob=function(c,l){return gb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=l?l:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
+c))));return new mxPoint(x.x,x.y+p)},function(x,p){this.state.style.size=Math.max(0,p.y-x.y)},!0)]}},nb=function(c,l,x){return function(p){var v=[gb(p,["size"],function(A){var B=Math.max(0,Math.min(A.width,Math.min(A.height,parseFloat(mxUtils.getValue(this.state.style,"size",l)))))*c;return new mxPoint(A.x+B,A.y+B)},function(A,B){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(A.width,B.x-A.x),Math.min(A.height,B.y-A.y)))/c)},!1)];x&&mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,
+!1)&&v.push(pb(p));return v}},Bb=function(c,l,x,p,v){x=null!=x?x:.5;return function(A){var B=[gb(A,["size"],function(ja){var J=null!=v?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,wa=parseFloat(mxUtils.getValue(this.state.style,"size",J?v:c));return new mxPoint(ja.x+Math.max(0,Math.min(.5*ja.width,wa*(J?1:ja.width))),ja.getCenterY())},function(ja,J,wa){ja=null!=v&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?J.x-ja.x:Math.max(0,Math.min(x,(J.x-ja.x)/ja.width));this.state.style.size=
+ja},!1,p)];l&&mxUtils.getValue(A.style,mxConstants.STYLE_ROUNDED,!1)&&B.push(pb(A));return B}},yb=function(c,l,x){c=null!=c?c:.5;return function(p){var v=[gb(p,["size"],function(A){var B=null!=x?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,ja=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",B?x:l)));return new mxPoint(A.x+Math.min(.75*A.width*c,ja*(B?.75:.75*A.width)),A.y+A.height/4)},function(A,B){A=null!=x&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?B.x-
+A.x:Math.max(0,Math.min(c,(B.x-A.x)/A.width*.75));this.state.style.size=A},!1,!0)];mxUtils.getValue(p.style,mxConstants.STYLE_ROUNDED,!1)&&v.push(pb(p));return v}},mb=function(){return function(c){var l=[];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l}},pb=function(c,l){return gb(c,[mxConstants.STYLE_ARCSIZE],function(x){var p=null!=l?l:x.height/8;if("1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var v=mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,
mxConstants.LINE_ARCSIZE)/2;return new mxPoint(x.x+x.width-Math.min(x.width/2,v),x.y+p)}v=Math.max(0,parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(x.x+x.width-Math.min(Math.max(x.width/2,x.height/2),Math.min(x.width,x.height)*v),x.y+p)},function(x,p,v){"1"==mxUtils.getValue(c.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(x.width,2*(x.x+x.width-
-p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},gb=function(c,l,x,p,v,A,B){var ia=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ia.execute=function(wa){for(var oa=0;oa<l.length;oa++)this.copyStyle(l[oa]);B&&B(wa)};ia.getPosition=x;ia.setPosition=p;ia.ignoreGrid=null!=v?v:!0;if(A){var K=ia.positionChanged;ia.positionChanged=function(){K.apply(this,arguments);c.view.invalidate(this.state.cell);
-c.view.validate()}}return ia},rb={link:function(c){return[kb(c,!0,10),kb(c,!1,10)]},flexArrow:function(c){var l=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(ib(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ia){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
-return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,K.x,K.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
-c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(wa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ia){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
-5)*c.view.scale;return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,K.x,K.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
+p.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(x.width-p.x+x.x)/Math.min(x.width,x.height))))})},gb=function(c,l,x,p,v,A,B){var ja=new mxHandle(c,null,mxVertexHandler.prototype.secondaryHandleImage);ja.execute=function(wa){for(var oa=0;oa<l.length;oa++)this.copyStyle(l[oa]);B&&B(wa)};ja.getPosition=x;ja.setPosition=p;ja.ignoreGrid=null!=v?v:!0;if(A){var J=ja.positionChanged;ja.positionChanged=function(){J.apply(this,arguments);c.view.invalidate(this.state.cell);
+c.view.validate()}}return ja},rb={link:function(c){return[kb(c,!0,10),kb(c,!1,10)]},flexArrow:function(c){var l=c.view.graph.gridSize/c.view.scale,x=[];mxUtils.getValue(c.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(ib(c,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ja){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;
+return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,J.x,J.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
+c.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(wa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE])})),x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(p,v,A,B,ja){p=(c.shape.getStartArrowWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/
+5)*c.view.scale;return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)+A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)-v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,J.x,J.y);c.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.startWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_ENDSIZE]=
c.style[mxConstants.STYLE_STARTSIZE],c.style.endWidth=c.style.startWidth;mxEvent.isAltDown(wa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_STARTSIZE])-parseFloat(c.style[mxConstants.STYLE_ENDSIZE]))<l/6&&(c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(c.style.startWidth)-parseFloat(c.style.endWidth))<l&&(c.style.startWidth=c.style.endWidth))})));mxUtils.getValue(c.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(x.push(ib(c,
-["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ia){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,K.x,K.y);
+["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ja){p=(c.shape.getEdgeWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,B.y,B.x+A,B.y-v,J.x,J.y);
c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.width=Math.round(2*p)/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE];mxEvent.isAltDown(wa.getEvent())||Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE])})),
-x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ia){p=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;ia=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ia+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ia+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ia,K,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ia.x,ia.y,K.x,K.y));v=mxUtils.ptLineDist(B.x,
-B.y,B.x+A,B.y-v,K.x,K.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(wa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<
-l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<l&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var l=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));l.push(ob(c,x/2))}l.push(gb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
+x.push(ib(c,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(p,v,A,B,ja){p=(c.shape.getEndArrowWidth()-c.shape.strokewidth)*c.view.scale;ja=3*mxUtils.getNumber(c.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*c.view.scale;return new mxPoint(B.x+v*(ja+c.shape.strokewidth*c.view.scale)-A*p/2,B.y+A*(ja+c.shape.strokewidth*c.view.scale)+v*p/2)},function(p,v,A,B,ja,J,wa){p=Math.sqrt(mxUtils.ptSegDistSq(B.x,B.y,ja.x,ja.y,J.x,J.y));v=mxUtils.ptLineDist(B.x,
+B.y,B.x+A,B.y-v,J.x,J.y);c.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(v-c.shape.strokewidth)/3)/100/c.view.scale;c.style.endWidth=Math.max(0,Math.round(2*p)-c.shape.getEdgeWidth())/c.view.scale;if(mxEvent.isShiftDown(wa.getEvent())||mxEvent.isControlDown(wa.getEvent()))c.style[mxConstants.STYLE_STARTSIZE]=c.style[mxConstants.STYLE_ENDSIZE],c.style.startWidth=c.style.endWidth;mxEvent.isAltDown(wa.getEvent())||(Math.abs(parseFloat(c.style[mxConstants.STYLE_ENDSIZE])-parseFloat(c.style[mxConstants.STYLE_STARTSIZE]))<
+l/6&&(c.style[mxConstants.STYLE_ENDSIZE]=c.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(c.style.endWidth)-parseFloat(c.style.startWidth))<l&&(c.style.endWidth=c.style.startWidth))})));return x},swimlane:function(c){var l=[];if(mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED)){var x=parseFloat(mxUtils.getValue(c.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));l.push(pb(c,x/2))}l.push(gb(c,[mxConstants.STYLE_STARTSIZE],function(p){var v=parseFloat(mxUtils.getValue(c.style,
mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(c.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(p.getCenterX(),p.y+Math.max(0,Math.min(p.height,v))):new mxPoint(p.x+Math.max(0,Math.min(p.width,v)),p.getCenterY())},function(p,v){c.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(p.height,v.y-p.y))):Math.round(Math.max(0,Math.min(p.width,v.x-p.x)))},!1,null,function(p){var v=
-c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ia=0;ia<A.length;ia++)A[ia]!=c.cell&&v.isSwimlane(A[ia])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ia]))==p&&B.push(A[ia]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return l},label:lb(),ext:lb(),rectangle:lb(),
-triangle:lb(),rhombus:lb(),umlLifeline:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},umlFrame:function(c){return[gb(c,["width","height"],function(l){var x=Math.max(R.prototype.corner,Math.min(l.width,mxUtils.getValue(this.state.style,"width",R.prototype.width))),
-p=Math.max(1.5*R.prototype.corner,Math.min(l.height,mxUtils.getValue(this.state.style,"height",R.prototype.height)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.width=Math.round(Math.max(R.prototype.corner,Math.min(l.width,x.x-l.x)));this.state.style.height=Math.round(Math.max(1.5*R.prototype.corner,Math.min(l.height,x.y-l.y)))},!1)]},process:function(c){var l=[gb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
-"size",ea.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},cross:function(c){return[gb(c,["size"],function(l){var x=Math.min(l.width,l.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+c.view.graph;if(!mxEvent.isShiftDown(p.getEvent())&&!mxEvent.isControlDown(p.getEvent())&&(v.isTableRow(c.cell)||v.isTableCell(c.cell))){p=v.getSwimlaneDirection(c.style);var A=v.model.getParent(c.cell);A=v.model.getChildCells(A,!0);for(var B=[],ja=0;ja<A.length;ja++)A[ja]!=c.cell&&v.isSwimlane(A[ja])&&v.getSwimlaneDirection(v.getCurrentCellStyle(A[ja]))==p&&B.push(A[ja]);v.setCellStyles(mxConstants.STYLE_STARTSIZE,c.style[mxConstants.STYLE_STARTSIZE],B)}}));return l},label:mb(),ext:mb(),rectangle:mb(),
+triangle:mb(),rhombus:mb(),umlLifeline:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",T.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},umlFrame:function(c){return[gb(c,["width","height"],function(l){var x=Math.max(S.prototype.corner,Math.min(l.width,mxUtils.getValue(this.state.style,"width",S.prototype.width))),
+p=Math.max(1.5*S.prototype.corner,Math.min(l.height,mxUtils.getValue(this.state.style,"height",S.prototype.height)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.width=Math.round(Math.max(S.prototype.corner,Math.min(l.width,x.x-l.x)));this.state.style.height=Math.round(Math.max(1.5*S.prototype.corner,Math.min(l.height,x.y-l.y)))},!1)]},process:function(c){var l=[gb(c,["size"],function(x){var p="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),v=parseFloat(mxUtils.getValue(this.state.style,
+"size",fa.prototype.size));return p?new mxPoint(x.x+v,x.y+x.height/4):new mxPoint(x.x+x.width*v,x.y+x.height/4)},function(x,p){x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*x.width,p.x-x.x)):Math.max(0,Math.min(.5,(p.x-x.x)/x.width));this.state.style.size=x},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},cross:function(c){return[gb(c,["size"],function(l){var x=Math.min(l.width,l.height);x=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"size",Fa.prototype.size)))*x/2;return new mxPoint(l.getCenterX()-x,l.getCenterY()-x)},function(l,x){var p=Math.min(l.width,l.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,l.getCenterY()-x.y)/p*2,Math.max(0,l.getCenterX()-x.x)/p*2)))})]},note:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",f.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=
Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},note2:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(l.width,Math.min(l.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(l.x+l.width-x,l.y+x)},function(l,x){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(l.width,l.x+l.width-x.x),Math.min(l.height,x.y-l.y))))})]},manualInput:function(c){var l=[gb(c,["size"],function(x){var p=
-Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Ta.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},dataStorage:function(c){return[gb(c,["size"],function(l){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?L.prototype.fixedSize:
-L.prototype.size));return new mxPoint(l.x+l.width-p*(x?1:l.width),l.getCenterY())},function(l,x){l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(l.width,l.x+l.width-x.x)):Math.max(0,Math.min(1,(l.x+l.width-x.x)/l.width));this.state.style.size=l},!1)]},callout:function(c){var l=[gb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
-"position",ja.prototype.position)));mxUtils.getValue(this.state.style,"base",ja.prototype.base);return new mxPoint(x.x+v*x.width,x.y+x.height-p)},function(x,p){mxUtils.getValue(this.state.style,"base",ja.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(x.height,x.y+x.height-p.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["position2"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ja.prototype.position2)));
-return new mxPoint(x.x+p*x.width,x.y+x.height)},function(x,p){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["base"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position))),A=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"base",ja.prototype.base)));return new mxPoint(x.x+Math.min(x.width,
-v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ja.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},internalStorage:function(c){var l=[gb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Sa.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
-"dy",Sa.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(ob(c));return l},module:function(c){return[gb(c,["jettyWidth","jettyHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"jettyWidth",xa.prototype.jettyWidth))),p=Math.max(0,Math.min(l.height,
-mxUtils.getValue(this.state.style,"jettyHeight",xa.prototype.jettyHeight)));return new mxPoint(l.x+x/2,l.y+2*p)},function(l,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y))/2)})]},corner:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",$a.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,
-"dy",$a.prototype.dy)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.dx=Math.round(Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},tee:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",eb.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"dy",eb.prototype.dy)));return new mxPoint(l.x+(l.width+x)/2,l.y+p)},function(l,
-x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:nb(1),doubleArrow:nb(.5),folder:function(c){return[gb(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
+Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",Ta.prototype.size)));return new mxPoint(x.x+x.width/4,x.y+3*p/4)},function(x,p){this.state.style.size=Math.round(Math.max(0,Math.min(x.height,4*(p.y-x.y)/3)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},dataStorage:function(c){return[gb(c,["size"],function(l){var x="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),p=parseFloat(mxUtils.getValue(this.state.style,"size",x?K.prototype.fixedSize:
+K.prototype.size));return new mxPoint(l.x+l.width-p*(x?1:l.width),l.getCenterY())},function(l,x){l="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(l.width,l.x+l.width-x.x)):Math.max(0,Math.min(1,(l.x+l.width-x.x)/l.width));this.state.style.size=l},!1)]},callout:function(c){var l=[gb(c,["size","position"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ia.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+"position",ia.prototype.position)));mxUtils.getValue(this.state.style,"base",ia.prototype.base);return new mxPoint(x.x+v*x.width,x.y+x.height-p)},function(x,p){mxUtils.getValue(this.state.style,"base",ia.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(x.height,x.y+x.height-p.y)));this.state.style.position=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["position2"],function(x){var p=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",ia.prototype.position2)));
+return new mxPoint(x.x+p*x.width,x.y+x.height)},function(x,p){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(p.x-x.x)/x.width)))/100},!1),gb(c,["base"],function(x){var p=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,"size",ia.prototype.size))),v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ia.prototype.position))),A=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"base",ia.prototype.base)));return new mxPoint(x.x+Math.min(x.width,
+v*x.width+A),x.y+x.height-p)},function(x,p){var v=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",ia.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(x.width,p.x-x.x-v*x.width)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},internalStorage:function(c){var l=[gb(c,["dx","dy"],function(x){var p=Math.max(0,Math.min(x.width,mxUtils.getValue(this.state.style,"dx",Oa.prototype.dx))),v=Math.max(0,Math.min(x.height,mxUtils.getValue(this.state.style,
+"dy",Oa.prototype.dy)));return new mxPoint(x.x+p,x.y+v)},function(x,p){this.state.style.dx=Math.round(Math.max(0,Math.min(x.width,p.x-x.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(x.height,p.y-x.y)))},!1)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&l.push(pb(c));return l},module:function(c){return[gb(c,["jettyWidth","jettyHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"jettyWidth",xa.prototype.jettyWidth))),p=Math.max(0,Math.min(l.height,
+mxUtils.getValue(this.state.style,"jettyHeight",xa.prototype.jettyHeight)));return new mxPoint(l.x+x/2,l.y+2*p)},function(l,x){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y))/2)})]},corner:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",Xa.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,
+"dy",Xa.prototype.dy)));return new mxPoint(l.x+x,l.y+p)},function(l,x){this.state.style.dx=Math.round(Math.max(0,Math.min(l.width,x.x-l.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},tee:function(c){return[gb(c,["dx","dy"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"dx",eb.prototype.dx))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"dy",eb.prototype.dy)));return new mxPoint(l.x+(l.width+x)/2,l.y+p)},function(l,
+x){this.state.style.dx=Math.round(Math.max(0,2*Math.min(l.width/2,x.x-l.x-l.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},singleArrow:ob(1),doubleArrow:ob(.5),folder:function(c){return[gb(c,["tabWidth","tabHeight"],function(l){var x=Math.max(0,Math.min(l.width,mxUtils.getValue(this.state.style,"tabWidth",C.prototype.tabWidth))),p=Math.max(0,Math.min(l.height,mxUtils.getValue(this.state.style,"tabHeight",C.prototype.tabHeight)));mxUtils.getValue(this.state.style,
"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(x=l.width-x);return new mxPoint(l.x+x,l.y+p)},function(l,x){var p=Math.max(0,Math.min(l.width,x.x-l.x));mxUtils.getValue(this.state.style,"tabPosition",C.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(p=l.width-p);this.state.style.tabWidth=Math.round(p);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(l.height,x.y-l.y)))},!1)]},document:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,
-"size",ca.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",aa.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[gb(c,
-["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size))));
+"size",ca.prototype.size))));return new mxPoint(l.x+3*l.width/4,l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},tape:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",Z.prototype.size))));return new mxPoint(l.getCenterX(),l.y+x*l.height/2)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(x.y-l.y)/l.height*2))},!1)]},isoCube2:function(c){return[gb(c,
+["isoAngle"],function(l){var x=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",m.isoAngle))))*Math.PI/200;return new mxPoint(l.x,l.y+Math.min(l.width*Math.tan(x),.5*l.height))},function(l,x){this.state.style.isoAngle=Math.max(0,50*(x.y-l.y)/l.height)},!0)]},cylinder2:vb(q.prototype.size),cylinder3:vb(y.prototype.size),offPageConnector:function(c){return[gb(c,["size"],function(l){var x=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ha.prototype.size))));
return new mxPoint(l.getCenterX(),l.y+(1-x)*l.height)},function(l,x){this.state.style.size=Math.max(0,Math.min(1,(l.y+l.height-x.y)/l.height))},!1)]},"mxgraph.basic.rect":function(c){var l=[Graph.createHandle(c,["size"],function(x){var p=Math.max(0,Math.min(x.width/2,x.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));return new mxPoint(x.x+p,x.y+p)},function(x,p){this.state.style.size=Math.round(100*Math.max(0,Math.min(x.height/2,x.width/2,p.x-x.x)))/100})];c=Graph.createHandle(c,
-["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Bb(V.prototype.size,!0,null,!0,V.prototype.fixedSize),hexagon:Bb(J.prototype.size,!0,.5,!0,J.prototype.fixedSize),curlyBracket:Bb(qa.prototype.size,!1),display:Bb(va.prototype.size,!1),cube:mb(1,
-n.prototype.size,!1),card:mb(.5,G.prototype.size,!0),loopLimit:mb(.5,X.prototype.size,!0),trapezoid:yb(.5,Z.prototype.size,Z.prototype.fixedSize),parallelogram:yb(1,ba.prototype.size,ba.prototype.fixedSize)};Graph.createHandle=gb;Graph.handleFactory=rb;var tb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=tb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
+["indent"],function(x){var p=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(x.x+.75*x.width,x.y+p*x.height/200)},function(x,p){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(p.y-x.y)/x.height)))/100});l.push(c);return l},step:Bb(V.prototype.size,!0,null,!0,V.prototype.fixedSize),hexagon:Bb(L.prototype.size,!0,.5,!0,L.prototype.fixedSize),curlyBracket:Bb(qa.prototype.size,!1),display:Bb(va.prototype.size,!1),cube:nb(1,
+n.prototype.size,!1),card:nb(.5,G.prototype.size,!0),loopLimit:nb(.5,W.prototype.size,!0),trapezoid:yb(.5,Y.prototype.size,Y.prototype.fixedSize),parallelogram:yb(1,aa.prototype.size,aa.prototype.fixedSize)};Graph.createHandle=gb;Graph.handleFactory=rb;var tb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){var c=tb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var l=this.state.style.shape;null==mxCellRenderer.defaultShapes[l]&&
null==mxStencilRegistry.getStencil(l)?l=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(l=mxConstants.SHAPE_SWIMLANE);l=rb[l];null==l&&null!=this.state.shape&&this.state.shape.isRoundable()&&(l=rb[mxConstants.SHAPE_RECTANGLE]);null!=l&&(l=l(this.state),null!=l&&(c=null==c?l:c.concat(l)))}return c};mxEdgeHandler.prototype.createCustomHandles=function(){var c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&null==mxStencilRegistry.getStencil(c)&&(c=mxConstants.SHAPE_CONNECTOR);
-c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var zb=new mxPoint(1,0),wb=new mxPoint(1,0),Ab=mxUtils.toRadians(-30);zb=mxUtils.getRotatedPoint(zb,Math.cos(Ab),Math.sin(Ab));var pb=mxUtils.toRadians(-150);wb=mxUtils.getRotatedPoint(wb,Math.cos(pb),Math.sin(pb));mxEdgeStyle.IsometricConnector=function(c,l,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ia=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
-null==ia&&null!=l&&(ia=new mxPoint(l.getCenterX(),l.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var K=zb.x,wa=zb.y,oa=wb.x,Za=wb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ia){c=function(Ea,Ka,Ia){Ea-=hb.x;var Ha=Ka-hb.y;Ka=(Za*Ea-oa*Ha)/(K*Za-wa*oa);Ea=(wa*Ea-K*Ha)/(wa*oa-K*Za);jb?(Ia&&(hb=new mxPoint(hb.x+K*Ka,hb.y+wa*Ka),v.push(hb)),hb=new mxPoint(hb.x+oa*Ea,hb.y+Za*Ea)):(Ia&&(hb=new mxPoint(hb.x+oa*Ea,hb.y+Za*Ea),v.push(hb)),
-hb=new mxPoint(hb.x+K*Ka,hb.y+wa*Ka));v.push(hb)};var hb=ia;null==p&&(p=new mxPoint(ia.x+(B.x-ia.x)/2,ia.y+(B.y-ia.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var xb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,l){if(l==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return xb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
+c=rb[c];return null!=c?c(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var zb=new mxPoint(1,0),wb=new mxPoint(1,0),Ab=mxUtils.toRadians(-30);zb=mxUtils.getRotatedPoint(zb,Math.cos(Ab),Math.sin(Ab));var lb=mxUtils.toRadians(-150);wb=mxUtils.getRotatedPoint(wb,Math.cos(lb),Math.sin(lb));mxEdgeStyle.IsometricConnector=function(c,l,x,p,v){var A=c.view;p=null!=p&&0<p.length?p[0]:null;var B=c.absolutePoints,ja=B[0];B=B[B.length-1];null!=p&&(p=A.transformControlPoint(c,p));
+null==ja&&null!=l&&(ja=new mxPoint(l.getCenterX(),l.getCenterY()));null==B&&null!=x&&(B=new mxPoint(x.getCenterX(),x.getCenterY()));var J=zb.x,wa=zb.y,oa=wb.x,$a=wb.y,jb="horizontal"==mxUtils.getValue(c.style,"elbow","horizontal");if(null!=B&&null!=ja){c=function(Ea,Ka,Ia){Ea-=hb.x;var Ha=Ka-hb.y;Ka=($a*Ea-oa*Ha)/(J*$a-wa*oa);Ea=(wa*Ea-J*Ha)/(wa*oa-J*$a);jb?(Ia&&(hb=new mxPoint(hb.x+J*Ka,hb.y+wa*Ka),v.push(hb)),hb=new mxPoint(hb.x+oa*Ea,hb.y+$a*Ea)):(Ia&&(hb=new mxPoint(hb.x+oa*Ea,hb.y+$a*Ea),v.push(hb)),
+hb=new mxPoint(hb.x+J*Ka,hb.y+wa*Ka));v.push(hb)};var hb=ja;null==p&&(p=new mxPoint(ja.x+(B.x-ja.x)/2,ja.y+(B.y-ja.y)/2));c(p.x,p.y,!0);c(B.x,B.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var xb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(c,l){if(l==mxEdgeStyle.IsometricConnector){var x=new mxElbowEdgeHandler(c);x.snapToTerminals=!1;return x}return xb.apply(this,arguments)};t.prototype.constraints=[];E.prototype.getConstraints=
function(c,l,x){c=[];var p=Math.tan(mxUtils.toRadians(30)),v=(.5-p)/2;p=Math.min(l,x/(.5+p));l=(l-p)/2;x=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+p*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.25*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+p,x+.75*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*p,x+(1-v)*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x+.75*p));return c};m.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200;p=Math.min(l*Math.tan(p),.5*x);c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(.5,
-1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ja.prototype.getConstraints=function(c,l,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=l*Math.max(0,
+1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));return c};ia.prototype.getConstraints=function(c,l,x){c=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var p=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,"position",this.position));var v=l*Math.max(0,
Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-p)));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x-p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-p)));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),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(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(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,
1),!0),new mxConnectionConstraint(new mxPoint(1,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))];La.prototype.constraints=mxRectangleShape.prototype.constraints;
-mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
+mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;ea.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;f.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};G.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,.5*p));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x+p)));c.push(new mxConnectionConstraint(new mxPoint(0,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,1),!1));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));l>=2*p&&c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return c};n.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,Math.min(x,parseFloat(mxUtils.getValue(this.style,
@@ -2898,27 +2899,27 @@ mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwim
function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(c.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v))):(c.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-.5*p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,v)),c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.25*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};Sa.prototype.constraints=mxRectangleShape.prototype.constraints;L.prototype.constraints=mxRectangleShape.prototype.constraints;na.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;
-pa.prototype.constraints=mxEllipse.prototype.constraints;Ua.prototype.constraints=mxEllipse.prototype.constraints;Ta.prototype.constraints=mxRectangleShape.prototype.constraints;Ra.prototype.constraints=mxRectangleShape.prototype.constraints;va.prototype.getConstraints=function(c,l,x){c=[];var p=Math.min(l,x/2),v=Math.min(l-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,.75*(x-v)+v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,x));c.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return c};Oa.prototype.constraints=mxRectangleShape.prototype.constraints;K.prototype.constraints=mxRectangleShape.prototype.constraints;na.prototype.constraints=mxEllipse.prototype.constraints;ua.prototype.constraints=mxEllipse.prototype.constraints;
+pa.prototype.constraints=mxEllipse.prototype.constraints;Ua.prototype.constraints=mxEllipse.prototype.constraints;Ta.prototype.constraints=mxRectangleShape.prototype.constraints;Sa.prototype.constraints=mxRectangleShape.prototype.constraints;va.prototype.getConstraints=function(c,l,x){c=[];var p=Math.min(l,x/2),v=Math.min(l-p,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*l);c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,v,0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),0));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,0));c.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(v+l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,v,x));return c};xa.prototype.getConstraints=function(c,l,x){l=parseFloat(mxUtils.getValue(c,
"jettyWidth",xa.prototype.jettyWidth))/2;c=parseFloat(mxUtils.getValue(c,"jettyHeight",xa.prototype.jettyHeight));var p=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,
.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,l),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,1.5*c)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(x-.5*c,3.5*c))];x>5*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,l));x>8*c&&p.push(new mxConnectionConstraint(new mxPoint(0,
-.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};X.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
-.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,
+.5),!1,null,l));x>15*c&&p.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,l));return p};W.prototype.constraints=mxRectangleShape.prototype.constraints;ha.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
+.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];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)];ta.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,
.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,
.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];F.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,
-.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];aa.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,
+.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)];Z.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)];V.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)];da.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)];ba.prototype.constraints=mxRectangleShape.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,
+.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)];aa.prototype.constraints=mxRectangleShape.prototype.constraints;Y.prototype.constraints=mxRectangleShape.prototype.constraints;ca.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;eb.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,
"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*l+.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(l+p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),x));c.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*l-.25*p,v));c.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};$a.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,0,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*v));return c};Xa.prototype.getConstraints=function(c,l,x){c=[];var p=Math.max(0,Math.min(l,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),v=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1));c.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));c.push(new mxConnectionConstraint(new mxPoint(1,0),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,l,.5*v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l+p),v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,v));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,.5*(x+v)));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,p,x));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*p,x));c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,
1),!1));return c};Ga.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)];bb.prototype.getConstraints=
function(c,l,x){c=[];var p=x*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),v=l*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));p=(x-p)/2;c.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(l-v),p));c.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l-v,0));c.push(new mxConnectionConstraint(new mxPoint(1,
@@ -2937,7 +2938,7 @@ window.openFile.setConsumer(mxUtils.bind(this,function(g,m){try{var q=mxUtils.pa
null,Editor.ctrlKey+"+Shift+S").isEnabled=E;this.addAction("export...",function(){n.showDialog((new ExportDialog(n)).container,300,340,!0,!0)});this.addAction("editDiagram...",function(){var g=new EditDiagramDialog(n);n.showDialog(g.container,620,420,!0,!1);g.init()});this.addAction("pageSetup...",function(){n.showDialog((new PageSetupDialog(n)).container,320,240,!0,!0)}).isEnabled=E;this.addAction("print...",function(){n.showDialog((new PrintDialog(n)).container,300,180,!0,!0)},null,"sprite-print",
Editor.ctrlKey+"+P");this.addAction("preview",function(){mxUtils.show(t,null,10,10)});this.addAction("undo",function(){n.undo()},null,"sprite-undo",Editor.ctrlKey+"+Z");this.addAction("redo",function(){n.redo()},null,"sprite-redo",mxClient.IS_WIN?Editor.ctrlKey+"+Y":Editor.ctrlKey+"+Shift+Z");this.addAction("cut",function(){var g=null;try{g=n.copyXml(),null!=g&&t.removeCells(g,!1)}catch(m){}null==g&&mxClipboard.cut(t)},null,"sprite-cut",Editor.ctrlKey+"+X");this.addAction("copy",function(){try{n.copyXml()}catch(g){}try{mxClipboard.copy(t)}catch(g){n.handleError(g)}},
null,"sprite-copy",Editor.ctrlKey+"+C");this.addAction("paste",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(m){if(null!=m){t.getModel().beginUpdate();try{n.pasteXml(m,!0)}finally{t.getModel().endUpdate()}}else mxClipboard.paste(t)}),g=!0)}catch(m){}g||mxClipboard.paste(t)}},!1,"sprite-paste",Editor.ctrlKey+"+V");this.addAction("pasteHere",function(g){function m(y){if(null!=y){for(var F=!0,C=0;C<
-y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var I=t.view.translate;C=t.view.scale;var G=I.x,aa=I.y;I=null;if(1==y.length&&F){var ca=t.getCellGeometry(y[0]);null!=ca&&(I=ca.getTerminalPoint(!0))}I=null!=I?I:t.getBoundingBoxFromGeometry(y,F);null!=I&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-aa)),t.cellsMoved(y,F-I.x,C-I.y))}}function q(){t.getModel().beginUpdate();try{m(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
+y.length&&F;C++)F=F&&t.model.isEdge(y[C]);var I=t.view.translate;C=t.view.scale;var G=I.x,Z=I.y;I=null;if(1==y.length&&F){var ca=t.getCellGeometry(y[0]);null!=ca&&(I=ca.getTerminalPoint(!0))}I=null!=I?I:t.getBoundingBoxFromGeometry(y,F);null!=I&&(F=Math.round(t.snap(t.popupMenuHandler.triggerX/C-G)),C=Math.round(t.snap(t.popupMenuHandler.triggerY/C-Z)),t.cellsMoved(y,F-I.x,C-I.y))}}function q(){t.getModel().beginUpdate();try{m(mxClipboard.paste(t))}finally{t.getModel().endUpdate()}}if(t.isEnabled()&&
!t.isCellLocked(t.getDefaultParent())){g=!1;try{Editor.enableNativeCipboard&&(n.readGraphModelFromClipboard(function(y){if(null!=y){t.getModel().beginUpdate();try{m(n.pasteXml(y,!0))}finally{t.getModel().endUpdate()}}else q()}),g=!0)}catch(y){}g||q()}});this.addAction("copySize",function(){var g=t.getSelectionCell();t.isEnabled()&&null!=g&&t.getModel().isVertex(g)&&(g=t.getCellGeometry(g),null!=g&&(n.copiedSize=new mxRectangle(g.x,g.y,g.width,g.height)))},null,null,"Alt+Shift+X");this.addAction("pasteSize",
function(){if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedSize){t.getModel().beginUpdate();try{for(var g=t.getResizableCells(t.getSelectionCells()),m=0;m<g.length;m++)if(t.getModel().isVertex(g[m])){var q=t.getCellGeometry(g[m]);null!=q&&(q=q.clone(),q.width=n.copiedSize.width,q.height=n.copiedSize.height,t.getModel().setGeometry(g[m],q))}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+V");this.addAction("copyData",function(){var g=t.getSelectionCell()||t.getModel().getRoot();t.isEnabled()&&
null!=g&&(g=g.cloneValue(),null==g||isNaN(g.nodeType)||(n.copiedValue=g))},null,null,"Alt+Shift+B");this.addAction("pasteData",function(g,m){function q(C,I){var G=y.getValue(C);I=C.cloneValue(I);I.removeAttribute("placeholders");null==G||isNaN(G.nodeType)||I.setAttribute("placeholders",G.getAttribute("placeholders"));null!=g&&mxEvent.isShiftDown(g)||I.setAttribute("label",t.convertValueToString(C));y.setValue(C,I)}g=null!=m?m:g;var y=t.getModel();if(t.isEnabled()&&!t.isSelectionEmpty()&&null!=n.copiedValue){y.beginUpdate();
@@ -2986,9 +2987,9 @@ null,null,Editor.ctrlKey+"+Shift+D");this.addAction("clearDefaultStyle",function
t.getModel().getParent(g),C=t.getCellGeometry(g);F=Math.round(t.snap(t.popupMenuHandler.triggerX/y-F));y=Math.round(t.snap(t.popupMenuHandler.triggerY/y-q));m.addPointAt(m.state,F,y)}}});this.addAction("removeWaypoint",function(){var g=n.actions.get("removeWaypoint");null!=g.handler&&g.handler.removePoint(g.handler.state,g.index)});this.addAction("clearWaypoints",function(g,m){g=null!=m?m:g;var q=t.getSelectionCells();if(null!=q){q=t.getEditableCells(t.addAllEdges(q));t.getModel().beginUpdate();try{for(var y=
0;y<q.length;y++){var F=q[y];if(t.getModel().isEdge(F)){var C=t.getCellGeometry(F);null!=m&&mxEvent.isShiftDown(g)?(t.setCellStyles(mxConstants.STYLE_EXIT_X,null,[F]),t.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[F]),t.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[F])):null!=C&&(C=C.clone(),C.points=null,C.x=0,C.y=0,C.offset=null,t.getModel().setGeometry(F,C))}}}finally{t.getModel().endUpdate()}}},null,null,"Alt+Shift+C");d=this.addAction("subscript",
mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");d=this.addAction("superscript",mxUtils.bind(this,function(){t.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())){var g=mxResources.get("image")+" ("+mxResources.get("url")+"):",m=t.getView().getState(t.getSelectionCell()),
-q="",y=null;null!=m&&(q=m.style[mxConstants.STYLE_IMAGE]||q,y=m.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,I,G,aa,ca,ba){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,I,G);else{var Z=t.getSelectionCells();if(null!=C&&(0<C.length||0<Z.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Z.length){Z=[t.insertVertex(t.getDefaultParent(),null,"",0,0,I,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
-var N=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry(Z,!0));Z[0].geometry.x=N.x;Z[0].geometry.y=N.y;null!=aa&&k(Z[0],aa,ca,ba,t);qa=Z;t.fireEvent(new mxEventObject("cellsInserted","cells",qa))}t.setCellStyles(mxConstants.STYLE_IMAGE,0<C.length?C:null,Z);var Y=t.getCurrentCellStyle(Z[0]);"image"!=Y[mxConstants.STYLE_SHAPE]&&"label"!=Y[mxConstants.STYLE_SHAPE]?t.setCellStyles(mxConstants.STYLE_SHAPE,"image",Z):0==C.length&&t.setCellStyles(mxConstants.STYLE_SHAPE,null,Z);if(1==t.getSelectionCount()&&
-null!=I&&null!=G){var ea=Z[0],ka=t.getModel().getGeometry(ea);null!=ka&&(ka=ka.clone(),ka.width=I,ka.height=G,t.getModel().setGeometry(ea,ka));null!=aa?k(ea,aa,ca,ba,t):t.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,Z)}}finally{t.getModel().endUpdate()}null!=qa&&(t.setSelectionCells(qa),t.scrollCellToVisible(qa[0]))}}},t.cellEditor.isContentEditing(),!t.cellEditor.isContentEditing(),!0,y)}}).isEnabled=E;this.addAction("crop...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&
+q="",y=null;null!=m&&(q=m.style[mxConstants.STYLE_IMAGE]||q,y=m.style[mxConstants.STYLE_CLIP_PATH]||y);var F=t.cellEditor.saveSelection();n.showImageDialog(g,q,function(C,I,G,Z,ca,aa){if(t.cellEditor.isContentEditing())t.cellEditor.restoreSelection(F),t.insertImage(C,I,G);else{var Y=t.getSelectionCells();if(null!=C&&(0<C.length||0<Y.length)){var qa=null;t.getModel().beginUpdate();try{if(0==Y.length){Y=[t.insertVertex(t.getDefaultParent(),null,"",0,0,I,G,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")];
+var Q=t.getCenterInsertPoint(t.getBoundingBoxFromGeometry(Y,!0));Y[0].geometry.x=Q.x;Y[0].geometry.y=Q.y;null!=Z&&k(Y[0],Z,ca,aa,t);qa=Y;t.fireEvent(new mxEventObject("cellsInserted","cells",qa))}t.setCellStyles(mxConstants.STYLE_IMAGE,0<C.length?C:null,Y);var X=t.getCurrentCellStyle(Y[0]);"image"!=X[mxConstants.STYLE_SHAPE]&&"label"!=X[mxConstants.STYLE_SHAPE]?t.setCellStyles(mxConstants.STYLE_SHAPE,"image",Y):0==C.length&&t.setCellStyles(mxConstants.STYLE_SHAPE,null,Y);if(1==t.getSelectionCount()&&
+null!=I&&null!=G){var fa=Y[0],ka=t.getModel().getGeometry(fa);null!=ka&&(ka=ka.clone(),ka.width=I,ka.height=G,t.getModel().setGeometry(fa,ka));null!=Z?k(fa,Z,ca,aa,t):t.setCellStyles(mxConstants.STYLE_CLIP_PATH,null,Y)}}finally{t.getModel().endUpdate()}null!=qa&&(t.setSelectionCells(qa),t.scrollCellToVisible(qa[0]))}}},t.cellEditor.isContentEditing(),!t.cellEditor.isContentEditing(),!0,y)}}).isEnabled=E;this.addAction("crop...",function(){var g=t.getSelectionCell();if(t.isEnabled()&&!t.isCellLocked(t.getDefaultParent())&&
null!=g){var m=t.getCurrentCellStyle(g),q=m[mxConstants.STYLE_IMAGE],y=m[mxConstants.STYLE_SHAPE];q&&"image"==y&&(m=new CropImageDialog(n,q,m[mxConstants.STYLE_CLIP_PATH],function(F,C,I){k(g,F,C,I,t)}),n.showDialog(m.container,300,390,!0,!0))}}).isEnabled=E;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(n,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("layers"))})),
this.layersWindow.window.addListener("hide",function(){n.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),n.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(){n.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return 0<n.formatWidth}));d=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(n,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){n.fireEvent(new mxEventObject("outline"))})),this.outlineWindow.window.addListener("hide",function(){n.fireEvent(new mxEventObject("outline"))}),
@@ -3004,7 +3005,7 @@ e))}catch(t){null!=e&&e(t)}}),e))};
DrawioFile.prototype.mergeFile=function(b,e,k,n){var D=!0;try{this.stats.fileMerged++;var t=this.getShadowPages(),E=b.getShadowPages();if(null!=E&&0<E.length){var d=[this.ui.diffPages(null!=n?n:t,E)],f=this.ignorePatches(d);this.setShadowPages(E);if(f)EditorUi.debug("File.mergeFile",[this],"file",[b],"ignored",f);else{null!=this.sync&&this.sync.sendLocalChanges();this.backupPatch=this.isModified()?this.ui.diffPages(t,this.ui.pages):null;n={};f={};var g=this.ui.patchPages(t,d[0]),m=this.ui.getHashValueForPages(g,
n),q=this.ui.getHashValueForPages(E,f);EditorUi.debug("File.mergeFile",[this],"file",[b],"shadow",t,"pages",this.ui.pages,"patches",d,"backup",this.backupPatch,"checksum",m,"current",q,"valid",m==q,"from",this.getCurrentRevisionId(),"to",b.getCurrentRevisionId(),"modified",this.isModified());if(null!=m&&m!=q){var y=this.compressReportData(this.getAnonymizedXmlForPages(E)),F=this.compressReportData(this.getAnonymizedXmlForPages(g)),C=this.ui.hashValue(b.getCurrentEtag()),I=this.ui.hashValue(this.getCurrentEtag());
this.checksumError(k,d,"Shadow Details: "+JSON.stringify(n)+"\nChecksum: "+m+"\nCurrent: "+q+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+C+"\nTo: "+I+"\n\nFile Data:\n"+y+"\nPatched Shadow:\n"+F,null,"mergeFile");return}if(null!=this.sync){var G=this.sync.patchRealtime(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null);null==G||mxUtils.isEmptyObject(G)||d.push(G)}this.patch(d,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw D=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=
-this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=e&&e()}catch(ba){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=k&&k(ba);try{if(D)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,ba);else{var aa=this.getCurrentUser(),ca=null!=aa?aa.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),ca,ba)}}catch(Z){}}};
+this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=e&&e()}catch(aa){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=k&&k(aa);try{if(D)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,aa);else{var Z=this.getCurrentUser(),ca=null!=Z?Z.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),ca,aa)}}catch(Y){}}};
DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var e=new mxCodec(mxUtils.createXmlDocument()),k=e.document.createElement("mxfile");if(null!=b)for(var n=0;n<b.length;n++){var D=e.encode(new mxGraphModel(b[n].root));"1"!=urlParams.dev&&(D=this.ui.anonymizeNode(D,!0));D.setAttribute("id",b[n].getId());b[n].viewState&&this.ui.editor.graph.saveViewState(b[n].viewState,D,!0);k.appendChild(D)}return mxUtils.getPrettyXml(k)};
DrawioFile.prototype.compressReportData=function(b,e,k){e=null!=e?e:1E4;null!=k&&null!=b&&b.length>k?b=b.substring(0,k)+"[...]":null!=b&&b.length>e&&(b=Graph.compress(b)+"\n");return b};
DrawioFile.prototype.checksumError=function(b,e,k,n,D){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=e)for(b=0;b<e.length;b++)this.ui.anonymizePatch(e[b]);var t=mxUtils.bind(this,function(g){var m=this.compressReportData(JSON.stringify(e,null,2));g=null==g?"n/a":this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForXml(g.data)),
@@ -3121,103 +3122,103 @@ H){u=H.editorUi.editor.graph.getCellStyle(1==u.vertices.length&&0==u.edges.lengt
{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",getDefaultValue:function(u,H){return H.editorUi.editor.graph.isCellConnectable(0<u.vertices.length&&0==u.edges.length?u.vertices[0]:null)},isVisible:function(u,H){return 0<u.vertices.length&&0==u.edges.length}},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},
{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter",defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",
dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter",dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"},{val:"centerPerimeter",dispName:"Center"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"dropTarget",dispName:"Drop Target",type:"bool",getDefaultValue:function(u,
-H){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=u&&(H.isSwimlane(u)||0<H.model.getChildCount(u))},isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,H){var O=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=O&&(H.isContainer(O)&&"0"!=u.style.collapsible||!H.isContainer(O)&&"1"==u.style.collapsible)},
+H){u=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=u&&(H.isSwimlane(u)||0<H.model.getChildCount(u))},isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(u,H){var P=1==u.vertices.length&&0==u.edges.length?u.vertices[0]:null;H=H.editorUi.editor.graph;return null!=P&&(H.isContainer(P)&&"0"!=u.style.collapsible||!H.isContainer(P)&&"1"==u.style.collapsible)},
isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(u,H){return 1==u.vertices.length&&0==u.edges.length&&!H.editorUi.editor.graph.isSwimlane(u.vertices[0])&&null==mxUtils.getValue(u.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function(u,H){H=H.editorUi.editor.graph.model;return 0<u.vertices.length?
H.isVertex(H.getParent(u.vertices[0])):!1}},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"metaEdit",dispName:"Edit Dialog",type:"bool",defVal:!1},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(u,H){u=0<u.vertices.length?H.editorUi.editor.graph.getCellGeometry(u.vertices[0]):null;return null!=u&&!u.relative}},
{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"fixedWidth",dispName:"Fixed Width",type:"bool",defVal:!1},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},
-{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,H){var O=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return H.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==O||O==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||
+{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(u,H){var P=mxUtils.getValue(u.style,mxConstants.STYLE_FILLCOLOR,null);return H.editorUi.editor.graph.isSwimlane(u.vertices[0])||null==P||P==mxConstants.NONE||0==mxUtils.getValue(u.style,mxConstants.STYLE_FILL_OPACITY,100)||0==mxUtils.getValue(u.style,mxConstants.STYLE_OPACITY,100)||
null!=u.style.pointerEvents}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(u,H){return 0<u.vertices.length&&H.editorUi.editor.graph.isContainer(u.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Style to be used for objects not in the CSV. If this is - then such objects are ignored,\n## else they are created using this as their style, eg. whiteSpace=wrap;html=1;\n#\n# unknownStyle: -\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## In addition to those, an optional source and targetlabel can be used to specify a label\n## that contains placeholders referencing the respective columns in the source or target row.\n## The label is created in the form fromlabel + sourcelabel + label + tolabel + targetlabel.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## An optional placeholders with the string value "source" or "target" can be specified\n## to replace placeholders in the additional label with data from the source or target.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Collapsed state for vertices. Possible values are true or false. Default is false.\n#\n# collapsed: false\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle, orgchart or a JSON string as used in\n## Layout, Apply. Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
-Editor.createRoughCanvas=function(u){var H=rough.canvas({getContext:function(){return u}});H.draw=function(O){var T=O.sets||[];O=O.options||this.getDefaultOptions();for(var R=0;R<T.length;R++){var da=T[R];switch(da.type){case "path":null!=O.stroke&&this._drawToContext(u,da,O);break;case "fillPath":this._drawToContext(u,da,O);break;case "fillSketch":this.fillSketch(u,da,O)}}};H.fillSketch=function(O,T,R){var da=u.state.strokeColor,P=u.state.strokeWidth,ma=u.state.strokeAlpha,ra=u.state.dashed,xa=R.fillWeight;
-0>xa&&(xa=R.strokeWidth/2);u.setStrokeAlpha(u.state.fillAlpha);u.setStrokeColor(R.fill||"");u.setStrokeWidth(xa);u.setDashed(!1);this._drawToContext(O,T,R);u.setDashed(ra);u.setStrokeWidth(P);u.setStrokeColor(da);u.setStrokeAlpha(ma)};H._drawToContext=function(O,T,R){O.begin();for(var da=0;da<T.ops.length;da++){var P=T.ops[da],ma=P.data;switch(P.op){case "move":O.moveTo(ma[0],ma[1]);break;case "bcurveTo":O.curveTo(ma[0],ma[1],ma[2],ma[3],ma[4],ma[5]);break;case "lineTo":O.lineTo(ma[0],ma[1])}}O.end();
-"fillPath"===T.type&&R.filled?O.fill():O.stroke()};return H};(function(){function u(da,P,ma){this.canvas=da;this.rc=P;this.shape=ma;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,u.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,u.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,u.prototype.rect);this.originalRoundrect=this.canvas.roundrect;
+Editor.createRoughCanvas=function(u){var H=rough.canvas({getContext:function(){return u}});H.draw=function(P){var T=P.sets||[];P=P.options||this.getDefaultOptions();for(var S=0;S<T.length;S++){var da=T[S];switch(da.type){case "path":null!=P.stroke&&this._drawToContext(u,da,P);break;case "fillPath":this._drawToContext(u,da,P);break;case "fillSketch":this.fillSketch(u,da,P)}}};H.fillSketch=function(P,T,S){var da=u.state.strokeColor,R=u.state.strokeWidth,ma=u.state.strokeAlpha,ra=u.state.dashed,xa=S.fillWeight;
+0>xa&&(xa=S.strokeWidth/2);u.setStrokeAlpha(u.state.fillAlpha);u.setStrokeColor(S.fill||"");u.setStrokeWidth(xa);u.setDashed(!1);this._drawToContext(P,T,S);u.setDashed(ra);u.setStrokeWidth(R);u.setStrokeColor(da);u.setStrokeAlpha(ma)};H._drawToContext=function(P,T,S){P.begin();for(var da=0;da<T.ops.length;da++){var R=T.ops[da],ma=R.data;switch(R.op){case "move":P.moveTo(ma[0],ma[1]);break;case "bcurveTo":P.curveTo(ma[0],ma[1],ma[2],ma[3],ma[4],ma[5]);break;case "lineTo":P.lineTo(ma[0],ma[1])}}P.end();
+"fillPath"===T.type&&S.filled?P.fill():P.stroke()};return H};(function(){function u(da,R,ma){this.canvas=da;this.rc=R;this.shape=ma;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,u.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,u.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,u.prototype.rect);this.originalRoundrect=this.canvas.roundrect;
this.canvas.roundrect=mxUtils.bind(this,u.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,u.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,u.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,u.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,u.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=
mxUtils.bind(this,u.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,u.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,u.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,u.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,u.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,
-u.prototype.fillAndStroke);this.path=[];this.passThrough=!1}u.prototype.moveOp="M";u.prototype.lineOp="L";u.prototype.quadOp="Q";u.prototype.curveOp="C";u.prototype.closeOp="Z";u.prototype.getStyle=function(da,P){var ma=1;if(null!=this.shape.state){var ra=this.shape.state.cell.id;if(null!=ra)for(var xa=0;xa<ra.length;xa++)ma=(ma<<5)-ma+ra.charCodeAt(xa)<<0}ma={strokeWidth:this.canvas.state.strokeWidth,seed:ma,preserveVertices:!0};ra=this.rc.getDefaultOptions();ma.stroke=da?this.canvas.state.strokeColor===
-mxConstants.NONE?"transparent":this.canvas.state.strokeColor:mxConstants.NONE;da=null;(ma.filled=P)?(ma.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,da=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):ma.fill="";ma.bowing=mxUtils.getValue(this.shape.style,"bowing",ra.bowing);ma.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",ra.hachureAngle);ma.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",
-ra.curveFitting);ma.roughness=mxUtils.getValue(this.shape.style,"jiggle",ra.roughness);ma.simplification=mxUtils.getValue(this.shape.style,"simplification",ra.simplification);ma.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",ra.disableMultiStroke);ma.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",ra.disableMultiStrokeFill);P=mxUtils.getValue(this.shape.style,"hachureGap",-1);ma.hachureGap="auto"==P?-1:P;ma.dashGap=mxUtils.getValue(this.shape.style,
-"dashGap",P);ma.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",P);ma.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",P);P=mxUtils.getValue(this.shape.style,"fillWeight",-1);ma.fillWeight="auto"==P?-1:P;P=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==P&&(P=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),P=null!=ma.fill&&(null!=da||null!=P&&ma.fill==P)?"solid":ra.fillStyle);
-ma.fillStyle=P;return ma};u.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};u.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};u.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var da=2;da<arguments.length;da+=2)this.lastX=arguments[da-1],this.lastY=arguments[da],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};
-u.prototype.lineTo=function(da,P){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,da,P),this.lastX=da,this.lastY=P)};u.prototype.moveTo=function(da,P){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,da,P),this.lastX=da,this.lastY=P,this.firstX=da,this.firstY=P)};u.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};u.prototype.quadTo=function(da,P,ma,
-ra){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,da,P,ma,ra),this.lastX=ma,this.lastY=ra)};u.prototype.curveTo=function(da,P,ma,ra,xa,ta){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,da,P,ma,ra,xa,ta),this.lastX=xa,this.lastY=ta)};u.prototype.arcTo=function(da,P,ma,ra,xa,ta,Aa){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var Ca=mxUtils.arcToCurves(this.lastX,this.lastY,da,P,ma,
-ra,xa,ta,Aa);if(null!=Ca)for(var Ba=0;Ba<Ca.length;Ba+=6)this.curveTo(Ca[Ba],Ca[Ba+1],Ca[Ba+2],Ca[Ba+3],Ca[Ba+4],Ca[Ba+5]);this.lastX=ta;this.lastY=Aa}};u.prototype.rect=function(da,P,ma,ra){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(da,P,ma,ra,this.getStyle(!0,!0)))};u.prototype.ellipse=function(da,P,ma,ra){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(da+
-ma/2,P+ra/2,ma,ra,this.getStyle(!0,!0)))};u.prototype.roundrect=function(da,P,ma,ra,xa,ta){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(da+xa,P),this.lineTo(da+ma-xa,P),this.quadTo(da+ma,P,da+ma,P+ta),this.lineTo(da+ma,P+ra-ta),this.quadTo(da+ma,P+ra,da+ma-xa,P+ra),this.lineTo(da+xa,P+ra),this.quadTo(da,P+ra,da,P+ra-ta),this.lineTo(da,P+ta),this.quadTo(da,P,da+xa,P))};u.prototype.drawPath=function(da){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),
-da)}catch(ma){}this.passThrough=!1}else if(null!=this.nextShape){for(var P in da)this.nextShape.options[P]=da[P];da.stroke!=mxConstants.NONE&&null!=da.stroke||delete this.nextShape.options.stroke;da.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};u.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};u.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,
+u.prototype.fillAndStroke);this.path=[];this.passThrough=!1}u.prototype.moveOp="M";u.prototype.lineOp="L";u.prototype.quadOp="Q";u.prototype.curveOp="C";u.prototype.closeOp="Z";u.prototype.getStyle=function(da,R){var ma=1;if(null!=this.shape.state){var ra=this.shape.state.cell.id;if(null!=ra)for(var xa=0;xa<ra.length;xa++)ma=(ma<<5)-ma+ra.charCodeAt(xa)<<0}ma={strokeWidth:this.canvas.state.strokeWidth,seed:ma,preserveVertices:!0};ra=this.rc.getDefaultOptions();ma.stroke=da?this.canvas.state.strokeColor===
+mxConstants.NONE?"transparent":this.canvas.state.strokeColor:mxConstants.NONE;da=null;(ma.filled=R)?(ma.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,da=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):ma.fill="";ma.bowing=mxUtils.getValue(this.shape.style,"bowing",ra.bowing);ma.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",ra.hachureAngle);ma.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",
+ra.curveFitting);ma.roughness=mxUtils.getValue(this.shape.style,"jiggle",ra.roughness);ma.simplification=mxUtils.getValue(this.shape.style,"simplification",ra.simplification);ma.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",ra.disableMultiStroke);ma.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",ra.disableMultiStrokeFill);R=mxUtils.getValue(this.shape.style,"hachureGap",-1);ma.hachureGap="auto"==R?-1:R;ma.dashGap=mxUtils.getValue(this.shape.style,
+"dashGap",R);ma.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",R);ma.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",R);R=mxUtils.getValue(this.shape.style,"fillWeight",-1);ma.fillWeight="auto"==R?-1:R;R=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==R&&(R=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),R=null!=ma.fill&&(null!=da||null!=R&&ma.fill==R)?"solid":ra.fillStyle);
+ma.fillStyle=R;return ma};u.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};u.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};u.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var da=2;da<arguments.length;da+=2)this.lastX=arguments[da-1],this.lastY=arguments[da],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};
+u.prototype.lineTo=function(da,R){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,da,R),this.lastX=da,this.lastY=R)};u.prototype.moveTo=function(da,R){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,da,R),this.lastX=da,this.lastY=R,this.firstX=da,this.firstY=R)};u.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};u.prototype.quadTo=function(da,R,ma,
+ra){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,da,R,ma,ra),this.lastX=ma,this.lastY=ra)};u.prototype.curveTo=function(da,R,ma,ra,xa,ta){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,da,R,ma,ra,xa,ta),this.lastX=xa,this.lastY=ta)};u.prototype.arcTo=function(da,R,ma,ra,xa,ta,Aa){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var Ca=mxUtils.arcToCurves(this.lastX,this.lastY,da,R,ma,
+ra,xa,ta,Aa);if(null!=Ca)for(var Ba=0;Ba<Ca.length;Ba+=6)this.curveTo(Ca[Ba],Ca[Ba+1],Ca[Ba+2],Ca[Ba+3],Ca[Ba+4],Ca[Ba+5]);this.lastX=ta;this.lastY=Aa}};u.prototype.rect=function(da,R,ma,ra){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(da,R,ma,ra,this.getStyle(!0,!0)))};u.prototype.ellipse=function(da,R,ma,ra){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(da+
+ma/2,R+ra/2,ma,ra,this.getStyle(!0,!0)))};u.prototype.roundrect=function(da,R,ma,ra,xa,ta){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(da+xa,R),this.lineTo(da+ma-xa,R),this.quadTo(da+ma,R,da+ma,R+ta),this.lineTo(da+ma,R+ra-ta),this.quadTo(da+ma,R+ra,da+ma-xa,R+ra),this.lineTo(da+xa,R+ra),this.quadTo(da,R+ra,da,R+ra-ta),this.lineTo(da,R+ta),this.quadTo(da,R,da+xa,R))};u.prototype.drawPath=function(da){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),
+da)}catch(ma){}this.passThrough=!1}else if(null!=this.nextShape){for(var R in da)this.nextShape.options[R]=da[R];da.stroke!=mxConstants.NONE&&null!=da.stroke||delete this.nextShape.options.stroke;da.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};u.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};u.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,
arguments):this.drawPath(this.getStyle(!1,!0))};u.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};u.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;this.canvas.close=this.originalClose;this.canvas.fill=
this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(da){return new u(da,Editor.createRoughCanvas(da),this)};var H=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(da){return this.outline||
-null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?H.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(da):this.createRoughCanvas(da)};var O=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(da,P,ma,ra,xa){null!=da.handJiggle&&da.handJiggle.passThrough||O.apply(this,arguments)};var T=mxShape.prototype.paint;mxShape.prototype.paint=function(da){var P=da.addTolerance,ma=!0;null!=this.style&&(ma=
+null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?H.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(da):this.createRoughCanvas(da)};var P=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(da,R,ma,ra,xa){null!=da.handJiggle&&da.handJiggle.passThrough||P.apply(this,arguments)};var T=mxShape.prototype.paint;mxShape.prototype.paint=function(da){var R=da.addTolerance,ma=!0;null!=this.style&&(ma=
"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=da.handJiggle&&da.handJiggle.constructor==u&&!this.outline){da.save();var ra=this.fill,xa=this.stroke;this.stroke=this.fill=null;var ta=this.configurePointerEvents,Aa=da.setStrokeColor;da.setStrokeColor=function(){};var Ca=da.setFillColor;da.setFillColor=function(){};ma||null==ra||(this.configurePointerEvents=function(){});da.handJiggle.passThrough=!0;T.apply(this,arguments);da.handJiggle.passThrough=!1;da.setFillColor=
-Ca;da.setStrokeColor=Aa;this.configurePointerEvents=ta;this.stroke=xa;this.fill=ra;da.restore();ma&&null!=ra&&(da.addTolerance=function(){})}T.apply(this,arguments);da.addTolerance=P};var R=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(da,P,ma,ra,xa,ta){null!=da.handJiggle&&da.handJiggle.constructor==u?(da.handJiggle.passThrough=!0,R.apply(this,arguments),da.handJiggle.passThrough=!1):R.apply(this,arguments)}})();Editor.fastCompress=function(u){return null==u||0==
-u.length||"undefined"===typeof pako?u:Graph.arrayBufferToString(pako.deflateRaw(u))};Editor.fastDecompress=function(u){return null==u||0==u.length||"undefined"===typeof pako?u:pako.inflateRaw(Graph.stringToArrayBuffer(atob(u)),{to:"string"})};Editor.extractGraphModel=function(u,H,O){if(null!=u&&"undefined"!==typeof pako){var T=u.ownerDocument.getElementsByTagName("div"),R=[];if(null!=T&&0<T.length)for(var da=0;da<T.length;da++)if("mxgraph"==T[da].getAttribute("class")){R.push(T[da]);break}0<R.length&&
-(T=R[0].getAttribute("data-mxgraph"),null!=T?(R=JSON.parse(T),null!=R&&null!=R.xml&&(u=mxUtils.parseXml(R.xml),u=u.documentElement)):(R=R[0].getElementsByTagName("div"),0<R.length&&(T=mxUtils.getTextContent(R[0]),T=Graph.decompress(T,null,O),0<T.length&&(u=mxUtils.parseXml(T),u=u.documentElement))))}if(null!=u&&"svg"==u.nodeName)if(T=u.getAttribute("content"),null!=T&&"<"!=T.charAt(0)&&"%"!=T.charAt(0)&&(T=unescape(window.atob?atob(T):Base64.decode(cont,T))),null!=T&&"%"==T.charAt(0)&&(T=decodeURIComponent(T)),
-null!=T&&0<T.length)u=mxUtils.parseXml(T).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==u||H||(R=null,"diagram"==u.nodeName?R=u:"mxfile"==u.nodeName&&(T=u.getElementsByTagName("diagram"),0<T.length&&(R=T[Math.max(0,Math.min(T.length-1,urlParams.page||0))])),null!=R&&(u=Editor.parseDiagramNode(R,O)));null==u||"mxGraphModel"==u.nodeName||H&&"mxfile"==u.nodeName||(u=null);return u};Editor.parseDiagramNode=function(u,H){var O=mxUtils.trim(mxUtils.getTextContent(u)),T=null;
-0<O.length?(u=Graph.decompress(O,null,H),null!=u&&0<u.length&&(T=mxUtils.parseXml(u).documentElement)):(u=mxUtils.getChildNodes(u),0<u.length&&(T=mxUtils.createXmlDocument(),T.appendChild(T.importNode(u[0],!0)),T=T.documentElement));return T};Editor.getDiagramNodeXml=function(u){var H=mxUtils.getTextContent(u),O=null;0<H.length?O=Graph.decompress(H):null!=u.firstChild&&(O=mxUtils.getXml(u.firstChild));return O};Editor.extractGraphModelFromPdf=function(u){u=u.substring(u.indexOf(",")+1);u=window.atob&&
-!mxClient.IS_SF?atob(u):Base64.decode(u,!0);if("%PDF-1.7"==u.substring(0,8)){var H=u.indexOf("EmbeddedFile");if(-1<H){var O=u.indexOf("stream",H)+9;if(0<u.substring(H,O).indexOf("application#2Fvnd.jgraph.mxfile"))return H=u.indexOf("endstream",O-1),pako.inflateRaw(Graph.stringToArrayBuffer(u.substring(O,H)),{to:"string"})}return null}O=null;H="";for(var T=0,R=0,da=[],P=null;R<u.length;){var ma=u.charCodeAt(R);R+=1;10!=ma&&(H+=String.fromCharCode(ma));ma=="/Subject (%3Cmxfile".charCodeAt(T)?T++:T=
-0;if(19==T){var ra=u.indexOf("%3C%2Fmxfile%3E)",R)+15;R-=9;if(ra>R){O=u.substring(R,ra);break}}10==ma&&("endobj"==H?P=null:"obj"==H.substring(H.length-3,H.length)||"xref"==H||"trailer"==H?(P=[],da[H.split(" ")[0]]=P):null!=P&&P.push(H),H="")}null==O&&(O=Editor.extractGraphModelFromXref(da));null!=O&&(O=decodeURIComponent(O.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return O};Editor.extractGraphModelFromXref=function(u){var H=u.trailer,O=null;null!=H&&(H=/.* \/Info (\d+) (\d+) R/g.exec(H.join("\n")),
-null!=H&&0<H.length&&(H=u[H[1]],null!=H&&(H=/.* \/Subject (\d+) (\d+) R/g.exec(H.join("\n")),null!=H&&0<H.length&&(u=u[H[1]],null!=u&&(u=u.join("\n"),O=u.substring(1,u.length-1))))));return O};Editor.extractParserError=function(u,H){var O=null;u=null!=u?u.getElementsByTagName("parsererror"):null;null!=u&&0<u.length&&(O=H||mxResources.get("invalidChars"),H=u[0].getElementsByTagName("div"),0<H.length&&(O=mxUtils.getTextContent(H[0])));return null!=O?mxUtils.trim(O):O};Editor.addRetryToError=function(u,
+Ca;da.setStrokeColor=Aa;this.configurePointerEvents=ta;this.stroke=xa;this.fill=ra;da.restore();ma&&null!=ra&&(da.addTolerance=function(){})}T.apply(this,arguments);da.addTolerance=R};var S=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(da,R,ma,ra,xa,ta){null!=da.handJiggle&&da.handJiggle.constructor==u?(da.handJiggle.passThrough=!0,S.apply(this,arguments),da.handJiggle.passThrough=!1):S.apply(this,arguments)}})();Editor.fastCompress=function(u){return null==u||0==
+u.length||"undefined"===typeof pako?u:Graph.arrayBufferToString(pako.deflateRaw(u))};Editor.fastDecompress=function(u){return null==u||0==u.length||"undefined"===typeof pako?u:pako.inflateRaw(Graph.stringToArrayBuffer(atob(u)),{to:"string"})};Editor.extractGraphModel=function(u,H,P){if(null!=u&&"undefined"!==typeof pako){var T=u.ownerDocument.getElementsByTagName("div"),S=[];if(null!=T&&0<T.length)for(var da=0;da<T.length;da++)if("mxgraph"==T[da].getAttribute("class")){S.push(T[da]);break}0<S.length&&
+(T=S[0].getAttribute("data-mxgraph"),null!=T?(S=JSON.parse(T),null!=S&&null!=S.xml&&(u=mxUtils.parseXml(S.xml),u=u.documentElement)):(S=S[0].getElementsByTagName("div"),0<S.length&&(T=mxUtils.getTextContent(S[0]),T=Graph.decompress(T,null,P),0<T.length&&(u=mxUtils.parseXml(T),u=u.documentElement))))}if(null!=u&&"svg"==u.nodeName)if(T=u.getAttribute("content"),null!=T&&"<"!=T.charAt(0)&&"%"!=T.charAt(0)&&(T=unescape(window.atob?atob(T):Base64.decode(cont,T))),null!=T&&"%"==T.charAt(0)&&(T=decodeURIComponent(T)),
+null!=T&&0<T.length)u=mxUtils.parseXml(T).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==u||H||(S=null,"diagram"==u.nodeName?S=u:"mxfile"==u.nodeName&&(T=u.getElementsByTagName("diagram"),0<T.length&&(S=T[Math.max(0,Math.min(T.length-1,urlParams.page||0))])),null!=S&&(u=Editor.parseDiagramNode(S,P)));null==u||"mxGraphModel"==u.nodeName||H&&"mxfile"==u.nodeName||(u=null);return u};Editor.parseDiagramNode=function(u,H){var P=mxUtils.trim(mxUtils.getTextContent(u)),T=null;
+0<P.length?(u=Graph.decompress(P,null,H),null!=u&&0<u.length&&(T=mxUtils.parseXml(u).documentElement)):(u=mxUtils.getChildNodes(u),0<u.length&&(T=mxUtils.createXmlDocument(),T.appendChild(T.importNode(u[0],!0)),T=T.documentElement));return T};Editor.getDiagramNodeXml=function(u){var H=mxUtils.getTextContent(u),P=null;0<H.length?P=Graph.decompress(H):null!=u.firstChild&&(P=mxUtils.getXml(u.firstChild));return P};Editor.extractGraphModelFromPdf=function(u){u=u.substring(u.indexOf(",")+1);u=window.atob&&
+!mxClient.IS_SF?atob(u):Base64.decode(u,!0);if("%PDF-1.7"==u.substring(0,8)){var H=u.indexOf("EmbeddedFile");if(-1<H){var P=u.indexOf("stream",H)+9;if(0<u.substring(H,P).indexOf("application#2Fvnd.jgraph.mxfile"))return H=u.indexOf("endstream",P-1),pako.inflateRaw(Graph.stringToArrayBuffer(u.substring(P,H)),{to:"string"})}return null}P=null;H="";for(var T=0,S=0,da=[],R=null;S<u.length;){var ma=u.charCodeAt(S);S+=1;10!=ma&&(H+=String.fromCharCode(ma));ma=="/Subject (%3Cmxfile".charCodeAt(T)?T++:T=
+0;if(19==T){var ra=u.indexOf("%3C%2Fmxfile%3E)",S)+15;S-=9;if(ra>S){P=u.substring(S,ra);break}}10==ma&&("endobj"==H?R=null:"obj"==H.substring(H.length-3,H.length)||"xref"==H||"trailer"==H?(R=[],da[H.split(" ")[0]]=R):null!=R&&R.push(H),H="")}null==P&&(P=Editor.extractGraphModelFromXref(da));null!=P&&(P=decodeURIComponent(P.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return P};Editor.extractGraphModelFromXref=function(u){var H=u.trailer,P=null;null!=H&&(H=/.* \/Info (\d+) (\d+) R/g.exec(H.join("\n")),
+null!=H&&0<H.length&&(H=u[H[1]],null!=H&&(H=/.* \/Subject (\d+) (\d+) R/g.exec(H.join("\n")),null!=H&&0<H.length&&(u=u[H[1]],null!=u&&(u=u.join("\n"),P=u.substring(1,u.length-1))))));return P};Editor.extractParserError=function(u,H){var P=null;u=null!=u?u.getElementsByTagName("parsererror"):null;null!=u&&0<u.length&&(P=H||mxResources.get("invalidChars"),H=u[0].getElementsByTagName("div"),0<H.length&&(P=mxUtils.getTextContent(H[0])));return null!=P?mxUtils.trim(P):P};Editor.addRetryToError=function(u,
H){null!=u&&(u=null!=u.error?u.error:u,null==u.retry&&(u.retry=H))};Editor.configure=function(u,H){if(null!=u){Editor.config=u;Editor.configVersion=u.version;Menus.prototype.defaultFonts=u.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=u.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=u.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=u.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=
u.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=u.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=u.autosaveDelay||DrawioFile.prototype.autosaveDelay;u.debug&&(urlParams.test="1");null!=u.templateFile&&(EditorUi.templateFile=u.templateFile);null!=u.styles&&(Array.isArray(u.styles)?Editor.styles=u.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=u.globalVars&&(Editor.globalVars=
u.globalVars);null!=u.compressXml&&(Editor.compressXml=u.compressXml);null!=u.includeDiagram&&(Editor.defaultIncludeDiagram=u.includeDiagram);null!=u.simpleLabels&&(Editor.simpleLabels=u.simpleLabels);null!=u.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=u.oneDriveInlinePicker);null!=u.darkColor&&(Editor.darkColor=u.darkColor);null!=u.lightColor&&(Editor.lightColor=u.lightColor);null!=u.settingsName&&(Editor.configurationKey="."+u.settingsName+"-configuration",Editor.settingsKey="."+u.settingsName+
-"-config",mxSettings.key=Editor.settingsKey);u.customFonts&&(Menus.prototype.defaultFonts=u.customFonts.concat(Menus.prototype.defaultFonts));u.customPresetColors&&(ColorDialog.prototype.presetColors=u.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=u.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=u.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=u.css){var O=document.createElement("style");O.setAttribute("type","text/css");
-O.appendChild(document.createTextNode(u.css));var T=document.getElementsByTagName("script")[0];T.parentNode.insertBefore(O,T)}null!=u.libraries&&(Sidebar.prototype.customEntries=u.libraries);null!=u.enabledLibraries&&(Array.isArray(u.enabledLibraries)?Sidebar.prototype.enabledLibraries=u.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=u.defaultLibraries&&(Sidebar.prototype.defaultEntries=u.defaultLibraries);null!=u.defaultCustomLibraries&&(Editor.defaultCustomLibraries=
+"-config",mxSettings.key=Editor.settingsKey);u.customFonts&&(Menus.prototype.defaultFonts=u.customFonts.concat(Menus.prototype.defaultFonts));u.customPresetColors&&(ColorDialog.prototype.presetColors=u.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=u.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=u.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=u.css){var P=document.createElement("style");P.setAttribute("type","text/css");
+P.appendChild(document.createTextNode(u.css));var T=document.getElementsByTagName("script")[0];T.parentNode.insertBefore(P,T)}null!=u.libraries&&(Sidebar.prototype.customEntries=u.libraries);null!=u.enabledLibraries&&(Array.isArray(u.enabledLibraries)?Sidebar.prototype.enabledLibraries=u.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=u.defaultLibraries&&(Sidebar.prototype.defaultEntries=u.defaultLibraries);null!=u.defaultCustomLibraries&&(Editor.defaultCustomLibraries=
u.defaultCustomLibraries);null!=u.enableCustomLibraries&&(Editor.enableCustomLibraries=u.enableCustomLibraries);null!=u.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=u.defaultVertexStyle);null!=u.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=u.defaultEdgeStyle);null!=u.defaultPageVisible&&(Graph.prototype.defaultPageVisible=u.defaultPageVisible);null!=u.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=u.defaultGridEnabled);null!=u.zoomWheel&&(Graph.zoomWheel=u.zoomWheel);null!=
-u.zoomFactor&&(O=parseFloat(u.zoomFactor),!isNaN(O)&&1<O?Graph.prototype.zoomFactor=O:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=u.gridSteps&&(O=parseInt(u.gridSteps),!isNaN(O)&&0<O?mxGraphView.prototype.gridSteps=O:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=u.pageFormat&&(O=parseInt(u.pageFormat.width),T=parseInt(u.pageFormat.height),!isNaN(O)&&0<O&&!isNaN(T)&&0<T?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,O,T),
+u.zoomFactor&&(P=parseFloat(u.zoomFactor),!isNaN(P)&&1<P?Graph.prototype.zoomFactor=P:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=u.gridSteps&&(P=parseInt(u.gridSteps),!isNaN(P)&&0<P?mxGraphView.prototype.gridSteps=P:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=u.pageFormat&&(P=parseInt(u.pageFormat.width),T=parseInt(u.pageFormat.height),!isNaN(P)&&0<P&&!isNaN(T)&&0<T?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,P,T),
mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));u.thumbWidth&&(Sidebar.prototype.thumbWidth=u.thumbWidth);u.thumbHeight&&(Sidebar.prototype.thumbHeight=u.thumbHeight);u.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=u.emptyLibraryXml);u.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=u.emptyDiagramXml);u.sidebarWidth&&(EditorUi.prototype.hsplitPosition=u.sidebarWidth);u.sidebarTitles&&
-(Sidebar.prototype.sidebarTitles=u.sidebarTitles);u.sidebarTitleSize&&(O=parseInt(u.sidebarTitleSize),!isNaN(O)&&0<O?Sidebar.prototype.sidebarTitleSize=O:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));u.fontCss&&("string"===typeof u.fontCss?Editor.configureFontCss(u.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=u.autosaveDelay&&(O=parseInt(u.autosaveDelay),!isNaN(O)&&0<O?DrawioFile.prototype.autosaveDelay=O:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));
+(Sidebar.prototype.sidebarTitles=u.sidebarTitles);u.sidebarTitleSize&&(P=parseInt(u.sidebarTitleSize),!isNaN(P)&&0<P?Sidebar.prototype.sidebarTitleSize=P:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));u.fontCss&&("string"===typeof u.fontCss?Editor.configureFontCss(u.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=u.autosaveDelay&&(P=parseInt(u.autosaveDelay),!isNaN(P)&&0<P?DrawioFile.prototype.autosaveDelay=P:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));
if(null!=u.plugins&&!H)for(App.initPluginCallback(),H=0;H<u.plugins.length;H++)mxscript(u.plugins[H]);null!=u.maxImageBytes&&(EditorUi.prototype.maxImageBytes=u.maxImageBytes);null!=u.maxImageSize&&(EditorUi.prototype.maxImageSize=u.maxImageSize);null!=u.shareCursorPosition&&(EditorUi.prototype.shareCursorPosition=u.shareCursorPosition);null!=u.showRemoteCursors&&(EditorUi.prototype.showRemoteCursors=u.showRemoteCursors)}};Editor.configureFontCss=function(u){if(null!=u){Editor.prototype.fontCss=u;
-var H=document.getElementsByTagName("script")[0];if(null!=H&&null!=H.parentNode){var O=document.createElement("style");O.setAttribute("type","text/css");O.appendChild(document.createTextNode(u));H.parentNode.insertBefore(O,H);u=u.split("url(");for(O=1;O<u.length;O++){var T=u[O].indexOf(")");T=Editor.trimCssUrl(u[O].substring(0,T));var R=document.createElement("link");R.setAttribute("rel","preload");R.setAttribute("href",T);R.setAttribute("as","font");R.setAttribute("crossorigin","");H.parentNode.insertBefore(R,
-H)}}}};Editor.trimCssUrl=function(u){return u.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(u){u=null!=u?u:Editor.GUID_LENGTH;for(var H=[],O=0;O<u;O++)H.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return H.join("")};Editor.prototype.timeout=
+var H=document.getElementsByTagName("script")[0];if(null!=H&&null!=H.parentNode){var P=document.createElement("style");P.setAttribute("type","text/css");P.appendChild(document.createTextNode(u));H.parentNode.insertBefore(P,H);u=u.split("url(");for(P=1;P<u.length;P++){var T=u[P].indexOf(")");T=Editor.trimCssUrl(u[P].substring(0,T));var S=document.createElement("link");S.setAttribute("rel","preload");S.setAttribute("href",T);S.setAttribute("as","font");S.setAttribute("crossorigin","");H.parentNode.insertBefore(S,
+H)}}}};Editor.trimCssUrl=function(u){return u.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(u){u=null!=u?u:Editor.GUID_LENGTH;for(var H=[],P=0;P<u;P++)H.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return H.join("")};Editor.prototype.timeout=
25E3;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(u){u=null!=u&&"mxlibrary"!=u.nodeName?this.extractGraphModel(u):null;if(null!=u){var H=Editor.extractParserError(u,mxResources.get("invalidOrMissingFile"));if(H)throw EditorUi.debug("Editor.setGraphXml ParserError",[this],"node",[u],"cause",[H]),Error(mxResources.get("notADiagramFile")+
-" ("+H+")");if("mxGraphModel"==u.nodeName){H=u.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=H&&""!=H)H!=this.graph.currentStyle&&(O=null!=this.graph.themes?this.graph.themes[H]:mxUtils.load(STYLE_PATH+"/"+H+".xml").getDocumentElement(),null!=O&&(T=new mxCodec(O.ownerDocument),T.decode(O,this.graph.getStylesheet())));else{var O=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement();if(null!=O){var T=new mxCodec(O.ownerDocument);
-T.decode(O,this.graph.getStylesheet())}}this.graph.currentStyle=H;this.graph.mathEnabled="1"==urlParams.math||"1"==u.getAttribute("math");H=u.getAttribute("backgroundImage");null!=H?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(H)):this.graph.setBackgroundImage(null);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==u.getAttribute("shadow"),!1);if(H=u.getAttribute("extFonts"))try{for(H=
-H.split("|").map(function(R){R=R.split("^");return{name:R[0],url:R[1]}}),O=0;O<H.length;O++)this.graph.addExtFont(H[O].name,H[O].url)}catch(R){console.log("ExtFonts format error: "+R.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 e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(u,H){u=null!=
-u?u:!0;var O=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&O.setAttribute("style",this.graph.currentStyle);var T=this.graph.getBackgroundImageObject(this.graph.backgroundImage,H);null!=T&&O.setAttribute("backgroundImage",JSON.stringify(T));O.setAttribute("math",this.graph.mathEnabled?"1":"0");O.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(T=this.graph.extFonts.map(function(R){return R.name+
-"^"+R.url}),O.setAttribute("extFonts",T.join("|")));return O};Editor.prototype.isDataSvg=function(u){try{var H=mxUtils.parseXml(u).documentElement.getAttribute("content");if(null!=H&&(null!=H&&"<"!=H.charAt(0)&&"%"!=H.charAt(0)&&(H=unescape(window.atob?atob(H):Base64.decode(cont,H))),null!=H&&"%"==H.charAt(0)&&(H=decodeURIComponent(H)),null!=H&&0<H.length)){var O=mxUtils.parseXml(H).documentElement;return"mxfile"==O.nodeName||"mxGraphModel"==O.nodeName}}catch(T){}return!1};Editor.prototype.extractGraphModel=
-function(u,H,O){return Editor.extractGraphModel.apply(this,arguments)};var k=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();k.apply(this,arguments)};var n=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){n.apply(this,
-arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(u,H){if("undefined"===typeof window.MathJax){u=null!=u?u:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(R){try{MathJax.typesetClear([R]),MathJax.typeset([R])}catch(da){MathJax.typesetClear([R]),null!=da.retry?da.retry.then(function(){MathJax.typeset([R])}):null!=window.console&&console.log("Error in MathJax: "+
-da.toString())}};window.MathJax=null!=H?H:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var R=0;R<Editor.mathJaxQueue.length;R++)Editor.doMathJaxRender(Editor.mathJaxQueue[R])}}};Editor.MathJaxRender=function(R){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(R):Editor.mathJaxQueue.push(R)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var O=Editor.prototype.init;
-Editor.prototype.init=function(){O.apply(this,arguments);var R=mxUtils.bind(this,function(da,P){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,R);this.graph.addListener(mxEvent.REFRESH,R)};H=document.getElementsByTagName("script");if(null!=H&&0<H.length){var T=document.createElement("script");T.setAttribute("type","text/javascript");T.setAttribute("src",u);H[0].parentNode.appendChild(T)}}};
-Editor.prototype.csvToArray=function(u){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(u))return null;var H=[];u.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(O,T,R,da){void 0!==T?H.push(T.replace(/\\'/g,"'")):void 0!==R?H.push(R.replace(/\\"/g,
-'"')):void 0!==da&&H.push(da);return""});/,\s*$/.test(u)&&H.push("");return H};Editor.prototype.isCorsEnabledForUrl=function(u){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||u.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(u)||"https://raw.githubusercontent.com/"===u.substring(0,34)||"https://fonts.googleapis.com/"===
-u.substring(0,29)||"https://fonts.gstatic.com/"===u.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var u=new mxUrlConverter;u.updateBaseUrl();var H=u.convert,O=this;u.convert=function(T){if(null!=T){var R="http://"==T.substring(0,7)||"https://"==T.substring(0,8);R&&!navigator.onLine?T=Editor.svgBrokenImage.src:!R||T.substring(0,u.baseUrl.length)==u.baseUrl||O.crossOriginImages&&O.isCorsEnabledForUrl(T)?"chrome-extension://"==T.substring(0,19)||mxClient.IS_CHROMEAPP||(T=H.apply(this,
-arguments)):T=PROXY_URL+"?url="+encodeURIComponent(T)}return T};return u};Editor.createSvgDataUri=function(u){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(u)))};Editor.prototype.convertImageToDataUri=function(u,H){try{var O=!0,T=window.setTimeout(mxUtils.bind(this,function(){O=!1;H(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(u))mxUtils.get(u,mxUtils.bind(this,function(da){window.clearTimeout(T);O&&H(Editor.createSvgDataUri(da.getText()))}),function(){window.clearTimeout(T);
-O&&H(Editor.svgBrokenImage.src)});else{var R=new Image;this.crossOriginImages&&(R.crossOrigin="anonymous");R.onload=function(){window.clearTimeout(T);if(O)try{var da=document.createElement("canvas"),P=da.getContext("2d");da.height=R.height;da.width=R.width;P.drawImage(R,0,0);H(da.toDataURL())}catch(ma){H(Editor.svgBrokenImage.src)}};R.onerror=function(){window.clearTimeout(T);O&&H(Editor.svgBrokenImage.src)};R.src=u}}catch(da){H(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(u,
-H,O,T){null==T&&(T=this.createImageUrlConverter());var R=0,da=O||{};O=mxUtils.bind(this,function(P,ma){P=u.getElementsByTagName(P);for(var ra=0;ra<P.length;ra++)mxUtils.bind(this,function(xa){try{if(null!=xa){var ta=T.convert(xa.getAttribute(ma));if(null!=ta&&"data:"!=ta.substring(0,5)){var Aa=da[ta];null==Aa?(R++,this.convertImageToDataUri(ta,function(Ca){null!=Ca&&(da[ta]=Ca,xa.setAttribute(ma,Ca));R--;0==R&&H(u)})):xa.setAttribute(ma,Aa)}else null!=ta&&xa.setAttribute(ma,ta)}}catch(Ca){}})(P[ra])});
-O("image","xlink:href");O("img","src");0==R&&H(u)};Editor.base64Encode=function(u){for(var H="",O=0,T=u.length,R,da,P;O<T;){R=u.charCodeAt(O++)&255;if(O==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((R&3)<<4);H+="==";break}da=u.charCodeAt(O++);if(O==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((R&
-3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2);H+="=";break}P=u.charCodeAt(O++);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((R&3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2|(P&192)>>6);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(P&
-63)}return H};Editor.prototype.loadUrl=function(u,H,O,T,R,da,P,ma){try{var ra=!P&&(T||/(\.png)($|\?)/i.test(u)||/(\.jpe?g)($|\?)/i.test(u)||/(\.gif)($|\?)/i.test(u)||/(\.pdf)($|\?)/i.test(u));R=null!=R?R:!0;var xa=mxUtils.bind(this,function(){mxUtils.get(u,mxUtils.bind(this,function(ta){if(200<=ta.getStatus()&&299>=ta.getStatus()){if(null!=H){var Aa=ta.getText();if(ra){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){ta=mxUtilsBinaryToArray(ta.request.responseBody).toArray();
-Aa=Array(ta.length);for(var Ca=0;Ca<ta.length;Ca++)Aa[Ca]=String.fromCharCode(ta[Ca]);Aa=Aa.join("")}da=null!=da?da:"data:image/png;base64,";Aa=da+Editor.base64Encode(Aa)}H(Aa)}}else null!=O&&(0==ta.getStatus()?O({message:mxResources.get("accessDenied")},ta):O({message:mxResources.get("error")+" "+ta.getStatus()},ta))}),function(ta){null!=O&&O({message:mxResources.get("error")+" "+ta.getStatus()})},ra,this.timeout,function(){R&&null!=O&&O({code:App.ERROR_TIMEOUT,retry:xa})},ma)});xa()}catch(ta){null!=
-O&&O(ta)}};Editor.prototype.absoluteCssFonts=function(u){var H=null;if(null!=u){var O=u.split("url(");if(0<O.length){H=[O[0]];u=window.location.pathname;var T=null!=u?u.lastIndexOf("/"):-1;0<=T&&(u=u.substring(0,T+1));T=document.getElementsByTagName("base");var R=null;null!=T&&0<T.length&&(R=T[0].getAttribute("href"));for(var da=1;da<O.length;da++)if(T=O[da].indexOf(")"),0<T){var P=Editor.trimCssUrl(O[da].substring(0,T));this.graph.isRelativeUrl(P)&&(P=null!=R?R+P:window.location.protocol+"//"+window.location.hostname+
-("/"==P.charAt(0)?"":u)+P);H.push('url("'+P+'"'+O[da].substring(T))}else H.push(O[da])}else H=[u]}return null!=H?H.join(""):null};Editor.prototype.mapFontUrl=function(u,H,O){/^https?:\/\//.test(H)&&!this.isCorsEnabledForUrl(H)&&(H=PROXY_URL+"?url="+encodeURIComponent(H));O(u,H)};Editor.prototype.embedCssFonts=function(u,H){var O=u.split("url("),T=0;null==this.cachedFonts&&(this.cachedFonts={});var R=mxUtils.bind(this,function(){if(0==T){for(var ra=[O[0]],xa=1;xa<O.length;xa++){var ta=O[xa].indexOf(")");
-ra.push('url("');ra.push(this.cachedFonts[Editor.trimCssUrl(O[xa].substring(0,ta))]);ra.push('"'+O[xa].substring(ta))}H(ra.join(""))}});if(0<O.length){for(u=1;u<O.length;u++){var da=O[u].indexOf(")"),P=null,ma=O[u].indexOf("format(",da);0<ma&&(P=Editor.trimCssUrl(O[u].substring(ma+7,O[u].indexOf(")",ma))));mxUtils.bind(this,function(ra){if(null==this.cachedFonts[ra]){this.cachedFonts[ra]=ra;T++;var xa="application/x-font-ttf";if("svg"==P||/(\.svg)($|\?)/i.test(ra))xa="image/svg+xml";else if("otf"==
-P||"embedded-opentype"==P||/(\.otf)($|\?)/i.test(ra))xa="application/x-font-opentype";else if("woff"==P||/(\.woff)($|\?)/i.test(ra))xa="application/font-woff";else if("woff2"==P||/(\.woff2)($|\?)/i.test(ra))xa="application/font-woff2";else if("eot"==P||/(\.eot)($|\?)/i.test(ra))xa="application/vnd.ms-fontobject";else if("sfnt"==P||/(\.sfnt)($|\?)/i.test(ra))xa="application/font-sfnt";this.mapFontUrl(xa,ra,mxUtils.bind(this,function(ta,Aa){this.loadUrl(Aa,mxUtils.bind(this,function(Ca){this.cachedFonts[ra]=
-Ca;T--;R()}),mxUtils.bind(this,function(Ca){T--;R()}),!0,null,"data:"+ta+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(O[u].substring(0,da)),P)}R()}else H(u)};Editor.prototype.loadFonts=function(u){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(H){this.resolvedFontCss=H;null!=u&&u()})):null!=u&&u()};Editor.prototype.createGoogleFontCache=function(){var u={},H;for(H in Graph.fontMapping)Graph.isCssFontUrl(H)&&(u[H]=Graph.fontMapping[H]);
-return u};Editor.prototype.embedExtFonts=function(u){var H=this.graph.getCustomFonts();if(0<H.length){var O=[],T=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var R=mxUtils.bind(this,function(){0==T&&this.embedCssFonts(O.join(""),u)}),da=0;da<H.length;da++)mxUtils.bind(this,function(P,ma){Graph.isCssFontUrl(ma)?null==this.cachedGoogleFonts[ma]?(T++,this.loadUrl(ma,mxUtils.bind(this,function(ra){this.cachedGoogleFonts[ma]=ra;O.push(ra+"\n");T--;R()}),mxUtils.bind(this,
-function(ra){T--;O.push("@import url("+ma+");\n");R()}))):O.push(this.cachedGoogleFonts[ma]+"\n"):O.push('@font-face {font-family: "'+P+'";src: url("'+ma+'")}\n')})(H[da].name,H[da].url);R()}else u()};Editor.prototype.addMathCss=function(u){u=u.getElementsByTagName("defs");if(null!=u&&0<u.length)for(var H=document.getElementsByTagName("style"),O=0;O<H.length;O++){var T=mxUtils.getTextContent(H[O]);0>T.indexOf("mxPageSelector")&&0<T.indexOf("MathJax")&&u[0].appendChild(H[O].cloneNode(!0))}};Editor.prototype.addFontCss=
-function(u,H){H=null!=H?H:this.absoluteCssFonts(this.fontCss);if(null!=H){var O=u.getElementsByTagName("defs"),T=u.ownerDocument;0==O.length?(O=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"defs"):T.createElement("defs"),null!=u.firstChild?u.insertBefore(O,u.firstChild):u.appendChild(O)):O=O[0];u=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"style"):T.createElement("style");u.setAttribute("type","text/css");mxUtils.setTextContent(u,H);O.appendChild(u)}};Editor.prototype.isExportToCanvas=
-function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(u,H,O){var T=mxClient.IS_FF?8192:16384;return Math.min(O,Math.min(T/u,T/H))};Editor.prototype.exportToCanvas=function(u,H,O,T,R,da,P,ma,ra,xa,ta,Aa,Ca,Ba,sa,Oa,Ta,Sa){try{da=null!=da?da:!0;P=null!=P?P:!0;Aa=null!=Aa?Aa:this.graph;Ca=null!=Ca?Ca:0;var $a=ra?null:Aa.background;$a==mxConstants.NONE&&($a=null);null==$a&&($a=T);null==$a&&0==ra&&($a=Oa?this.graph.defaultPageBackgroundColor:"#ffffff");
-this.convertImages(Aa.getSvg(null,null,Ca,Ba,null,P,null,null,null,xa,null,Oa,Ta,Sa),mxUtils.bind(this,function(Ga){try{var eb=new Image;eb.onload=mxUtils.bind(this,function(){try{var z=function(){mxClient.IS_SF?window.setTimeout(function(){X.drawImage(eb,0,0);u(L,Ga)},0):(X.drawImage(eb,0,0),u(L,Ga))},L=document.createElement("canvas"),M=parseInt(Ga.getAttribute("width")),U=parseInt(Ga.getAttribute("height"));ma=null!=ma?ma:1;null!=H&&(ma=da?Math.min(1,Math.min(3*H/(4*U),H/M)):H/M);ma=this.getMaxCanvasScale(M,
-U,ma);M=Math.ceil(ma*M);U=Math.ceil(ma*U);L.setAttribute("width",M);L.setAttribute("height",U);var X=L.getContext("2d");null!=$a&&(X.beginPath(),X.rect(0,0,M,U),X.fillStyle=$a,X.fill());1!=ma&&X.scale(ma,ma);if(sa){var fa=Aa.view,na=fa.scale;fa.scale=1;var ua=btoa(unescape(encodeURIComponent(fa.createSvgGrid(fa.gridColor))));fa.scale=na;ua="data:image/svg+xml;base64,"+ua;var pa=Aa.gridSize*fa.gridSteps*ma,za=Aa.getGraphBounds(),Da=fa.translate.x*na,Ma=fa.translate.y*na,La=Da+(za.x-Da)/na-Ca,Ua=Ma+
-(za.y-Ma)/na-Ca,Ra=new Image;Ra.onload=function(){try{for(var Fa=-Math.round(pa-mxUtils.mod((Da-La)*ma,pa)),va=-Math.round(pa-mxUtils.mod((Ma-Ua)*ma,pa));Fa<M;Fa+=pa)for(var ya=va;ya<U;ya+=pa)X.drawImage(Ra,Fa/ma,ya/ma);z()}catch(Na){null!=R&&R(Na)}};Ra.onerror=function(Fa){null!=R&&R(Fa)};Ra.src=ua}else z()}catch(Fa){null!=R&&R(Fa)}});eb.onerror=function(z){null!=R&&R(z)};xa&&this.graph.addSvgShadow(Ga);this.graph.mathEnabled&&this.addMathCss(Ga);var bb=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&
-this.addFontCss(Ga,this.resolvedFontCss),eb.src=Editor.createSvgDataUri(mxUtils.getXml(Ga))}catch(z){null!=R&&R(z)}});this.embedExtFonts(mxUtils.bind(this,function(z){try{null!=z&&this.addFontCss(Ga,z),this.loadFonts(bb)}catch(L){null!=R&&R(L)}}))}catch(z){null!=R&&R(z)}}),O,ta)}catch(Ga){null!=R&&R(Ga)}};Editor.crcTable=[];for(var D=0;256>D;D++)for(var t=D,E=0;8>E;E++)t=1==(t&1)?3988292384^t>>>1:t>>>1,Editor.crcTable[D]=t;Editor.updateCRC=function(u,H,O,T){for(var R=0;R<T;R++)u=Editor.crcTable[(u^
-H.charCodeAt(O+R))&255]^u>>>8;return u};Editor.crc32=function(u){for(var H=-1,O=0;O<u.length;O++)H=H>>>8^Editor.crcTable[(H^u.charCodeAt(O))&255];return(H^-1)>>>0};Editor.writeGraphModelToPng=function(u,H,O,T,R){function da(ta,Aa){var Ca=ra;ra+=Aa;return ta.substring(Ca,ra)}function P(ta){ta=da(ta,4);return ta.charCodeAt(3)+(ta.charCodeAt(2)<<8)+(ta.charCodeAt(1)<<16)+(ta.charCodeAt(0)<<24)}function ma(ta){return String.fromCharCode(ta>>24&255,ta>>16&255,ta>>8&255,ta&255)}u=u.substring(u.indexOf(",")+
-1);u=window.atob?atob(u):Base64.decode(u,!0);var ra=0;if(da(u,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=R&&R();else if(da(u,4),"IHDR"!=da(u,4))null!=R&&R();else{da(u,17);R=u.substring(0,ra);do{var xa=P(u);if("IDAT"==da(u,4)){R=u.substring(0,ra-8);"pHYs"==H&&"dpi"==O?(O=Math.round(T/.0254),O=ma(O)+ma(O)+String.fromCharCode(1)):O=O+String.fromCharCode(0)+("zTXt"==H?String.fromCharCode(0):"")+T;T=4294967295;T=Editor.updateCRC(T,H,0,4);T=Editor.updateCRC(T,O,0,O.length);
-R+=ma(O.length)+H+O+ma(T^4294967295);R+=u.substring(ra-8,u.length);break}R+=u.substring(ra-8,ra-4+xa);da(u,xa);da(u,4)}while(xa);return"data:image/png;base64,"+(window.btoa?btoa(R):Base64.encode(R,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(u,H){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var f=ColorDialog.resetRecentColors;
-ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(u,H){var O=null;null!=u.editor.graph.getModel().getParent(H)?O=H.getId():null!=u.currentPage&&(O=u.currentPage.getId());return O});if(null!=window.StyleFormatPanel){var g=Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",
-this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=u&&u.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(u){return!1};var q=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
-function(u){u=q.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var H=this.editorUi,O=H.editor.graph,T=this.createOption(mxResources.get("shadow"),function(){return O.shadowVisible},function(R){var da=new ChangePageSetup(H);da.ignoreColor=!0;da.ignoreImage=!0;da.shadowVisible=R;O.model.execute(da)},{install:function(R){this.listener=function(){R(O.shadowVisible)};H.addListener("shadowVisibleChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});
-Editor.enableShadowOption||(T.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(T,60));u.appendChild(T)}return u};var y=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(u){u=y.apply(this,arguments);var H=this.editorUi,O=H.editor.graph;if(O.isEnabled()){var T=H.getCurrentFile();if(null!=T&&T.isAutosaveOptional()){var R=this.createOption(mxResources.get("autosave"),function(){return H.editor.autosave},function(P){H.editor.setAutosave(P);
-H.editor.autosave&&T.isModified()&&T.fileChanged()},{install:function(P){this.listener=function(){P(H.editor.autosave)};H.editor.addListener("autosaveChanged",this.listener)},destroy:function(){H.editor.removeListener(this.listener)}});u.appendChild(R)}}if(this.isMathOptionVisible()&&O.isEnabled()&&"undefined"!==typeof MathJax){R=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return O.mathEnabled},function(P){H.actions.get("mathematicalTypesetting").funct()},{install:function(P){this.listener=
-function(){P(O.mathEnabled)};H.addListener("mathEnabledChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});R.style.paddingTop="5px";u.appendChild(R);var da=H.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");da.style.position="relative";da.style.marginLeft="6px";da.style.top="2px";R.appendChild(da)}return u};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
-{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=
-[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",
-type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",
-type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",
-type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},
-{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=[{name:"size",dispName:"Fold Size",
-type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"base",dispName:"Callout Width",
-type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",type:"enum",enumList:[{val:"left",
-dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",type:"color",defVal:null}];
-mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
+" ("+H+")");if("mxGraphModel"==u.nodeName){H=u.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=H&&""!=H)H!=this.graph.currentStyle&&(P=null!=this.graph.themes?this.graph.themes[H]:mxUtils.load(STYLE_PATH+"/"+H+".xml").getDocumentElement(),null!=P&&(T=new mxCodec(P.ownerDocument),T.decode(P,this.graph.getStylesheet())));else{var P=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement();if(null!=P){var T=new mxCodec(P.ownerDocument);
+T.decode(P,this.graph.getStylesheet())}}this.graph.currentStyle=H;this.graph.mathEnabled="1"==urlParams.math||"1"==u.getAttribute("math");H=u.getAttribute("backgroundImage");null!=H?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(H)):this.graph.setBackgroundImage(null);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==u.getAttribute("shadow"),!1);if(H=u.getAttribute("extFonts"))try{for(H=
+H.split("|").map(function(S){S=S.split("^");return{name:S[0],url:S[1]}}),P=0;P<H.length;P++)this.graph.addExtFont(H[P].name,H[P].url)}catch(S){console.log("ExtFonts format error: "+S.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 e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(u,H){u=null!=
+u?u:!0;var P=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&P.setAttribute("style",this.graph.currentStyle);var T=this.graph.getBackgroundImageObject(this.graph.backgroundImage,H);null!=T&&P.setAttribute("backgroundImage",JSON.stringify(T));P.setAttribute("math",this.graph.mathEnabled?"1":"0");P.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(T=this.graph.extFonts.map(function(S){return S.name+
+"^"+S.url}),P.setAttribute("extFonts",T.join("|")));return P};Editor.prototype.isDataSvg=function(u){try{var H=mxUtils.parseXml(u).documentElement.getAttribute("content");if(null!=H&&(null!=H&&"<"!=H.charAt(0)&&"%"!=H.charAt(0)&&(H=unescape(window.atob?atob(H):Base64.decode(cont,H))),null!=H&&"%"==H.charAt(0)&&(H=decodeURIComponent(H)),null!=H&&0<H.length)){var P=mxUtils.parseXml(H).documentElement;return"mxfile"==P.nodeName||"mxGraphModel"==P.nodeName}}catch(T){}return!1};Editor.prototype.extractGraphModel=
+function(u,H,P){return Editor.extractGraphModel.apply(this,arguments)};var k=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();k.apply(this,arguments)};var n=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){n.apply(this,
+arguments);this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(u,H){if("undefined"===typeof window.MathJax&&!mxClient.IS_IE&&!mxClient.IS_IE11){u=null!=u?u:DRAW_MATH_URL+"/startup.js";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(S){try{MathJax.typesetClear([S]),MathJax.typeset([S]),Editor.onMathJaxDone()}catch(da){MathJax.typesetClear([S]),null!=da.retry?da.retry.then(function(){MathJax.typesetPromise([S]).then(Editor.onMathJaxDone)}):
+null!=window.console&&console.log("Error in MathJax: "+da.toString())}};window.MathJax=null!=H?H:{loader:{load:["html"==urlParams["math-output"]?"output/chtml":"output/svg","input/tex","input/asciimath"]},startup:{pageReady:function(){for(var S=0;S<Editor.mathJaxQueue.length;S++)Editor.doMathJaxRender(Editor.mathJaxQueue[S])}}};Editor.MathJaxRender=function(S){"undefined"!==typeof MathJax&&"function"===typeof MathJax.typeset?Editor.doMathJaxRender(S):Editor.mathJaxQueue.push(S)};Editor.MathJaxClear=
+function(){Editor.mathJaxQueue=[]};Editor.onMathJaxDone=function(){};var P=Editor.prototype.init;Editor.prototype.init=function(){P.apply(this,arguments);var S=mxUtils.bind(this,function(da,R){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)});this.graph.model.addListener(mxEvent.CHANGE,S);this.graph.addListener(mxEvent.REFRESH,S)};H=document.getElementsByTagName("script");if(null!=H&&0<H.length){var T=document.createElement("script");
+T.setAttribute("type","text/javascript");T.setAttribute("src",u);H[0].parentNode.appendChild(T)}}};Editor.prototype.csvToArray=function(u){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(u))return null;var H=[];u.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,
+function(P,T,S,da){void 0!==T?H.push(T.replace(/\\'/g,"'")):void 0!==S?H.push(S.replace(/\\"/g,'"')):void 0!==da&&H.push(da);return""});/,\s*$/.test(u)&&H.push("");return H};Editor.prototype.isCorsEnabledForUrl=function(u){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||u.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(u)||
+"https://raw.githubusercontent.com/"===u.substring(0,34)||"https://fonts.googleapis.com/"===u.substring(0,29)||"https://fonts.gstatic.com/"===u.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var u=new mxUrlConverter;u.updateBaseUrl();var H=u.convert,P=this;u.convert=function(T){if(null!=T){var S="http://"==T.substring(0,7)||"https://"==T.substring(0,8);S&&!navigator.onLine?T=Editor.svgBrokenImage.src:!S||T.substring(0,u.baseUrl.length)==u.baseUrl||P.crossOriginImages&&P.isCorsEnabledForUrl(T)?
+"chrome-extension://"==T.substring(0,19)||mxClient.IS_CHROMEAPP||(T=H.apply(this,arguments)):T=PROXY_URL+"?url="+encodeURIComponent(T)}return T};return u};Editor.createSvgDataUri=function(u){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(u)))};Editor.prototype.convertImageToDataUri=function(u,H){try{var P=!0,T=window.setTimeout(mxUtils.bind(this,function(){P=!1;H(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(u))mxUtils.get(u,mxUtils.bind(this,function(da){window.clearTimeout(T);
+P&&H(Editor.createSvgDataUri(da.getText()))}),function(){window.clearTimeout(T);P&&H(Editor.svgBrokenImage.src)});else{var S=new Image;this.crossOriginImages&&(S.crossOrigin="anonymous");S.onload=function(){window.clearTimeout(T);if(P)try{var da=document.createElement("canvas"),R=da.getContext("2d");da.height=S.height;da.width=S.width;R.drawImage(S,0,0);H(da.toDataURL())}catch(ma){H(Editor.svgBrokenImage.src)}};S.onerror=function(){window.clearTimeout(T);P&&H(Editor.svgBrokenImage.src)};S.src=u}}catch(da){H(Editor.svgBrokenImage.src)}};
+Editor.prototype.convertImages=function(u,H,P,T){null==T&&(T=this.createImageUrlConverter());var S=0,da=P||{};P=mxUtils.bind(this,function(R,ma){R=u.getElementsByTagName(R);for(var ra=0;ra<R.length;ra++)mxUtils.bind(this,function(xa){try{if(null!=xa){var ta=T.convert(xa.getAttribute(ma));if(null!=ta&&"data:"!=ta.substring(0,5)){var Aa=da[ta];null==Aa?(S++,this.convertImageToDataUri(ta,function(Ca){null!=Ca&&(da[ta]=Ca,xa.setAttribute(ma,Ca));S--;0==S&&H(u)})):xa.setAttribute(ma,Aa)}else null!=ta&&
+xa.setAttribute(ma,ta)}}catch(Ca){}})(R[ra])});P("image","xlink:href");P("img","src");0==S&&H(u)};Editor.base64Encode=function(u){for(var H="",P=0,T=u.length,S,da,R;P<T;){S=u.charCodeAt(P++)&255;if(P==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(S>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((S&3)<<4);H+="==";break}da=u.charCodeAt(P++);if(P==T){H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(S>>2);
+H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((S&3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2);H+="=";break}R=u.charCodeAt(P++);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(S>>2);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((S&3)<<4|(da&240)>>4);H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((da&15)<<2|(R&192)>>6);
+H+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(R&63)}return H};Editor.prototype.loadUrl=function(u,H,P,T,S,da,R,ma){try{var ra=!R&&(T||/(\.png)($|\?)/i.test(u)||/(\.jpe?g)($|\?)/i.test(u)||/(\.gif)($|\?)/i.test(u)||/(\.pdf)($|\?)/i.test(u));S=null!=S?S:!0;var xa=mxUtils.bind(this,function(){mxUtils.get(u,mxUtils.bind(this,function(ta){if(200<=ta.getStatus()&&299>=ta.getStatus()){if(null!=H){var Aa=ta.getText();if(ra){if((9==document.documentMode||10==document.documentMode)&&
+"undefined"!==typeof window.mxUtilsBinaryToArray){ta=mxUtilsBinaryToArray(ta.request.responseBody).toArray();Aa=Array(ta.length);for(var Ca=0;Ca<ta.length;Ca++)Aa[Ca]=String.fromCharCode(ta[Ca]);Aa=Aa.join("")}da=null!=da?da:"data:image/png;base64,";Aa=da+Editor.base64Encode(Aa)}H(Aa)}}else null!=P&&(0==ta.getStatus()?P({message:mxResources.get("accessDenied")},ta):P({message:mxResources.get("error")+" "+ta.getStatus()},ta))}),function(ta){null!=P&&P({message:mxResources.get("error")+" "+ta.getStatus()})},
+ra,this.timeout,function(){S&&null!=P&&P({code:App.ERROR_TIMEOUT,retry:xa})},ma)});xa()}catch(ta){null!=P&&P(ta)}};Editor.prototype.absoluteCssFonts=function(u){var H=null;if(null!=u){var P=u.split("url(");if(0<P.length){H=[P[0]];u=window.location.pathname;var T=null!=u?u.lastIndexOf("/"):-1;0<=T&&(u=u.substring(0,T+1));T=document.getElementsByTagName("base");var S=null;null!=T&&0<T.length&&(S=T[0].getAttribute("href"));for(var da=1;da<P.length;da++)if(T=P[da].indexOf(")"),0<T){var R=Editor.trimCssUrl(P[da].substring(0,
+T));this.graph.isRelativeUrl(R)&&(R=null!=S?S+R:window.location.protocol+"//"+window.location.hostname+("/"==R.charAt(0)?"":u)+R);H.push('url("'+R+'"'+P[da].substring(T))}else H.push(P[da])}else H=[u]}return null!=H?H.join(""):null};Editor.prototype.mapFontUrl=function(u,H,P){/^https?:\/\//.test(H)&&!this.isCorsEnabledForUrl(H)&&(H=PROXY_URL+"?url="+encodeURIComponent(H));P(u,H)};Editor.prototype.embedCssFonts=function(u,H){var P=u.split("url("),T=0;null==this.cachedFonts&&(this.cachedFonts={});var S=
+mxUtils.bind(this,function(){if(0==T){for(var ra=[P[0]],xa=1;xa<P.length;xa++){var ta=P[xa].indexOf(")");ra.push('url("');ra.push(this.cachedFonts[Editor.trimCssUrl(P[xa].substring(0,ta))]);ra.push('"'+P[xa].substring(ta))}H(ra.join(""))}});if(0<P.length){for(u=1;u<P.length;u++){var da=P[u].indexOf(")"),R=null,ma=P[u].indexOf("format(",da);0<ma&&(R=Editor.trimCssUrl(P[u].substring(ma+7,P[u].indexOf(")",ma))));mxUtils.bind(this,function(ra){if(null==this.cachedFonts[ra]){this.cachedFonts[ra]=ra;T++;
+var xa="application/x-font-ttf";if("svg"==R||/(\.svg)($|\?)/i.test(ra))xa="image/svg+xml";else if("otf"==R||"embedded-opentype"==R||/(\.otf)($|\?)/i.test(ra))xa="application/x-font-opentype";else if("woff"==R||/(\.woff)($|\?)/i.test(ra))xa="application/font-woff";else if("woff2"==R||/(\.woff2)($|\?)/i.test(ra))xa="application/font-woff2";else if("eot"==R||/(\.eot)($|\?)/i.test(ra))xa="application/vnd.ms-fontobject";else if("sfnt"==R||/(\.sfnt)($|\?)/i.test(ra))xa="application/font-sfnt";this.mapFontUrl(xa,
+ra,mxUtils.bind(this,function(ta,Aa){this.loadUrl(Aa,mxUtils.bind(this,function(Ca){this.cachedFonts[ra]=Ca;T--;S()}),mxUtils.bind(this,function(Ca){T--;S()}),!0,null,"data:"+ta+";charset=utf-8;base64,")}))}})(Editor.trimCssUrl(P[u].substring(0,da)),R)}S()}else H(u)};Editor.prototype.loadFonts=function(u){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(H){this.resolvedFontCss=H;null!=u&&u()})):null!=u&&u()};Editor.prototype.createGoogleFontCache=
+function(){var u={},H;for(H in Graph.fontMapping)Graph.isCssFontUrl(H)&&(u[H]=Graph.fontMapping[H]);return u};Editor.prototype.embedExtFonts=function(u){var H=this.graph.getCustomFonts();if(0<H.length){var P=[],T=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var S=mxUtils.bind(this,function(){0==T&&this.embedCssFonts(P.join(""),u)}),da=0;da<H.length;da++)mxUtils.bind(this,function(R,ma){Graph.isCssFontUrl(ma)?null==this.cachedGoogleFonts[ma]?(T++,this.loadUrl(ma,
+mxUtils.bind(this,function(ra){this.cachedGoogleFonts[ma]=ra;P.push(ra+"\n");T--;S()}),mxUtils.bind(this,function(ra){T--;P.push("@import url("+ma+");\n");S()}))):P.push(this.cachedGoogleFonts[ma]+"\n"):P.push('@font-face {font-family: "'+R+'";src: url("'+ma+'")}\n')})(H[da].name,H[da].url);S()}else u()};Editor.prototype.addMathCss=function(u){u=u.getElementsByTagName("defs");if(null!=u&&0<u.length)for(var H=document.getElementsByTagName("style"),P=0;P<H.length;P++){var T=mxUtils.getTextContent(H[P]);
+0>T.indexOf("mxPageSelector")&&0<T.indexOf("MathJax")&&u[0].appendChild(H[P].cloneNode(!0))}};Editor.prototype.addFontCss=function(u,H){H=null!=H?H:this.absoluteCssFonts(this.fontCss);if(null!=H){var P=u.getElementsByTagName("defs"),T=u.ownerDocument;0==P.length?(P=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"defs"):T.createElement("defs"),null!=u.firstChild?u.insertBefore(P,u.firstChild):u.appendChild(P)):P=P[0];u=null!=T.createElementNS?T.createElementNS(mxConstants.NS_SVG,"style"):
+T.createElement("style");u.setAttribute("type","text/css");mxUtils.setTextContent(u,H);P.appendChild(u)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(u,H,P){var T=mxClient.IS_FF?8192:16384;return Math.min(P,Math.min(T/u,T/H))};Editor.prototype.exportToCanvas=function(u,H,P,T,S,da,R,ma,ra,xa,ta,Aa,Ca,Ba,sa,Pa,Ta,Oa){try{da=null!=da?da:!0;R=null!=R?R:!0;Aa=null!=Aa?Aa:this.graph;Ca=null!=Ca?Ca:0;var Xa=
+ra?null:Aa.background;Xa==mxConstants.NONE&&(Xa=null);null==Xa&&(Xa=T);null==Xa&&0==ra&&(Xa=Pa?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(Aa.getSvg(null,null,Ca,Ba,null,R,null,null,null,xa,null,Pa,Ta,Oa),mxUtils.bind(this,function(Ga){try{var eb=new Image;eb.onload=mxUtils.bind(this,function(){try{var z=function(){mxClient.IS_SF?window.setTimeout(function(){W.drawImage(eb,0,0);u(K,Ga)},0):(W.drawImage(eb,0,0),u(K,Ga))},K=document.createElement("canvas"),M=parseInt(Ga.getAttribute("width")),
+U=parseInt(Ga.getAttribute("height"));ma=null!=ma?ma:1;null!=H&&(ma=da?Math.min(1,Math.min(3*H/(4*U),H/M)):H/M);ma=this.getMaxCanvasScale(M,U,ma);M=Math.ceil(ma*M);U=Math.ceil(ma*U);K.setAttribute("width",M);K.setAttribute("height",U);var W=K.getContext("2d");null!=Xa&&(W.beginPath(),W.rect(0,0,M,U),W.fillStyle=Xa,W.fill());1!=ma&&W.scale(ma,ma);if(sa){var ha=Aa.view,na=ha.scale;ha.scale=1;var ua=btoa(unescape(encodeURIComponent(ha.createSvgGrid(ha.gridColor))));ha.scale=na;ua="data:image/svg+xml;base64,"+
+ua;var pa=Aa.gridSize*ha.gridSteps*ma,za=Aa.getGraphBounds(),Da=ha.translate.x*na,Ma=ha.translate.y*na,La=Da+(za.x-Da)/na-Ca,Ua=Ma+(za.y-Ma)/na-Ca,Sa=new Image;Sa.onload=function(){try{for(var Fa=-Math.round(pa-mxUtils.mod((Da-La)*ma,pa)),va=-Math.round(pa-mxUtils.mod((Ma-Ua)*ma,pa));Fa<M;Fa+=pa)for(var ya=va;ya<U;ya+=pa)W.drawImage(Sa,Fa/ma,ya/ma);z()}catch(Na){null!=S&&S(Na)}};Sa.onerror=function(Fa){null!=S&&S(Fa)};Sa.src=ua}else z()}catch(Fa){null!=S&&S(Fa)}});eb.onerror=function(z){null!=S&&
+S(z)};xa&&this.graph.addSvgShadow(Ga);this.graph.mathEnabled&&this.addMathCss(Ga);var bb=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(Ga,this.resolvedFontCss),eb.src=Editor.createSvgDataUri(mxUtils.getXml(Ga))}catch(z){null!=S&&S(z)}});this.embedExtFonts(mxUtils.bind(this,function(z){try{null!=z&&this.addFontCss(Ga,z),this.loadFonts(bb)}catch(K){null!=S&&S(K)}}))}catch(z){null!=S&&S(z)}}),P,ta)}catch(Ga){null!=S&&S(Ga)}};Editor.crcTable=[];for(var D=0;256>D;D++)for(var t=
+D,E=0;8>E;E++)t=1==(t&1)?3988292384^t>>>1:t>>>1,Editor.crcTable[D]=t;Editor.updateCRC=function(u,H,P,T){for(var S=0;S<T;S++)u=Editor.crcTable[(u^H.charCodeAt(P+S))&255]^u>>>8;return u};Editor.crc32=function(u){for(var H=-1,P=0;P<u.length;P++)H=H>>>8^Editor.crcTable[(H^u.charCodeAt(P))&255];return(H^-1)>>>0};Editor.writeGraphModelToPng=function(u,H,P,T,S){function da(ta,Aa){var Ca=ra;ra+=Aa;return ta.substring(Ca,ra)}function R(ta){ta=da(ta,4);return ta.charCodeAt(3)+(ta.charCodeAt(2)<<8)+(ta.charCodeAt(1)<<
+16)+(ta.charCodeAt(0)<<24)}function ma(ta){return String.fromCharCode(ta>>24&255,ta>>16&255,ta>>8&255,ta&255)}u=u.substring(u.indexOf(",")+1);u=window.atob?atob(u):Base64.decode(u,!0);var ra=0;if(da(u,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=S&&S();else if(da(u,4),"IHDR"!=da(u,4))null!=S&&S();else{da(u,17);S=u.substring(0,ra);do{var xa=R(u);if("IDAT"==da(u,4)){S=u.substring(0,ra-8);"pHYs"==H&&"dpi"==P?(P=Math.round(T/.0254),P=ma(P)+ma(P)+String.fromCharCode(1)):P=
+P+String.fromCharCode(0)+("zTXt"==H?String.fromCharCode(0):"")+T;T=4294967295;T=Editor.updateCRC(T,H,0,4);T=Editor.updateCRC(T,P,0,P.length);S+=ma(P.length)+H+P+ma(T^4294967295);S+=u.substring(ra-8,u.length);break}S+=u.substring(ra-8,ra-4+xa);da(u,xa);da(u,4)}while(xa);return"data:image/png;base64,"+(window.btoa?btoa(S):Base64.encode(S,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=
+function(u,H){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var f=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(u,H){var P=null;null!=u.editor.graph.getModel().getParent(H)?P=H.getId():null!=u.currentPage&&(P=u.currentPage.getId());return P});if(null!=window.StyleFormatPanel){var g=
+Format.prototype.init;Format.prototype.init=function(){g.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var m=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?m.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var u=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=u&&u.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=
+function(u){return!1};var q=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(u){u=q.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var H=this.editorUi,P=H.editor.graph,T=this.createOption(mxResources.get("shadow"),function(){return P.shadowVisible},function(S){var da=new ChangePageSetup(H);da.ignoreColor=!0;da.ignoreImage=!0;da.shadowVisible=S;P.model.execute(da)},{install:function(S){this.listener=function(){S(P.shadowVisible)};
+H.addListener("shadowVisibleChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});Editor.enableShadowOption||(T.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(T,60));u.appendChild(T)}return u};var y=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(u){u=y.apply(this,arguments);var H=this.editorUi,P=H.editor.graph;if(P.isEnabled()){var T=H.getCurrentFile();if(null!=T&&T.isAutosaveOptional()){var S=
+this.createOption(mxResources.get("autosave"),function(){return H.editor.autosave},function(R){H.editor.setAutosave(R);H.editor.autosave&&T.isModified()&&T.fileChanged()},{install:function(R){this.listener=function(){R(H.editor.autosave)};H.editor.addListener("autosaveChanged",this.listener)},destroy:function(){H.editor.removeListener(this.listener)}});u.appendChild(S)}}if(this.isMathOptionVisible()&&P.isEnabled()&&"undefined"!==typeof MathJax){S=this.createOption(mxResources.get("mathematicalTypesetting"),
+function(){return P.mathEnabled},function(R){H.actions.get("mathematicalTypesetting").funct()},{install:function(R){this.listener=function(){R(P.mathEnabled)};H.addListener("mathEnabledChanged",this.listener)},destroy:function(){H.removeListener(this.listener)}});S.style.paddingTop="5px";u.appendChild(S);var da=H.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");da.style.position="relative";da.style.marginLeft="6px";da.style.top="2px";S.appendChild(da)}return u};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",
+dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double",dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",
+type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",
+dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",defVal:.3,min:0,max:1}];mxCellRenderer.defaultShapes.internalStorage.prototype.customProperties=
+[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"dx",dispName:"Left Line",type:"float",min:0,defVal:20},{name:"dy",dispName:"Top Line",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.cube.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,defVal:20},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0},{name:"darkOpacity2",dispName:"Dark Opacity 2",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.step.prototype.customProperties=
+[{name:"size",dispName:"Notch Size",type:"float",min:0,defVal:20},{name:"fixedSize",dispName:"Fixed Size",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.trapezoid.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.tape.prototype.customProperties=[{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.4}];mxCellRenderer.defaultShapes.note.prototype.customProperties=
+[{name:"size",dispName:"Fold Size",type:"float",min:0,defVal:30},{name:"darkOpacity",dispName:"Dark Opacity",type:"float",min:-1,max:1,defVal:0}];mxCellRenderer.defaultShapes.card.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Cutoff Size",type:"float",min:0,defVal:30}];mxCellRenderer.defaultShapes.callout.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},
+{name:"base",dispName:"Callout Width",type:"float",min:0,defVal:20},{name:"size",dispName:"Callout Length",type:"float",min:0,defVal:30},{name:"position",dispName:"Callout Position",type:"float",min:0,max:1,defVal:.5},{name:"position2",dispName:"Callout Tip Position",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.folder.prototype.customProperties=[{name:"tabWidth",dispName:"Tab Width",type:"float"},{name:"tabHeight",dispName:"Tab Height",type:"float"},{name:"tabPosition",dispName:"Tap Position",
+type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"right",dispName:"Right"}]}];mxCellRenderer.defaultShapes.swimlane.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"startSize",dispName:"Header Size",type:"float"},{name:"swimlaneHead",dispName:"Head Border",type:"bool",defVal:!0},{name:"swimlaneBody",dispName:"Body Border",type:"bool",defVal:!0},{name:"horizontal",dispName:"Horizontal",type:"bool",defVal:!0},{name:"separatorColor",dispName:"Separator Color",
+type:"color",defVal:null}];mxCellRenderer.defaultShapes.table.prototype.customProperties=[{name:"rowLines",dispName:"Row Lines",type:"bool",defVal:!0},{name:"columnLines",dispName:"Column Lines",type:"bool",defVal:!0},{name:"fixedRows",dispName:"Fixed Rows",type:"bool",defVal:!1},{name:"resizeLast",dispName:"Resize Last Column",type:"bool",defVal:!1},{name:"resizeLastRow",dispName:"Resize Last Row",type:"bool",defVal:!1}].concat(mxCellRenderer.defaultShapes.swimlane.prototype.customProperties).concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);
mxCellRenderer.defaultShapes.tableRow.prototype.customProperties=mxCellRenderer.defaultShapes.swimlane.prototype.customProperties.concat(mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties);mxCellRenderer.defaultShapes.doubleEllipse.prototype.customProperties=[{name:"margin",dispName:"Indent",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.ext.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:15},{name:"double",dispName:"Double",
type:"bool",defVal:!1},{name:"margin",dispName:"Indent",type:"float",min:0,defVal:0}];mxCellRenderer.defaultShapes.curlyBracket.prototype.customProperties=[{name:"rounded",dispName:"Rounded",type:"bool",defVal:!0},{name:"size",dispName:"Size",type:"float",min:0,max:1,defVal:.5}];mxCellRenderer.defaultShapes.image.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.label.prototype.customProperties=[{name:"imageAspect",dispName:"Fixed Image Aspect",
type:"bool",defVal:!0},{name:"imageAlign",dispName:"Image Align",type:"enum",enumList:[{val:"left",dispName:"Left"},{val:"center",dispName:"Center"},{val:"right",dispName:"Right"}],defVal:"left"},{name:"imageVerticalAlign",dispName:"Image Vertical Align",type:"enum",enumList:[{val:"top",dispName:"Top"},{val:"middle",dispName:"Middle"},{val:"bottom",dispName:"Bottom"}],defVal:"middle"},{name:"imageWidth",dispName:"Image Width",type:"float",min:0,defVal:24},{name:"imageHeight",dispName:"Image Height",
@@ -3230,93 +3231,93 @@ defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName
stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#000000"},{fill:"#f0a30a",stroke:"#BD7000",font:"#000000"},{fill:"#e3c800",stroke:"#B09500",font:"#000000"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"},{fill:"#a0522d",stroke:"#6D1F00",
font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},
{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=
-function(u,H,O){if(null!=H){var T=function(da){if(null!=da)if(O)for(var P=0;P<da.length;P++)H[da[P].name]=da[P];else for(var ma in H){var ra=!1;for(P=0;P<da.length;P++)if(da[P].name==ma&&da[P].type==H[ma].type){ra=!0;break}ra||delete H[ma]}},R=this.editorUi.editor.graph.view.getState(u);null!=R&&null!=R.shape&&(R.shape.commonCustomPropAdded||(R.shape.commonCustomPropAdded=!0,R.shape.customProperties=R.shape.customProperties||[],R.cell.vertex?Array.prototype.push.apply(R.shape.customProperties,Editor.commonVertexProperties):
-Array.prototype.push.apply(R.shape.customProperties,Editor.commonEdgeProperties)),T(R.shape.customProperties));u=u.getAttribute("customProperties");if(null!=u)try{T(JSON.parse(u))}catch(da){}}};var F=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var u=this.editorUi.getSelectionState();"image"!=u.style.shape&&!u.containsLabel&&0<u.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));F.apply(this,arguments);if(Editor.enableCustomProperties){for(var H=
-{},O=u.vertices,T=u.edges,R=0;R<O.length;R++)this.findCommonProperties(O[R],H,0==R);for(R=0;R<T.length;R++)this.findCommonProperties(T[R],H,0==O.length&&0==R);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(H).length&&this.container.appendChild(this.addProperties(this.createPanel(),H,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
-!0;StyleFormatPanel.prototype.addProperties=function(u,H,O){function T(X,fa,na,ua){Aa.getModel().beginUpdate();try{var pa=[],za=[];if(null!=na.index){for(var Da=[],Ma=na.parentRow.nextSibling;Ma&&Ma.getAttribute("data-pName")==X;)Da.push(Ma.getAttribute("data-pValue")),Ma=Ma.nextSibling;na.index<Da.length?null!=ua?Da.splice(ua,1):Da[na.index]=fa:Da.push(fa);null!=na.size&&Da.length>na.size&&(Da=Da.slice(0,na.size));fa=Da.join(",");null!=na.countProperty&&(Aa.setCellStyles(na.countProperty,Da.length,
-Aa.getSelectionCells()),pa.push(na.countProperty),za.push(Da.length))}Aa.setCellStyles(X,fa,Aa.getSelectionCells());pa.push(X);za.push(fa);if(null!=na.dependentProps)for(X=0;X<na.dependentProps.length;X++){var La=na.dependentPropsDefVal[X],Ua=na.dependentPropsVals[X];if(Ua.length>fa)Ua=Ua.slice(0,fa);else for(var Ra=Ua.length;Ra<fa;Ra++)Ua.push(La);Ua=Ua.join(",");Aa.setCellStyles(na.dependentProps[X],Ua,Aa.getSelectionCells());pa.push(na.dependentProps[X]);za.push(Ua)}if("function"==typeof na.onChange)na.onChange(Aa,
-fa);ta.editorUi.fireEvent(new mxEventObject("styleChanged","keys",pa,"values",za,"cells",Aa.getSelectionCells()))}finally{Aa.getModel().endUpdate()}}function R(X,fa,na){var ua=mxUtils.getOffset(u,!0),pa=mxUtils.getOffset(X,!0);fa.style.position="absolute";fa.style.left=pa.x-ua.x+"px";fa.style.top=pa.y-ua.y+"px";fa.style.width=X.offsetWidth+"px";fa.style.height=X.offsetHeight-(na?4:0)+"px";fa.style.zIndex=5}function da(X,fa,na){var ua=document.createElement("div");ua.style.width="32px";ua.style.height=
-"4px";ua.style.margin="2px";ua.style.border="1px solid black";ua.style.background=fa&&"none"!=fa?fa:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(ta,function(pa){this.editorUi.pickColor(fa,function(za){ua.style.background="none"==za?"url('"+Dialog.prototype.noColorImage+"')":za;T(X,za,na)});mxEvent.consume(pa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(ua);return btn}function P(X,fa,na,ua,pa,za,Da){null!=fa&&(fa=fa.split(","),
-Ca.push({name:X,values:fa,type:na,defVal:ua,countProperty:pa,parentRow:za,isDeletable:!0,flipBkg:Da}));btn=mxUtils.button("+",mxUtils.bind(ta,function(Ma){for(var La=za,Ua=0;null!=La.nextSibling;)if(La.nextSibling.getAttribute("data-pName")==X)La=La.nextSibling,Ua++;else break;var Ra={type:na,parentRow:za,index:Ua,isDeletable:!0,defVal:ua,countProperty:pa};Ua=xa(X,"",Ra,0==Ua%2,Da);T(X,ua,Ra);La.parentNode.insertBefore(Ua,La.nextSibling);mxEvent.consume(Ma)}));btn.style.height="16px";btn.style.width=
-"25px";btn.className="geColorBtn";return btn}function ma(X,fa,na,ua,pa,za,Da){if(0<pa){var Ma=Array(pa);fa=null!=fa?fa.split(","):[];for(var La=0;La<pa;La++)Ma[La]=null!=fa[La]?fa[La]:null!=ua?ua:"";Ca.push({name:X,values:Ma,type:na,defVal:ua,parentRow:za,flipBkg:Da,size:pa})}return document.createElement("div")}function ra(X,fa,na){var ua=document.createElement("input");ua.type="checkbox";ua.checked="1"==fa;mxEvent.addListener(ua,"change",function(){T(X,ua.checked?"1":"0",na)});return ua}function xa(X,
-fa,na,ua,pa){var za=na.dispName,Da=na.type,Ma=document.createElement("tr");Ma.className="gePropRow"+(pa?"Dark":"")+(ua?"Alt":"")+" gePropNonHeaderRow";Ma.setAttribute("data-pName",X);Ma.setAttribute("data-pValue",fa);ua=!1;null!=na.index&&(Ma.setAttribute("data-index",na.index),za=(null!=za?za:"")+"["+na.index+"]",ua=!0);var La=document.createElement("td");La.className="gePropRowCell";za=mxResources.get(za,null,za);mxUtils.write(La,za);La.setAttribute("title",za);ua&&(La.style.textAlign="right");
-Ma.appendChild(La);La=document.createElement("td");La.className="gePropRowCell";if("color"==Da)La.appendChild(da(X,fa,na));else if("bool"==Da||"boolean"==Da)La.appendChild(ra(X,fa,na));else if("enum"==Da){var Ua=na.enumList;for(pa=0;pa<Ua.length;pa++)if(za=Ua[pa],za.val==fa){mxUtils.write(La,mxResources.get(za.dispName,null,za.dispName));break}mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){var Ra=document.createElement("select");R(La,Ra);for(var Fa=0;Fa<Ua.length;Fa++){var va=Ua[Fa],ya=
-document.createElement("option");ya.value=mxUtils.htmlEntities(va.val);mxUtils.write(ya,mxResources.get(va.dispName,null,va.dispName));Ra.appendChild(ya)}Ra.value=fa;u.appendChild(Ra);mxEvent.addListener(Ra,"change",function(){var Na=mxUtils.htmlEntities(Ra.value);T(X,Na,na)});Ra.focus();mxEvent.addListener(Ra,"blur",function(){u.removeChild(Ra)})}))}else"dynamicArr"==Da?La.appendChild(P(X,fa,na.subType,na.subDefVal,na.countProperty,Ma,pa)):"staticArr"==Da?La.appendChild(ma(X,fa,na.subType,na.subDefVal,
-na.size,Ma,pa)):"readOnly"==Da?(pa=document.createElement("input"),pa.setAttribute("readonly",""),pa.value=fa,pa.style.width="96px",pa.style.borderWidth="0px",La.appendChild(pa)):(La.innerHTML=mxUtils.htmlEntities(decodeURIComponent(fa)),mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){function Ra(){var va=Fa.value;va=0==va.length&&"string"!=Da?0:va;na.allowAuto&&(null!=va.trim&&"auto"==va.trim().toLowerCase()?(va="auto",Da="string"):(va=parseFloat(va),va=isNaN(va)?0:va));null!=na.min&&va<
-na.min?va=na.min:null!=na.max&&va>na.max&&(va=na.max);va=encodeURIComponent(("int"==Da?parseInt(va):va)+"");T(X,va,na)}var Fa=document.createElement("input");R(La,Fa,!0);Fa.value=decodeURIComponent(fa);Fa.className="gePropEditor";"int"!=Da&&"float"!=Da||na.allowAuto||(Fa.type="number",Fa.step="int"==Da?"1":"any",null!=na.min&&(Fa.min=parseFloat(na.min)),null!=na.max&&(Fa.max=parseFloat(na.max)));u.appendChild(Fa);mxEvent.addListener(Fa,"keypress",function(va){13==va.keyCode&&Ra()});Fa.focus();mxEvent.addListener(Fa,
-"blur",function(){Ra()})})));na.isDeletable&&(pa=mxUtils.button("-",mxUtils.bind(ta,function(Ra){T(X,"",na,na.index);mxEvent.consume(Ra)})),pa.style.height="16px",pa.style.width="25px",pa.style.float="right",pa.className="geColorBtn",La.appendChild(pa));Ma.appendChild(La);return Ma}var ta=this,Aa=this.editorUi.editor.graph,Ca=[];u.style.position="relative";u.style.padding="0";var Ba=document.createElement("table");Ba.className="geProperties";Ba.style.whiteSpace="nowrap";Ba.style.width="100%";var sa=
-document.createElement("tr");sa.className="gePropHeader";var Oa=document.createElement("th");Oa.className="gePropHeaderCell";var Ta=document.createElement("img");Ta.src=Sidebar.prototype.expandedImage;Ta.style.verticalAlign="middle";Oa.appendChild(Ta);mxUtils.write(Oa,mxResources.get("property"));sa.style.cursor="pointer";var Sa=function(){var X=Ba.querySelectorAll(".gePropNonHeaderRow");if(ta.editorUi.propertiesCollapsed){Ta.src=Sidebar.prototype.collapsedImage;var fa="none";for(var na=u.childNodes.length-
-1;0<=na;na--)try{var ua=u.childNodes[na],pa=ua.nodeName.toUpperCase();"INPUT"!=pa&&"SELECT"!=pa||u.removeChild(ua)}catch(za){}}else Ta.src=Sidebar.prototype.expandedImage,fa="";for(na=0;na<X.length;na++)X[na].style.display=fa};mxEvent.addListener(sa,"click",function(){ta.editorUi.propertiesCollapsed=!ta.editorUi.propertiesCollapsed;Sa()});sa.appendChild(Oa);Oa=document.createElement("th");Oa.className="gePropHeaderCell";Oa.innerHTML=mxResources.get("value");sa.appendChild(Oa);Ba.appendChild(sa);var $a=
-!1,Ga=!1;sa=null;1==O.vertices.length&&0==O.edges.length?sa=O.vertices[0].id:0==O.vertices.length&&1==O.edges.length&&(sa=O.edges[0].id);null!=sa&&Ba.appendChild(xa("id",mxUtils.htmlEntities(sa),{dispName:"ID",type:"readOnly"},!0,!1));for(var eb in H)if(sa=H[eb],"function"!=typeof sa.isVisible||sa.isVisible(O,this)){var bb=null!=O.style[eb]?mxUtils.htmlEntities(O.style[eb]+""):null!=sa.getDefaultValue?sa.getDefaultValue(O,this):sa.defVal;if("separator"==sa.type)Ga=!Ga;else{if("staticArr"==sa.type)sa.size=
-parseInt(O.style[sa.sizeProperty]||H[sa.sizeProperty].defVal)||0;else if(null!=sa.dependentProps){var z=sa.dependentProps,L=[],M=[];for(Oa=0;Oa<z.length;Oa++){var U=O.style[z[Oa]];M.push(H[z[Oa]].subDefVal);L.push(null!=U?U.split(","):[])}sa.dependentPropsDefVal=M;sa.dependentPropsVals=L}Ba.appendChild(xa(eb,bb,sa,$a,Ga));$a=!$a}}for(Oa=0;Oa<Ca.length;Oa++)for(sa=Ca[Oa],H=sa.parentRow,O=0;O<sa.values.length;O++)eb=xa(sa.name,sa.values[O],{type:sa.type,parentRow:sa.parentRow,isDeletable:sa.isDeletable,
-index:O,defVal:sa.defVal,countProperty:sa.countProperty,size:sa.size},0==O%2,sa.flipBkg),H.parentNode.insertBefore(eb,H.nextSibling),H=eb;u.appendChild(Ba);Sa();return u};StyleFormatPanel.prototype.addStyles=function(u){function H(sa){mxEvent.addListener(sa,"mouseenter",function(){sa.style.opacity="1"});mxEvent.addListener(sa,"mouseleave",function(){sa.style.opacity="0.5"})}var O=this.editorUi,T=O.editor.graph,R=document.createElement("div");R.style.whiteSpace="nowrap";R.style.paddingLeft="24px";
-R.style.paddingRight="20px";u.style.paddingLeft="16px";u.style.paddingBottom="6px";u.style.position="relative";u.appendChild(R);var da="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(" "),P=document.createElement("div");P.style.whiteSpace="nowrap";P.style.position="relative";P.style.textAlign="center";P.style.width="210px";for(var ma=[],ra=0;ra<this.defaultColorSchemes.length;ra++){var xa=
-document.createElement("div");xa.style.display="inline-block";xa.style.width="6px";xa.style.height="6px";xa.style.marginLeft="4px";xa.style.marginRight="3px";xa.style.borderRadius="3px";xa.style.cursor="pointer";xa.style.background="transparent";xa.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(sa){mxEvent.addListener(xa,"click",mxUtils.bind(this,function(){ta(sa)}))})(ra);ma.push(xa);P.appendChild(xa)}var ta=mxUtils.bind(this,function(sa){null!=ma[sa]&&(null!=this.format.currentScheme&&
-null!=ma[this.format.currentScheme]&&(ma[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=sa,Aa(this.defaultColorSchemes[this.format.currentScheme]),ma[this.format.currentScheme].style.background="#84d7ff")}),Aa=mxUtils.bind(this,function(sa){var Oa=mxUtils.bind(this,function(Sa){var $a=mxUtils.button("",mxUtils.bind(this,function(bb){T.getModel().beginUpdate();try{for(var z=O.getSelectionState().cells,L=0;L<z.length;L++){for(var M=T.getModel().getStyle(z[L]),U=
-0;U<da.length;U++)M=mxUtils.removeStylename(M,da[U]);var X=T.getModel().isVertex(z[L])?T.defaultVertexStyle:T.defaultEdgeStyle;null!=Sa?(mxEvent.isShiftDown(bb)||(M=""==Sa.fill?mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,Sa.fill||mxUtils.getValue(X,mxConstants.STYLE_FILLCOLOR,null)),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,Sa.gradient||mxUtils.getValue(X,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(bb)||mxClient.IS_MAC&&
-mxEvent.isMetaDown(bb)||!T.getModel().isVertex(z[L])||(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,Sa.font||mxUtils.getValue(X,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(bb)||(M=""==Sa.stroke?mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,Sa.stroke||mxUtils.getValue(X,mxConstants.STYLE_STROKECOLOR,null)))):(M=mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(X,mxConstants.STYLE_FILLCOLOR,"#ffffff")),M=mxUtils.setStyle(M,
-mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(X,mxConstants.STYLE_STROKECOLOR,"#000000")),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(X,mxConstants.STYLE_GRADIENTCOLOR,null)),T.getModel().isVertex(z[L])&&(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(X,mxConstants.STYLE_FONTCOLOR,null))));T.getModel().setStyle(z[L],M)}}finally{T.getModel().endUpdate()}}));$a.className="geStyleButton";$a.style.width="36px";$a.style.height=10>=this.defaultColorSchemes.length?
-"24px":"30px";$a.style.margin="0px 6px 6px 0px";if(null!=Sa){var Ga="1"==urlParams.sketch?"2px solid":"1px solid";null!=Sa.gradient?mxClient.IS_IE&&10>document.documentMode?$a.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+Sa.fill+"', EndColorStr='"+Sa.gradient+"', GradientType=0)":$a.style.backgroundImage="linear-gradient("+Sa.fill+" 0px,"+Sa.gradient+" 100%)":Sa.fill==mxConstants.NONE?$a.style.background="url('"+Dialog.prototype.noColorImage+"')":$a.style.backgroundColor=
-""==Sa.fill?mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):Sa.fill||mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");$a.style.border=Sa.stroke==mxConstants.NONE?Ga+" transparent":""==Sa.stroke?Ga+" "+mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):Ga+" "+(Sa.stroke||mxUtils.getValue(T.defaultVertexStyle,
-mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=Sa.title&&$a.setAttribute("title",Sa.title)}else{Ga=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var eb=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");$a.style.backgroundColor=Ga;$a.style.border="1px solid "+eb}$a.style.borderRadius="0";R.appendChild($a)});R.innerText="";for(var Ta=0;Ta<sa.length;Ta++)0<Ta&&0==mxUtils.mod(Ta,4)&&mxUtils.br(R),Oa(sa[Ta])});
+function(u,H,P){if(null!=H){var T=function(da){if(null!=da)if(P)for(var R=0;R<da.length;R++)H[da[R].name]=da[R];else for(var ma in H){var ra=!1;for(R=0;R<da.length;R++)if(da[R].name==ma&&da[R].type==H[ma].type){ra=!0;break}ra||delete H[ma]}},S=this.editorUi.editor.graph.view.getState(u);null!=S&&null!=S.shape&&(S.shape.commonCustomPropAdded||(S.shape.commonCustomPropAdded=!0,S.shape.customProperties=S.shape.customProperties||[],S.cell.vertex?Array.prototype.push.apply(S.shape.customProperties,Editor.commonVertexProperties):
+Array.prototype.push.apply(S.shape.customProperties,Editor.commonEdgeProperties)),T(S.shape.customProperties));u=u.getAttribute("customProperties");if(null!=u)try{T(JSON.parse(u))}catch(da){}}};var F=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var u=this.editorUi.getSelectionState();"image"!=u.style.shape&&!u.containsLabel&&0<u.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));F.apply(this,arguments);if(Editor.enableCustomProperties){for(var H=
+{},P=u.vertices,T=u.edges,S=0;S<P.length;S++)this.findCommonProperties(P[S],H,0==S);for(S=0;S<T.length;S++)this.findCommonProperties(T[S],H,0==P.length&&0==S);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(H).length&&this.container.appendChild(this.addProperties(this.createPanel(),H,u))}};var C=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(u){this.addActions(u,["copyStyle","pasteStyle"]);return C.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
+!0;StyleFormatPanel.prototype.addProperties=function(u,H,P){function T(W,ha,na,ua){Aa.getModel().beginUpdate();try{var pa=[],za=[];if(null!=na.index){for(var Da=[],Ma=na.parentRow.nextSibling;Ma&&Ma.getAttribute("data-pName")==W;)Da.push(Ma.getAttribute("data-pValue")),Ma=Ma.nextSibling;na.index<Da.length?null!=ua?Da.splice(ua,1):Da[na.index]=ha:Da.push(ha);null!=na.size&&Da.length>na.size&&(Da=Da.slice(0,na.size));ha=Da.join(",");null!=na.countProperty&&(Aa.setCellStyles(na.countProperty,Da.length,
+Aa.getSelectionCells()),pa.push(na.countProperty),za.push(Da.length))}Aa.setCellStyles(W,ha,Aa.getSelectionCells());pa.push(W);za.push(ha);if(null!=na.dependentProps)for(W=0;W<na.dependentProps.length;W++){var La=na.dependentPropsDefVal[W],Ua=na.dependentPropsVals[W];if(Ua.length>ha)Ua=Ua.slice(0,ha);else for(var Sa=Ua.length;Sa<ha;Sa++)Ua.push(La);Ua=Ua.join(",");Aa.setCellStyles(na.dependentProps[W],Ua,Aa.getSelectionCells());pa.push(na.dependentProps[W]);za.push(Ua)}if("function"==typeof na.onChange)na.onChange(Aa,
+ha);ta.editorUi.fireEvent(new mxEventObject("styleChanged","keys",pa,"values",za,"cells",Aa.getSelectionCells()))}finally{Aa.getModel().endUpdate()}}function S(W,ha,na){var ua=mxUtils.getOffset(u,!0),pa=mxUtils.getOffset(W,!0);ha.style.position="absolute";ha.style.left=pa.x-ua.x+"px";ha.style.top=pa.y-ua.y+"px";ha.style.width=W.offsetWidth+"px";ha.style.height=W.offsetHeight-(na?4:0)+"px";ha.style.zIndex=5}function da(W,ha,na){var ua=document.createElement("div");ua.style.width="32px";ua.style.height=
+"4px";ua.style.margin="2px";ua.style.border="1px solid black";ua.style.background=ha&&"none"!=ha?ha:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(ta,function(pa){this.editorUi.pickColor(ha,function(za){ua.style.background="none"==za?"url('"+Dialog.prototype.noColorImage+"')":za;T(W,za,na)});mxEvent.consume(pa)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(ua);return btn}function R(W,ha,na,ua,pa,za,Da){null!=ha&&(ha=ha.split(","),
+Ca.push({name:W,values:ha,type:na,defVal:ua,countProperty:pa,parentRow:za,isDeletable:!0,flipBkg:Da}));btn=mxUtils.button("+",mxUtils.bind(ta,function(Ma){for(var La=za,Ua=0;null!=La.nextSibling;)if(La.nextSibling.getAttribute("data-pName")==W)La=La.nextSibling,Ua++;else break;var Sa={type:na,parentRow:za,index:Ua,isDeletable:!0,defVal:ua,countProperty:pa};Ua=xa(W,"",Sa,0==Ua%2,Da);T(W,ua,Sa);La.parentNode.insertBefore(Ua,La.nextSibling);mxEvent.consume(Ma)}));btn.style.height="16px";btn.style.width=
+"25px";btn.className="geColorBtn";return btn}function ma(W,ha,na,ua,pa,za,Da){if(0<pa){var Ma=Array(pa);ha=null!=ha?ha.split(","):[];for(var La=0;La<pa;La++)Ma[La]=null!=ha[La]?ha[La]:null!=ua?ua:"";Ca.push({name:W,values:Ma,type:na,defVal:ua,parentRow:za,flipBkg:Da,size:pa})}return document.createElement("div")}function ra(W,ha,na){var ua=document.createElement("input");ua.type="checkbox";ua.checked="1"==ha;mxEvent.addListener(ua,"change",function(){T(W,ua.checked?"1":"0",na)});return ua}function xa(W,
+ha,na,ua,pa){var za=na.dispName,Da=na.type,Ma=document.createElement("tr");Ma.className="gePropRow"+(pa?"Dark":"")+(ua?"Alt":"")+" gePropNonHeaderRow";Ma.setAttribute("data-pName",W);Ma.setAttribute("data-pValue",ha);ua=!1;null!=na.index&&(Ma.setAttribute("data-index",na.index),za=(null!=za?za:"")+"["+na.index+"]",ua=!0);var La=document.createElement("td");La.className="gePropRowCell";za=mxResources.get(za,null,za);mxUtils.write(La,za);La.setAttribute("title",za);ua&&(La.style.textAlign="right");
+Ma.appendChild(La);La=document.createElement("td");La.className="gePropRowCell";if("color"==Da)La.appendChild(da(W,ha,na));else if("bool"==Da||"boolean"==Da)La.appendChild(ra(W,ha,na));else if("enum"==Da){var Ua=na.enumList;for(pa=0;pa<Ua.length;pa++)if(za=Ua[pa],za.val==ha){mxUtils.write(La,mxResources.get(za.dispName,null,za.dispName));break}mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){var Sa=document.createElement("select");S(La,Sa);for(var Fa=0;Fa<Ua.length;Fa++){var va=Ua[Fa],ya=
+document.createElement("option");ya.value=mxUtils.htmlEntities(va.val);mxUtils.write(ya,mxResources.get(va.dispName,null,va.dispName));Sa.appendChild(ya)}Sa.value=ha;u.appendChild(Sa);mxEvent.addListener(Sa,"change",function(){var Na=mxUtils.htmlEntities(Sa.value);T(W,Na,na)});Sa.focus();mxEvent.addListener(Sa,"blur",function(){u.removeChild(Sa)})}))}else"dynamicArr"==Da?La.appendChild(R(W,ha,na.subType,na.subDefVal,na.countProperty,Ma,pa)):"staticArr"==Da?La.appendChild(ma(W,ha,na.subType,na.subDefVal,
+na.size,Ma,pa)):"readOnly"==Da?(pa=document.createElement("input"),pa.setAttribute("readonly",""),pa.value=ha,pa.style.width="96px",pa.style.borderWidth="0px",La.appendChild(pa)):(La.innerHTML=mxUtils.htmlEntities(decodeURIComponent(ha)),mxEvent.addListener(La,"click",mxUtils.bind(ta,function(){function Sa(){var va=Fa.value;va=0==va.length&&"string"!=Da?0:va;na.allowAuto&&(null!=va.trim&&"auto"==va.trim().toLowerCase()?(va="auto",Da="string"):(va=parseFloat(va),va=isNaN(va)?0:va));null!=na.min&&va<
+na.min?va=na.min:null!=na.max&&va>na.max&&(va=na.max);va=encodeURIComponent(("int"==Da?parseInt(va):va)+"");T(W,va,na)}var Fa=document.createElement("input");S(La,Fa,!0);Fa.value=decodeURIComponent(ha);Fa.className="gePropEditor";"int"!=Da&&"float"!=Da||na.allowAuto||(Fa.type="number",Fa.step="int"==Da?"1":"any",null!=na.min&&(Fa.min=parseFloat(na.min)),null!=na.max&&(Fa.max=parseFloat(na.max)));u.appendChild(Fa);mxEvent.addListener(Fa,"keypress",function(va){13==va.keyCode&&Sa()});Fa.focus();mxEvent.addListener(Fa,
+"blur",function(){Sa()})})));na.isDeletable&&(pa=mxUtils.button("-",mxUtils.bind(ta,function(Sa){T(W,"",na,na.index);mxEvent.consume(Sa)})),pa.style.height="16px",pa.style.width="25px",pa.style.float="right",pa.className="geColorBtn",La.appendChild(pa));Ma.appendChild(La);return Ma}var ta=this,Aa=this.editorUi.editor.graph,Ca=[];u.style.position="relative";u.style.padding="0";var Ba=document.createElement("table");Ba.className="geProperties";Ba.style.whiteSpace="nowrap";Ba.style.width="100%";var sa=
+document.createElement("tr");sa.className="gePropHeader";var Pa=document.createElement("th");Pa.className="gePropHeaderCell";var Ta=document.createElement("img");Ta.src=Sidebar.prototype.expandedImage;Ta.style.verticalAlign="middle";Pa.appendChild(Ta);mxUtils.write(Pa,mxResources.get("property"));sa.style.cursor="pointer";var Oa=function(){var W=Ba.querySelectorAll(".gePropNonHeaderRow");if(ta.editorUi.propertiesCollapsed){Ta.src=Sidebar.prototype.collapsedImage;var ha="none";for(var na=u.childNodes.length-
+1;0<=na;na--)try{var ua=u.childNodes[na],pa=ua.nodeName.toUpperCase();"INPUT"!=pa&&"SELECT"!=pa||u.removeChild(ua)}catch(za){}}else Ta.src=Sidebar.prototype.expandedImage,ha="";for(na=0;na<W.length;na++)W[na].style.display=ha};mxEvent.addListener(sa,"click",function(){ta.editorUi.propertiesCollapsed=!ta.editorUi.propertiesCollapsed;Oa()});sa.appendChild(Pa);Pa=document.createElement("th");Pa.className="gePropHeaderCell";Pa.innerHTML=mxResources.get("value");sa.appendChild(Pa);Ba.appendChild(sa);var Xa=
+!1,Ga=!1;sa=null;1==P.vertices.length&&0==P.edges.length?sa=P.vertices[0].id:0==P.vertices.length&&1==P.edges.length&&(sa=P.edges[0].id);null!=sa&&Ba.appendChild(xa("id",mxUtils.htmlEntities(sa),{dispName:"ID",type:"readOnly"},!0,!1));for(var eb in H)if(sa=H[eb],"function"!=typeof sa.isVisible||sa.isVisible(P,this)){var bb=null!=P.style[eb]?mxUtils.htmlEntities(P.style[eb]+""):null!=sa.getDefaultValue?sa.getDefaultValue(P,this):sa.defVal;if("separator"==sa.type)Ga=!Ga;else{if("staticArr"==sa.type)sa.size=
+parseInt(P.style[sa.sizeProperty]||H[sa.sizeProperty].defVal)||0;else if(null!=sa.dependentProps){var z=sa.dependentProps,K=[],M=[];for(Pa=0;Pa<z.length;Pa++){var U=P.style[z[Pa]];M.push(H[z[Pa]].subDefVal);K.push(null!=U?U.split(","):[])}sa.dependentPropsDefVal=M;sa.dependentPropsVals=K}Ba.appendChild(xa(eb,bb,sa,Xa,Ga));Xa=!Xa}}for(Pa=0;Pa<Ca.length;Pa++)for(sa=Ca[Pa],H=sa.parentRow,P=0;P<sa.values.length;P++)eb=xa(sa.name,sa.values[P],{type:sa.type,parentRow:sa.parentRow,isDeletable:sa.isDeletable,
+index:P,defVal:sa.defVal,countProperty:sa.countProperty,size:sa.size},0==P%2,sa.flipBkg),H.parentNode.insertBefore(eb,H.nextSibling),H=eb;u.appendChild(Ba);Oa();return u};StyleFormatPanel.prototype.addStyles=function(u){function H(sa){mxEvent.addListener(sa,"mouseenter",function(){sa.style.opacity="1"});mxEvent.addListener(sa,"mouseleave",function(){sa.style.opacity="0.5"})}var P=this.editorUi,T=P.editor.graph,S=document.createElement("div");S.style.whiteSpace="nowrap";S.style.paddingLeft="24px";
+S.style.paddingRight="20px";u.style.paddingLeft="16px";u.style.paddingBottom="6px";u.style.position="relative";u.appendChild(S);var da="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(" "),R=document.createElement("div");R.style.whiteSpace="nowrap";R.style.position="relative";R.style.textAlign="center";R.style.width="210px";for(var ma=[],ra=0;ra<this.defaultColorSchemes.length;ra++){var xa=
+document.createElement("div");xa.style.display="inline-block";xa.style.width="6px";xa.style.height="6px";xa.style.marginLeft="4px";xa.style.marginRight="3px";xa.style.borderRadius="3px";xa.style.cursor="pointer";xa.style.background="transparent";xa.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(sa){mxEvent.addListener(xa,"click",mxUtils.bind(this,function(){ta(sa)}))})(ra);ma.push(xa);R.appendChild(xa)}var ta=mxUtils.bind(this,function(sa){null!=ma[sa]&&(null!=this.format.currentScheme&&
+null!=ma[this.format.currentScheme]&&(ma[this.format.currentScheme].style.background="transparent"),this.format.currentScheme=sa,Aa(this.defaultColorSchemes[this.format.currentScheme]),ma[this.format.currentScheme].style.background="#84d7ff")}),Aa=mxUtils.bind(this,function(sa){var Pa=mxUtils.bind(this,function(Oa){var Xa=mxUtils.button("",mxUtils.bind(this,function(bb){T.getModel().beginUpdate();try{for(var z=P.getSelectionState().cells,K=0;K<z.length;K++){for(var M=T.getModel().getStyle(z[K]),U=
+0;U<da.length;U++)M=mxUtils.removeStylename(M,da[U]);var W=T.getModel().isVertex(z[K])?T.defaultVertexStyle:T.defaultEdgeStyle;null!=Oa?(mxEvent.isShiftDown(bb)||(M=""==Oa.fill?mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,Oa.fill||mxUtils.getValue(W,mxConstants.STYLE_FILLCOLOR,null)),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,Oa.gradient||mxUtils.getValue(W,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isControlDown(bb)||mxClient.IS_MAC&&
+mxEvent.isMetaDown(bb)||!T.getModel().isVertex(z[K])||(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,Oa.font||mxUtils.getValue(W,mxConstants.STYLE_FONTCOLOR,null)))),mxEvent.isAltDown(bb)||(M=""==Oa.stroke?mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(M,mxConstants.STYLE_STROKECOLOR,Oa.stroke||mxUtils.getValue(W,mxConstants.STYLE_STROKECOLOR,null)))):(M=mxUtils.setStyle(M,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(W,mxConstants.STYLE_FILLCOLOR,"#ffffff")),M=mxUtils.setStyle(M,
+mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(W,mxConstants.STYLE_STROKECOLOR,"#000000")),M=mxUtils.setStyle(M,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(W,mxConstants.STYLE_GRADIENTCOLOR,null)),T.getModel().isVertex(z[K])&&(M=mxUtils.setStyle(M,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(W,mxConstants.STYLE_FONTCOLOR,null))));T.getModel().setStyle(z[K],M)}}finally{T.getModel().endUpdate()}}));Xa.className="geStyleButton";Xa.style.width="36px";Xa.style.height=10>=this.defaultColorSchemes.length?
+"24px":"30px";Xa.style.margin="0px 6px 6px 0px";if(null!=Oa){var Ga="1"==urlParams.sketch?"2px solid":"1px solid";null!=Oa.gradient?mxClient.IS_IE&&10>document.documentMode?Xa.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+Oa.fill+"', EndColorStr='"+Oa.gradient+"', GradientType=0)":Xa.style.backgroundImage="linear-gradient("+Oa.fill+" 0px,"+Oa.gradient+" 100%)":Oa.fill==mxConstants.NONE?Xa.style.background="url('"+Dialog.prototype.noColorImage+"')":Xa.style.backgroundColor=
+""==Oa.fill?mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff"):Oa.fill||mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,Editor.isDarkMode()?Editor.darkColor:"#ffffff");Xa.style.border=Oa.stroke==mxConstants.NONE?Ga+" transparent":""==Oa.stroke?Ga+" "+mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor):Ga+" "+(Oa.stroke||mxUtils.getValue(T.defaultVertexStyle,
+mxConstants.STYLE_STROKECOLOR,Editor.isDarkMode()?"#ffffff":Editor.darkColor));null!=Oa.title&&Xa.setAttribute("title",Oa.title)}else{Ga=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff");var eb=mxUtils.getValue(T.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");Xa.style.backgroundColor=Ga;Xa.style.border="1px solid "+eb}Xa.style.borderRadius="0";S.appendChild(Xa)});S.innerText="";for(var Ta=0;Ta<sa.length;Ta++)0<Ta&&0==mxUtils.mod(Ta,4)&&mxUtils.br(S),Pa(sa[Ta])});
null==this.format.currentScheme?ta(Editor.isDarkMode()?1:"1"==urlParams.sketch?5:0):ta(this.format.currentScheme);ra=10>=this.defaultColorSchemes.length?28:8;var Ca=document.createElement("div");Ca.style.cssText="position:absolute;left:10px;top:8px;bottom:"+ra+"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(Ca,"click",mxUtils.bind(this,function(){ta(mxUtils.mod(this.format.currentScheme-1,this.defaultColorSchemes.length))}));var Ba=document.createElement("div");Ba.style.cssText="position:absolute;left:202px;top:8px;bottom:"+ra+"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&&(u.appendChild(Ca),u.appendChild(Ba));mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){ta(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));H(Ca);H(Ba);Aa(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&u.appendChild(P);return u};StyleFormatPanel.prototype.addEditOps=function(u){var H=this.editorUi.getSelectionState(),O=this.editorUi.editor.graph,T=null;1==H.cells.length&&(T=mxUtils.button(mxResources.get("editStyle"),
-mxUtils.bind(this,function(R){this.editorUi.actions.get("editStyle").funct()})),T.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),T.style.width="210px",T.style.marginBottom="2px",u.appendChild(T));O=1==H.cells.length?O.view.getState(H.cells[0]):null;null!=O&&null!=O.shape&&null!=O.shape.stencil?(H=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(R){this.editorUi.actions.get("editShape").funct()})),H.setAttribute("title",
-mxResources.get("editShape")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),u.appendChild(H)):H.image&&0<H.cells.length&&(H=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(R){this.editorUi.actions.get("image").funct()})),H.setAttribute("title",mxResources.get("editImage")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),
+1<this.defaultColorSchemes.length&&(u.appendChild(Ca),u.appendChild(Ba));mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){ta(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));H(Ca);H(Ba);Aa(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&u.appendChild(R);return u};StyleFormatPanel.prototype.addEditOps=function(u){var H=this.editorUi.getSelectionState(),P=this.editorUi.editor.graph,T=null;1==H.cells.length&&(T=mxUtils.button(mxResources.get("editStyle"),
+mxUtils.bind(this,function(S){this.editorUi.actions.get("editStyle").funct()})),T.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),T.style.width="210px",T.style.marginBottom="2px",u.appendChild(T));P=1==H.cells.length?P.view.getState(H.cells[0]):null;null!=P&&null!=P.shape&&null!=P.shape.stencil?(H=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(S){this.editorUi.actions.get("editShape").funct()})),H.setAttribute("title",
+mxResources.get("editShape")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),u.appendChild(H)):H.image&&0<H.cells.length&&(H=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(S){this.editorUi.actions.get("image").funct()})),H.setAttribute("title",mxResources.get("editImage")),H.style.marginBottom="2px",null==T?H.style.width="210px":(T.style.width="104px",H.style.width="104px",H.style.marginLeft="2px"),
u.appendChild(H));return u}}Graph.fontMapping={"https://fonts.googleapis.com/css?family=Architects+Daughter":'@font-face { font-family: "Architects Daughter"; src: url('+STYLE_PATH+'/fonts/ArchitectsDaughter-Regular.ttf) format("truetype"); }'};Graph.customFontElements={};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(u){return u.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(u){return Graph.isGoogleFontUrl(u)};Graph.createFontElement=function(u,
-H){var O=Graph.fontMapping[H];null==O&&Graph.isCssFontUrl(H)?(u=document.createElement("link"),u.setAttribute("rel","stylesheet"),u.setAttribute("type","text/css"),u.setAttribute("charset","UTF-8"),u.setAttribute("href",H)):(null==O&&(O='@font-face {\nfont-family: "'+u+'";\nsrc: url("'+H+'");\n}'),u=document.createElement("style"),mxUtils.write(u,O));return u};Graph.addFont=function(u,H,O){if(null!=u&&0<u.length&&null!=H&&0<H.length){var T=u.toLowerCase();if("helvetica"!=T&&"arial"!=u&&"sans-serif"!=
-T){var R=Graph.customFontElements[T];null!=R&&R.url!=H&&(R.elt.parentNode.removeChild(R.elt),R=null);null==R?(R=H,"http:"==H.substring(0,5)&&(R=PROXY_URL+"?url="+encodeURIComponent(H)),R={name:u,url:H,elt:Graph.createFontElement(u,R)},Graph.customFontElements[T]=R,Graph.recentCustomFonts[T]=R,H=document.getElementsByTagName("head")[0],null!=O&&("link"==R.elt.nodeName.toLowerCase()?(R.elt.onload=O,R.elt.onerror=O):O()),null!=H&&H.appendChild(R.elt)):null!=O&&O()}else null!=O&&O()}else null!=O&&O();
-return u};Graph.getFontUrl=function(u,H){u=Graph.customFontElements[u.toLowerCase()];null!=u&&(H=u.url);return H};Graph.processFontAttributes=function(u){u=u.getElementsByTagName("*");for(var H=0;H<u.length;H++){var O=u[H].getAttribute("data-font-src");if(null!=O){var T="FONT"==u[H].nodeName?u[H].getAttribute("face"):u[H].style.fontFamily;null!=T&&Graph.addFont(T,O)}}};Graph.processFontStyle=function(u){if(null!=u){var H=mxUtils.getValue(u,"fontSource",null);if(null!=H){var O=mxUtils.getValue(u,mxConstants.STYLE_FONTFAMILY,
-null);null!=O&&Graph.addFont(O,decodeURIComponent(H))}}return u};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=
-urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var I=Graph.prototype.init;Graph.prototype.init=function(){function u(R){H=R}I.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var H=null;mxEvent.addListener(this.container,"mouseenter",u);mxEvent.addListener(this.container,"mousemove",u);mxEvent.addListener(this.container,"mouseleave",function(R){H=null});this.isMouseInsertPoint=function(){return null!=H};var O=this.getInsertPoint;
-this.getInsertPoint=function(){return null!=H?this.getPointForEvent(H):O.apply(this,arguments)};var T=this.layoutManager.getLayout;this.layoutManager.getLayout=function(R){var da=this.graph.getCellStyle(R);if(null!=da&&"rack"==da.childLayout){var P=new mxStackLayout(this.graph,!1);P.gridSize=null!=da.rackUnitSize?parseFloat(da.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;P.marginLeft=da.marginLeft||0;P.marginRight=da.marginRight||0;P.marginTop=da.marginTop||0;P.marginBottom=
-da.marginBottom||0;P.allowGaps=da.allowGaps||0;P.horizontal="1"==mxUtils.getValue(da,"horizontalRack","0");P.resizeParent=!1;P.fill=!0;return P}return T.apply(this,arguments)};this.updateGlobalUrlVariables()};var G=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(u,H){return Graph.processFontStyle(G.apply(this,arguments))};var aa=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(u,H,O,T,R,da,P,ma,ra,xa,ta){aa.apply(this,arguments);
-Graph.processFontAttributes(ta)};var ca=mxText.prototype.redraw;mxText.prototype.redraw=function(){ca.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(u,H,O){function T(){for(var sa=P.getSelectionCells(),Oa=[],Ta=0;Ta<sa.length;Ta++)P.isCellVisible(sa[Ta])&&Oa.push(sa[Ta]);P.setSelectionCells(Oa)}function R(sa){P.setHiddenTags(sa?[]:ma.slice());T();P.refresh()}function da(sa,Oa){xa.innerText="";if(0<
-sa.length){var Ta=document.createElement("table");Ta.setAttribute("cellpadding","2");Ta.style.boxSizing="border-box";Ta.style.tableLayout="fixed";Ta.style.width="100%";var Sa=document.createElement("tbody");if(null!=sa&&0<sa.length)for(var $a=0;$a<sa.length;$a++)(function(Ga){var eb=0>mxUtils.indexOf(P.hiddenTags,Ga),bb=document.createElement("tr"),z=document.createElement("td");z.style.align="center";z.style.width="16px";var L=document.createElement("img");L.setAttribute("src",eb?Editor.visibleImage:
-Editor.hiddenImage);L.setAttribute("title",mxResources.get(eb?"hideIt":"show",[Ga]));mxUtils.setOpacity(L,eb?75:25);L.style.verticalAlign="middle";L.style.cursor="pointer";L.style.width="16px";if(H||Editor.isDarkMode())L.style.filter="invert(100%)";z.appendChild(L);mxEvent.addListener(L,"click",function(U){mxEvent.isShiftDown(U)?R(0<=mxUtils.indexOf(P.hiddenTags,Ga)):(P.toggleHiddenTag(Ga),T(),P.refresh());mxEvent.consume(U)});bb.appendChild(z);z=document.createElement("td");z.style.overflow="hidden";
-z.style.whiteSpace="nowrap";z.style.textOverflow="ellipsis";z.style.verticalAlign="middle";z.style.cursor="pointer";z.setAttribute("title",Ga);a=document.createElement("a");mxUtils.write(a,Ga);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,eb?100:40);z.appendChild(a);mxEvent.addListener(z,"click",function(U){if(mxEvent.isShiftDown(U)){R(!0);var X=P.getCellsForTags([Ga],null,null,!0);P.isEnabled()?P.setSelectionCells(X):P.highlightCells(X)}else if(eb&&0<P.hiddenTags.length)R(!0);
-else{X=ma.slice();var fa=mxUtils.indexOf(X,Ga);X.splice(fa,1);P.setHiddenTags(X);T();P.refresh()}mxEvent.consume(U)});bb.appendChild(z);if(P.isEnabled()){z=document.createElement("td");z.style.verticalAlign="middle";z.style.textAlign="center";z.style.width="18px";if(null==Oa){z.style.align="center";z.style.width="16px";L=document.createElement("img");L.setAttribute("src",Editor.crossImage);L.setAttribute("title",mxResources.get("removeIt",[Ga]));mxUtils.setOpacity(L,eb?75:25);L.style.verticalAlign=
-"middle";L.style.cursor="pointer";L.style.width="16px";if(H||Editor.isDarkMode())L.style.filter="invert(100%)";mxEvent.addListener(L,"click",function(U){var X=mxUtils.indexOf(ma,Ga);0<=X&&ma.splice(X,1);P.removeTagsForCells(P.model.getDescendants(P.model.getRoot()),[Ga]);P.refresh();mxEvent.consume(U)});z.appendChild(L)}else{var M=document.createElement("input");M.setAttribute("type","checkbox");M.style.margin="0px";M.defaultChecked=null!=Oa&&0<=mxUtils.indexOf(Oa,Ga);M.checked=M.defaultChecked;M.style.background=
-"transparent";M.setAttribute("title",mxResources.get(M.defaultChecked?"removeIt":"add",[Ga]));mxEvent.addListener(M,"change",function(U){M.checked?P.addTagsForCells(P.getSelectionCells(),[Ga]):P.removeTagsForCells(P.getSelectionCells(),[Ga]);mxEvent.consume(U)});z.appendChild(M)}bb.appendChild(z)}Sa.appendChild(bb)})(sa[$a]);Ta.appendChild(Sa);xa.appendChild(Ta)}}var P=this,ma=P.hiddenTags.slice(),ra=document.createElement("div");ra.style.userSelect="none";ra.style.overflow="hidden";ra.style.padding=
-"10px";ra.style.height="100%";var xa=document.createElement("div");xa.style.boxSizing="border-box";xa.style.borderRadius="4px";xa.style.userSelect="none";xa.style.overflow="auto";xa.style.position="absolute";xa.style.left="10px";xa.style.right="10px";xa.style.top="10px";xa.style.border=P.isEnabled()?"1px solid #808080":"none";xa.style.bottom=P.isEnabled()?"48px":"10px";ra.appendChild(xa);var ta=mxUtils.button(mxResources.get("reset"),function(sa){P.setHiddenTags([]);mxEvent.isShiftDown(sa)||(ma=P.hiddenTags.slice());
-T();P.refresh()});ta.setAttribute("title",mxResources.get("reset"));ta.className="geBtn";ta.style.margin="0 4px 0 0";var Aa=mxUtils.button(mxResources.get("add"),function(){null!=O&&O(ma,function(sa){ma=sa;Ca()})});Aa.setAttribute("title",mxResources.get("add"));Aa.className="geBtn";Aa.style.margin="0";P.addListener(mxEvent.ROOT,function(){ma=P.hiddenTags.slice()});var Ca=mxUtils.bind(this,function(sa,Oa){if(u()){sa=P.getAllTags();for(Oa=0;Oa<sa.length;Oa++)0>mxUtils.indexOf(ma,sa[Oa])&&ma.push(sa[Oa]);
-ma.sort();P.isSelectionEmpty()?da(ma):da(ma,P.getCommonTagsForCells(P.getSelectionCells()))}});P.selectionModel.addListener(mxEvent.CHANGE,Ca);P.model.addListener(mxEvent.CHANGE,Ca);P.addListener(mxEvent.REFRESH,Ca);var Ba=document.createElement("div");Ba.style.boxSizing="border-box";Ba.style.whiteSpace="nowrap";Ba.style.position="absolute";Ba.style.overflow="hidden";Ba.style.bottom="0px";Ba.style.height="42px";Ba.style.right="10px";Ba.style.left="10px";P.isEnabled()&&(Ba.appendChild(ta),Ba.appendChild(Aa),
-ra.appendChild(Ba));return{div:ra,refresh:Ca}};Graph.prototype.getCustomFonts=function(){var u=this.extFonts;u=null!=u?u.slice():[];for(var H in Graph.customFontElements){var O=Graph.customFontElements[H];u.push({name:O.name,url:O.url})}return u};Graph.prototype.setFont=function(u,H){Graph.addFont(u,H);document.execCommand("fontname",!1,u);if(null!=H){var O=this.cellEditor.textarea.getElementsByTagName("font");H=Graph.getFontUrl(u,H);for(var T=0;T<O.length;T++)O[T].getAttribute("face")==u&&O[T].getAttribute("data-font-src")!=
-H&&O[T].setAttribute("data-font-src",H)}};var ba=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return ba.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 u=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=u)for(var H in u)this.globalVars[H]=u[H]}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 Z=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(u){var H=Z.apply(this,arguments);null==H&&null!=this.globalVars&&(H=this.globalVars[u]);return H};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var u=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(u.ownerDocument)).decode(u)}return this.defaultStylesheet};
-Graph.prototype.isViewer=function(){return urlParams.viewer};var qa=Graph.prototype.getSvg;Graph.prototype.getSvg=function(u,H,O,T,R,da,P,ma,ra,xa,ta,Aa,Ca,Ba){var sa=null,Oa=null,Ta=null;Aa||null==this.themes||"darkTheme"!=this.defaultThemeName||(sa=this.stylesheet,Oa=this.shapeForegroundColor,Ta=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 Sa=qa.apply(this,arguments),$a=this.getCustomFonts();if(ta&&0<$a.length){var Ga=Sa.ownerDocument,eb=null!=Ga.createElementNS?Ga.createElementNS(mxConstants.NS_SVG,"style"):Ga.createElement("style");null!=Ga.setAttributeNS?eb.setAttributeNS("type","text/css"):eb.setAttribute("type","text/css");for(var bb="",z="",L=0;L<$a.length;L++){var M=$a[L].name,U=$a[L].url;Graph.isCssFontUrl(U)?bb+="@import url("+U+");\n":z+='@font-face {\nfont-family: "'+
-M+'";\nsrc: url("'+U+'");\n}\n'}eb.appendChild(Ga.createTextNode(bb+z));Sa.getElementsByTagName("defs")[0].appendChild(eb)}this.mathEnabled&&(document.body.appendChild(Sa),Editor.MathJaxRender(Sa),Sa.parentNode.removeChild(Sa));null!=sa&&(this.shapeBackgroundColor=Ta,this.shapeForegroundColor=Oa,this.stylesheet=sa,this.refresh());return Sa};var N=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(u){N.apply(this,arguments);null!=u.secondLabel&&(u.secondLabel.destroy(),u.secondLabel=
-null)};mxCellRenderer.prototype.getShapesForState=function(u){return[u.shape,u.text,u.secondLabel,u.control]};var Y=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){Y.apply(this,arguments);this.enumerationState=0};var ea=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(u){null!=u.shape&&this.redrawEnumerationState(u);return ea.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(u){u=decodeURIComponent(mxUtils.getValue(u.style,
+H){var P=Graph.fontMapping[H];null==P&&Graph.isCssFontUrl(H)?(u=document.createElement("link"),u.setAttribute("rel","stylesheet"),u.setAttribute("type","text/css"),u.setAttribute("charset","UTF-8"),u.setAttribute("href",H)):(null==P&&(P='@font-face {\nfont-family: "'+u+'";\nsrc: url("'+H+'");\n}'),u=document.createElement("style"),mxUtils.write(u,P));return u};Graph.addFont=function(u,H,P){if(null!=u&&0<u.length&&null!=H&&0<H.length){var T=u.toLowerCase();if("helvetica"!=T&&"arial"!=u&&"sans-serif"!=
+T){var S=Graph.customFontElements[T];null!=S&&S.url!=H&&(S.elt.parentNode.removeChild(S.elt),S=null);null==S?(S=H,"http:"==H.substring(0,5)&&(S=PROXY_URL+"?url="+encodeURIComponent(H)),S={name:u,url:H,elt:Graph.createFontElement(u,S)},Graph.customFontElements[T]=S,Graph.recentCustomFonts[T]=S,H=document.getElementsByTagName("head")[0],null!=P&&("link"==S.elt.nodeName.toLowerCase()?(S.elt.onload=P,S.elt.onerror=P):P()),null!=H&&H.appendChild(S.elt)):null!=P&&P()}else null!=P&&P()}else null!=P&&P();
+return u};Graph.getFontUrl=function(u,H){u=Graph.customFontElements[u.toLowerCase()];null!=u&&(H=u.url);return H};Graph.processFontAttributes=function(u){u=u.getElementsByTagName("*");for(var H=0;H<u.length;H++){var P=u[H].getAttribute("data-font-src");if(null!=P){var T="FONT"==u[H].nodeName?u[H].getAttribute("face"):u[H].style.fontFamily;null!=T&&Graph.addFont(T,P)}}};Graph.processFontStyle=function(u){if(null!=u){var H=mxUtils.getValue(u,"fontSource",null);if(null!=H){var P=mxUtils.getValue(u,mxConstants.STYLE_FONTFAMILY,
+null);null!=P&&Graph.addFont(P,decodeURIComponent(H))}}return u};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";Graph.prototype.edgeMode="move"!=
+urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var I=Graph.prototype.init;Graph.prototype.init=function(){function u(S){H=S}I.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var H=null;mxEvent.addListener(this.container,"mouseenter",u);mxEvent.addListener(this.container,"mousemove",u);mxEvent.addListener(this.container,"mouseleave",function(S){H=null});this.isMouseInsertPoint=function(){return null!=H};var P=this.getInsertPoint;
+this.getInsertPoint=function(){return null!=H?this.getPointForEvent(H):P.apply(this,arguments)};var T=this.layoutManager.getLayout;this.layoutManager.getLayout=function(S){var da=this.graph.getCellStyle(S);if(null!=da&&"rack"==da.childLayout){var R=new mxStackLayout(this.graph,!1);R.gridSize=null!=da.rackUnitSize?parseFloat(da.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;R.marginLeft=da.marginLeft||0;R.marginRight=da.marginRight||0;R.marginTop=da.marginTop||0;R.marginBottom=
+da.marginBottom||0;R.allowGaps=da.allowGaps||0;R.horizontal="1"==mxUtils.getValue(da,"horizontalRack","0");R.resizeParent=!1;R.fill=!0;return R}return T.apply(this,arguments)};this.updateGlobalUrlVariables()};var G=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(u,H){return Graph.processFontStyle(G.apply(this,arguments))};var Z=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(u,H,P,T,S,da,R,ma,ra,xa,ta){Z.apply(this,arguments);
+Graph.processFontAttributes(ta)};var ca=mxText.prototype.redraw;mxText.prototype.redraw=function(){ca.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(u,H,P){function T(){for(var sa=R.getSelectionCells(),Pa=[],Ta=0;Ta<sa.length;Ta++)R.isCellVisible(sa[Ta])&&Pa.push(sa[Ta]);R.setSelectionCells(Pa)}function S(sa){R.setHiddenTags(sa?[]:ma.slice());T();R.refresh()}function da(sa,Pa){xa.innerText="";if(0<
+sa.length){var Ta=document.createElement("table");Ta.setAttribute("cellpadding","2");Ta.style.boxSizing="border-box";Ta.style.tableLayout="fixed";Ta.style.width="100%";var Oa=document.createElement("tbody");if(null!=sa&&0<sa.length)for(var Xa=0;Xa<sa.length;Xa++)(function(Ga){var eb=0>mxUtils.indexOf(R.hiddenTags,Ga),bb=document.createElement("tr"),z=document.createElement("td");z.style.align="center";z.style.width="16px";var K=document.createElement("img");K.setAttribute("src",eb?Editor.visibleImage:
+Editor.hiddenImage);K.setAttribute("title",mxResources.get(eb?"hideIt":"show",[Ga]));mxUtils.setOpacity(K,eb?75:25);K.style.verticalAlign="middle";K.style.cursor="pointer";K.style.width="16px";if(H||Editor.isDarkMode())K.style.filter="invert(100%)";z.appendChild(K);mxEvent.addListener(K,"click",function(U){mxEvent.isShiftDown(U)?S(0<=mxUtils.indexOf(R.hiddenTags,Ga)):(R.toggleHiddenTag(Ga),T(),R.refresh());mxEvent.consume(U)});bb.appendChild(z);z=document.createElement("td");z.style.overflow="hidden";
+z.style.whiteSpace="nowrap";z.style.textOverflow="ellipsis";z.style.verticalAlign="middle";z.style.cursor="pointer";z.setAttribute("title",Ga);a=document.createElement("a");mxUtils.write(a,Ga);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,eb?100:40);z.appendChild(a);mxEvent.addListener(z,"click",function(U){if(mxEvent.isShiftDown(U)){S(!0);var W=R.getCellsForTags([Ga],null,null,!0);R.isEnabled()?R.setSelectionCells(W):R.highlightCells(W)}else if(eb&&0<R.hiddenTags.length)S(!0);
+else{W=ma.slice();var ha=mxUtils.indexOf(W,Ga);W.splice(ha,1);R.setHiddenTags(W);T();R.refresh()}mxEvent.consume(U)});bb.appendChild(z);if(R.isEnabled()){z=document.createElement("td");z.style.verticalAlign="middle";z.style.textAlign="center";z.style.width="18px";if(null==Pa){z.style.align="center";z.style.width="16px";K=document.createElement("img");K.setAttribute("src",Editor.crossImage);K.setAttribute("title",mxResources.get("removeIt",[Ga]));mxUtils.setOpacity(K,eb?75:25);K.style.verticalAlign=
+"middle";K.style.cursor="pointer";K.style.width="16px";if(H||Editor.isDarkMode())K.style.filter="invert(100%)";mxEvent.addListener(K,"click",function(U){var W=mxUtils.indexOf(ma,Ga);0<=W&&ma.splice(W,1);R.removeTagsForCells(R.model.getDescendants(R.model.getRoot()),[Ga]);R.refresh();mxEvent.consume(U)});z.appendChild(K)}else{var M=document.createElement("input");M.setAttribute("type","checkbox");M.style.margin="0px";M.defaultChecked=null!=Pa&&0<=mxUtils.indexOf(Pa,Ga);M.checked=M.defaultChecked;M.style.background=
+"transparent";M.setAttribute("title",mxResources.get(M.defaultChecked?"removeIt":"add",[Ga]));mxEvent.addListener(M,"change",function(U){M.checked?R.addTagsForCells(R.getSelectionCells(),[Ga]):R.removeTagsForCells(R.getSelectionCells(),[Ga]);mxEvent.consume(U)});z.appendChild(M)}bb.appendChild(z)}Oa.appendChild(bb)})(sa[Xa]);Ta.appendChild(Oa);xa.appendChild(Ta)}}var R=this,ma=R.hiddenTags.slice(),ra=document.createElement("div");ra.style.userSelect="none";ra.style.overflow="hidden";ra.style.padding=
+"10px";ra.style.height="100%";var xa=document.createElement("div");xa.style.boxSizing="border-box";xa.style.borderRadius="4px";xa.style.userSelect="none";xa.style.overflow="auto";xa.style.position="absolute";xa.style.left="10px";xa.style.right="10px";xa.style.top="10px";xa.style.border=R.isEnabled()?"1px solid #808080":"none";xa.style.bottom=R.isEnabled()?"48px":"10px";ra.appendChild(xa);var ta=mxUtils.button(mxResources.get("reset"),function(sa){R.setHiddenTags([]);mxEvent.isShiftDown(sa)||(ma=R.hiddenTags.slice());
+T();R.refresh()});ta.setAttribute("title",mxResources.get("reset"));ta.className="geBtn";ta.style.margin="0 4px 0 0";var Aa=mxUtils.button(mxResources.get("add"),function(){null!=P&&P(ma,function(sa){ma=sa;Ca()})});Aa.setAttribute("title",mxResources.get("add"));Aa.className="geBtn";Aa.style.margin="0";R.addListener(mxEvent.ROOT,function(){ma=R.hiddenTags.slice()});var Ca=mxUtils.bind(this,function(sa,Pa){if(u()){sa=R.getAllTags();for(Pa=0;Pa<sa.length;Pa++)0>mxUtils.indexOf(ma,sa[Pa])&&ma.push(sa[Pa]);
+ma.sort();R.isSelectionEmpty()?da(ma):da(ma,R.getCommonTagsForCells(R.getSelectionCells()))}});R.selectionModel.addListener(mxEvent.CHANGE,Ca);R.model.addListener(mxEvent.CHANGE,Ca);R.addListener(mxEvent.REFRESH,Ca);var Ba=document.createElement("div");Ba.style.boxSizing="border-box";Ba.style.whiteSpace="nowrap";Ba.style.position="absolute";Ba.style.overflow="hidden";Ba.style.bottom="0px";Ba.style.height="42px";Ba.style.right="10px";Ba.style.left="10px";R.isEnabled()&&(Ba.appendChild(ta),Ba.appendChild(Aa),
+ra.appendChild(Ba));return{div:ra,refresh:Ca}};Graph.prototype.getCustomFonts=function(){var u=this.extFonts;u=null!=u?u.slice():[];for(var H in Graph.customFontElements){var P=Graph.customFontElements[H];u.push({name:P.name,url:P.url})}return u};Graph.prototype.setFont=function(u,H){Graph.addFont(u,H);document.execCommand("fontname",!1,u);if(null!=H){var P=this.cellEditor.textarea.getElementsByTagName("font");H=Graph.getFontUrl(u,H);for(var T=0;T<P.length;T++)P[T].getAttribute("face")==u&&P[T].getAttribute("data-font-src")!=
+H&&P[T].setAttribute("data-font-src",H)}};var aa=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return aa.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 u=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=u)for(var H in u)this.globalVars[H]=u[H]}catch(P){null!=
+window.console&&console.log("Error in vars URL parameter: "+P)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var Y=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(u){var H=Y.apply(this,arguments);null==H&&null!=this.globalVars&&(H=this.globalVars[u]);return H};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var u=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(u.ownerDocument)).decode(u)}return this.defaultStylesheet};
+Graph.prototype.isViewer=function(){return urlParams.viewer};var qa=Graph.prototype.getSvg;Graph.prototype.getSvg=function(u,H,P,T,S,da,R,ma,ra,xa,ta,Aa,Ca,Ba){var sa=null,Pa=null,Ta=null;Aa||null==this.themes||"darkTheme"!=this.defaultThemeName||(sa=this.stylesheet,Pa=this.shapeForegroundColor,Ta=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 Oa=qa.apply(this,arguments),Xa=this.getCustomFonts();if(ta&&0<Xa.length){var Ga=Oa.ownerDocument,eb=null!=Ga.createElementNS?Ga.createElementNS(mxConstants.NS_SVG,"style"):Ga.createElement("style");null!=Ga.setAttributeNS?eb.setAttributeNS("type","text/css"):eb.setAttribute("type","text/css");for(var bb="",z="",K=0;K<Xa.length;K++){var M=Xa[K].name,U=Xa[K].url;Graph.isCssFontUrl(U)?bb+="@import url("+U+");\n":z+='@font-face {\nfont-family: "'+
+M+'";\nsrc: url("'+U+'");\n}\n'}eb.appendChild(Ga.createTextNode(bb+z));Oa.getElementsByTagName("defs")[0].appendChild(eb)}this.mathEnabled&&(document.body.appendChild(Oa),Editor.MathJaxRender(Oa),Oa.parentNode.removeChild(Oa));null!=sa&&(this.shapeBackgroundColor=Ta,this.shapeForegroundColor=Pa,this.stylesheet=sa,this.refresh());return Oa};var Q=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(u){Q.apply(this,arguments);null!=u.secondLabel&&(u.secondLabel.destroy(),u.secondLabel=
+null)};mxCellRenderer.prototype.getShapesForState=function(u){return[u.shape,u.text,u.secondLabel,u.control]};var X=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){X.apply(this,arguments);this.enumerationState=0};var fa=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(u){null!=u.shape&&this.redrawEnumerationState(u);return fa.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(u){u=decodeURIComponent(mxUtils.getValue(u.style,
"enumerateValue",""));""==u&&(u=++this.enumerationState);return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(u)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(u){var H="1"==mxUtils.getValue(u.style,"enumerate",0);H&&null==u.secondLabel?(u.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),u.secondLabel.size=12,u.secondLabel.state=u,u.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,
-this.graph.cellRenderer.initializeLabel(u,u.secondLabel)):H||null==u.secondLabel||(u.secondLabel.destroy(),u.secondLabel=null);H=u.secondLabel;if(null!=H){var O=u.view.scale,T=this.createEnumerationValue(u);u=this.graph.model.isVertex(u.cell)?new mxRectangle(u.x+u.width-4*O,u.y+4*O,0,0):mxRectangle.fromPoint(u.view.getPoint(u));H.bounds.equals(u)&&H.value==T&&H.scale==O||(H.bounds=u,H.value=T,H.scale=O,H.redraw())}};var ka=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=
+this.graph.cellRenderer.initializeLabel(u,u.secondLabel)):H||null==u.secondLabel||(u.secondLabel.destroy(),u.secondLabel=null);H=u.secondLabel;if(null!=H){var P=u.view.scale,T=this.createEnumerationValue(u);u=this.graph.model.isVertex(u.cell)?new mxRectangle(u.x+u.width-4*P,u.y+4*P,0,0):mxRectangle.fromPoint(u.view.getPoint(u));H.bounds.equals(u)&&H.value==T&&H.scale==P||(H.bounds=u,H.value=T,H.scale=P,H.redraw())}};var ka=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=
function(){ka.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var u=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;",u.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,u.ownerSVGElement))}};var ja=Graph.prototype.refresh;Graph.prototype.refresh=function(){ja.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=
+this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",u.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,u.ownerSVGElement))}};var ia=Graph.prototype.refresh;Graph.prototype.refresh=function(){ia.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=
this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var V=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){V.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(u){"data:action/json,"==u.substring(0,17)&&(u=JSON.parse(u.substring(17)),null!=u.actions&&this.executeCustomActions(u.actions))};Graph.prototype.executeCustomActions=function(u,
-H){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 O=!1,T=0,R=0,da=mxUtils.bind(this,function(){O||(O=!0,this.model.beginUpdate())}),P=mxUtils.bind(this,function(){O&&(O=!1,this.model.endUpdate())}),ma=mxUtils.bind(this,function(){0<T&&T--;0==
-T&&ra()}),ra=mxUtils.bind(this,function(){if(R<u.length){var xa=this.stoppingCustomActions,ta=u[R++],Aa=[];if(null!=ta.open)if(P(),this.isCustomLink(ta.open)){if(!this.customLinkClicked(ta.open))return}else this.openLink(ta.open);null==ta.wait||xa||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;ma()}),T++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=ta.wait?parseInt(ta.wait):1E3),P());null!=ta.opacity&&
+H){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 P=!1,T=0,S=0,da=mxUtils.bind(this,function(){P||(P=!0,this.model.beginUpdate())}),R=mxUtils.bind(this,function(){P&&(P=!1,this.model.endUpdate())}),ma=mxUtils.bind(this,function(){0<T&&T--;0==
+T&&ra()}),ra=mxUtils.bind(this,function(){if(S<u.length){var xa=this.stoppingCustomActions,ta=u[S++],Aa=[];if(null!=ta.open)if(R(),this.isCustomLink(ta.open)){if(!this.customLinkClicked(ta.open))return}else this.openLink(ta.open);null==ta.wait||xa||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;ma()}),T++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=ta.wait?parseInt(ta.wait):1E3),R());null!=ta.opacity&&
null!=ta.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(ta.opacity,!0)),ta.opacity.value);null!=ta.fadeIn&&(T++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(ta.fadeIn,!0)),0,1,ma,xa?0:ta.fadeIn.delay));null!=ta.fadeOut&&(T++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(ta.fadeOut,!0)),1,0,ma,xa?0:ta.fadeOut.delay));null!=ta.wipeIn&&(Aa=Aa.concat(this.createWipeAnimations(this.getCellsForAction(ta.wipeIn,!0),!0)));null!=ta.wipeOut&&
(Aa=Aa.concat(this.createWipeAnimations(this.getCellsForAction(ta.wipeOut,!0),!1)));null!=ta.toggle&&(da(),this.toggleCells(this.getCellsForAction(ta.toggle,!0)));if(null!=ta.show){da();var Ca=this.getCellsForAction(ta.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(Ca),1);this.setCellsVisible(Ca,!0)}null!=ta.hide&&(da(),Ca=this.getCellsForAction(ta.hide,!0),Graph.setOpacityForNodes(this.getNodesForCells(Ca),0),this.setCellsVisible(Ca,!1));null!=ta.toggleStyle&&null!=ta.toggleStyle.key&&(da(),
this.toggleCellStyles(ta.toggleStyle.key,null!=ta.toggleStyle.defaultValue?ta.toggleStyle.defaultValue:"0",this.getCellsForAction(ta.toggleStyle,!0)));null!=ta.style&&null!=ta.style.key&&(da(),this.setCellStyles(ta.style.key,ta.style.value,this.getCellsForAction(ta.style,!0)));Ca=[];null!=ta.select&&this.isEnabled()&&(Ca=this.getCellsForAction(ta.select),this.setSelectionCells(Ca));null!=ta.highlight&&(Ca=this.getCellsForAction(ta.highlight),this.highlightCells(Ca,ta.highlight.color,ta.highlight.duration,
ta.highlight.opacity));null!=ta.scroll&&(Ca=this.getCellsForAction(ta.scroll));null!=ta.viewbox&&this.fitWindow(ta.viewbox,ta.viewbox.border);0<Ca.length&&this.scrollCellToVisible(Ca[0]);if(null!=ta.tags){Ca=[];null!=ta.tags.hidden&&(Ca=Ca.concat(ta.tags.hidden));if(null!=ta.tags.visible)for(var Ba=this.getAllTags(),sa=0;sa<Ba.length;sa++)0>mxUtils.indexOf(ta.tags.visible,Ba[sa])&&0>mxUtils.indexOf(Ca,Ba[sa])&&Ca.push(Ba[sa]);this.setHiddenTags(Ca);this.refresh()}0<Aa.length&&(T++,this.executeAnimations(Aa,
-ma,xa?1:ta.steps,xa?0:ta.delay));0==T?ra():P()}else this.stoppingCustomActions=this.executingCustomActions=!1,P(),null!=H&&H()});ra()}};Graph.prototype.doUpdateCustomLinksForCell=function(u,H){var O=this.getLinkForCell(H);null!=O&&"data:action/json,"==O.substring(0,17)&&this.setLinkForCell(H,this.updateCustomLink(u,O));if(this.isHtmlLabel(H)){var T=document.createElement("div");T.innerHTML=this.sanitizeHtml(this.getLabel(H));for(var R=T.getElementsByTagName("a"),da=!1,P=0;P<R.length;P++)O=R[P].getAttribute("href"),
-null!=O&&"data:action/json,"==O.substring(0,17)&&(R[P].setAttribute("href",this.updateCustomLink(u,O)),da=!0);da&&this.labelChanged(H,T.innerHTML)}};Graph.prototype.updateCustomLink=function(u,H){if("data:action/json,"==H.substring(0,17))try{var O=JSON.parse(H.substring(17));null!=O.actions&&(this.updateCustomLinkActions(u,O.actions),H="data:action/json,"+JSON.stringify(O))}catch(T){}return H};Graph.prototype.updateCustomLinkActions=function(u,H){for(var O=0;O<H.length;O++){var T=H[O],R;for(R in T)this.updateCustomLinkAction(u,
-T[R],"cells"),this.updateCustomLinkAction(u,T[R],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(u,H,O){if(null!=H&&null!=H[O]){for(var T=[],R=0;R<H[O].length;R++)if("*"==H[O][R])T.push(H[O][R]);else{var da=u[H[O][R]];null!=da?""!=da&&T.push(da):T.push(H[O][R])}H[O]=T}};Graph.prototype.getCellsForAction=function(u,H){H=this.getCellsById(u.cells).concat(this.getCellsForTags(u.tags,null,H));if(null!=u.excludeCells){for(var O=[],T=0;T<H.length;T++)0>u.excludeCells.indexOf(H[T].id)&&
-O.push(H[T]);H=O}return H};Graph.prototype.getCellsById=function(u){var H=[];if(null!=u)for(var O=0;O<u.length;O++)if("*"==u[O]){var T=this.model.getRoot();H=H.concat(this.model.filterDescendants(function(da){return da!=T},T))}else{var R=this.model.getCell(u[O]);null!=R&&H.push(R)}return H};var J=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(u){return J.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(u))};Graph.prototype.setHiddenTags=function(u){this.hiddenTags=
+ma,xa?1:ta.steps,xa?0:ta.delay));0==T?ra():R()}else this.stoppingCustomActions=this.executingCustomActions=!1,R(),null!=H&&H()});ra()}};Graph.prototype.doUpdateCustomLinksForCell=function(u,H){var P=this.getLinkForCell(H);null!=P&&"data:action/json,"==P.substring(0,17)&&this.setLinkForCell(H,this.updateCustomLink(u,P));if(this.isHtmlLabel(H)){var T=document.createElement("div");T.innerHTML=this.sanitizeHtml(this.getLabel(H));for(var S=T.getElementsByTagName("a"),da=!1,R=0;R<S.length;R++)P=S[R].getAttribute("href"),
+null!=P&&"data:action/json,"==P.substring(0,17)&&(S[R].setAttribute("href",this.updateCustomLink(u,P)),da=!0);da&&this.labelChanged(H,T.innerHTML)}};Graph.prototype.updateCustomLink=function(u,H){if("data:action/json,"==H.substring(0,17))try{var P=JSON.parse(H.substring(17));null!=P.actions&&(this.updateCustomLinkActions(u,P.actions),H="data:action/json,"+JSON.stringify(P))}catch(T){}return H};Graph.prototype.updateCustomLinkActions=function(u,H){for(var P=0;P<H.length;P++){var T=H[P],S;for(S in T)this.updateCustomLinkAction(u,
+T[S],"cells"),this.updateCustomLinkAction(u,T[S],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(u,H,P){if(null!=H&&null!=H[P]){for(var T=[],S=0;S<H[P].length;S++)if("*"==H[P][S])T.push(H[P][S]);else{var da=u[H[P][S]];null!=da?""!=da&&T.push(da):T.push(H[P][S])}H[P]=T}};Graph.prototype.getCellsForAction=function(u,H){H=this.getCellsById(u.cells).concat(this.getCellsForTags(u.tags,null,H));if(null!=u.excludeCells){for(var P=[],T=0;T<H.length;T++)0>u.excludeCells.indexOf(H[T].id)&&
+P.push(H[T]);H=P}return H};Graph.prototype.getCellsById=function(u){var H=[];if(null!=u)for(var P=0;P<u.length;P++)if("*"==u[P]){var T=this.model.getRoot();H=H.concat(this.model.filterDescendants(function(da){return da!=T},T))}else{var S=this.model.getCell(u[P]);null!=S&&H.push(S)}return H};var L=Graph.prototype.isCellVisible;Graph.prototype.isCellVisible=function(u){return L.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(u))};Graph.prototype.setHiddenTags=function(u){this.hiddenTags=
u;this.fireEvent(new mxEventObject("hiddenTagsChanged"))};Graph.prototype.toggleHiddenTag=function(u){var H=mxUtils.indexOf(this.hiddenTags,u);0>H?this.hiddenTags.push(u):0<=H&&this.hiddenTags.splice(H,1);this.fireEvent(new mxEventObject("hiddenTagsChanged"))};Graph.prototype.isAllTagsHidden=function(u){if(null==u||0==u.length||0==this.hiddenTags.length)return!1;u=u.split(" ");if(u.length>this.hiddenTags.length)return!1;for(var H=0;H<u.length;H++)if(0>mxUtils.indexOf(this.hiddenTags,u[H]))return!1;
-return!0};Graph.prototype.getCellsForTags=function(u,H,O,T){var R=[];if(null!=u){H=null!=H?H:this.model.getDescendants(this.model.getRoot());for(var da=0,P={},ma=0;ma<u.length;ma++)0<u[ma].length&&(P[u[ma]]=!0,da++);for(ma=0;ma<H.length;ma++)if(O&&this.model.getParent(H[ma])==this.model.root||this.model.isVertex(H[ma])||this.model.isEdge(H[ma])){var ra=this.getTagsForCell(H[ma]),xa=!1;if(0<ra.length&&(ra=ra.split(" "),ra.length>=u.length)){for(var ta=xa=0;ta<ra.length&&xa<da;ta++)null!=P[ra[ta]]&&
-xa++;xa=xa==da}xa&&(1!=T||this.isCellVisible(H[ma]))&&R.push(H[ma])}}return R};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(u){for(var H=null,O=[],T=0;T<u.length;T++){var R=this.getTagsForCell(u[T]);O=[];if(0<R.length){R=R.split(" ");for(var da={},P=0;P<R.length;P++)if(null==H||null!=H[R[P]])da[R[P]]=!0,O.push(R[P]);H=da}else return[]}return O};Graph.prototype.getTagsForCells=function(u){for(var H=
-[],O={},T=0;T<u.length;T++){var R=this.getTagsForCell(u[T]);if(0<R.length){R=R.split(" ");for(var da=0;da<R.length;da++)null==O[R[da]]&&(O[R[da]]=!0,H.push(R[da]))}}return H};Graph.prototype.getTagsForCell=function(u){return this.getAttributeForCell(u,"tags","")};Graph.prototype.addTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var O=0;O<u.length;O++){for(var T=this.getTagsForCell(u[O]),R=T.split(" "),da=!1,P=0;P<H.length;P++){var ma=mxUtils.trim(H[P]);""!=
-ma&&0>mxUtils.indexOf(R,ma)&&(T=0<T.length?T+" "+ma:ma,da=!0)}da&&this.setAttributeForCell(u[O],"tags",T)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var O=0;O<u.length;O++){var T=this.getTagsForCell(u[O]);if(0<T.length){for(var R=T.split(" "),da=!1,P=0;P<H.length;P++){var ma=mxUtils.indexOf(R,H[P]);0<=ma&&(R.splice(ma,1),da=!0)}da&&this.setAttributeForCell(u[O],"tags",R.join(" "))}}}finally{this.model.endUpdate()}}};
-Graph.prototype.toggleCells=function(u){this.model.beginUpdate();try{for(var H=0;H<u.length;H++)this.model.setVisible(u[H],!this.model.isVisible(u[H]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(u,H){this.model.beginUpdate();try{for(var O=0;O<u.length;O++)this.model.setVisible(u[O],H)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(u,H,O,T){for(var R=0;R<u.length;R++)this.highlightCell(u[R],H,O,T)};Graph.prototype.highlightCell=function(u,H,
-O,T,R){H=null!=H?H:mxConstants.DEFAULT_VALID_COLOR;O=null!=O?O:1E3;u=this.view.getState(u);var da=null;null!=u&&(R=null!=R?R:4,R=Math.max(R+1,mxUtils.getValue(u.style,mxConstants.STYLE_STROKEWIDTH,1)+R),da=new mxCellHighlight(this,H,R,!1),null!=T&&(da.opacity=T),da.highlight(u),window.setTimeout(function(){null!=da.shape&&(mxUtils.setPrefixedStyle(da.shape.node.style,"transition","all 1200ms ease-in-out"),da.shape.node.style.opacity=0);window.setTimeout(function(){da.destroy()},1200)},O));return da};
-Graph.prototype.addSvgShadow=function(u,H,O,T){O=null!=O?O:!1;T=null!=T?T:!0;var R=u.ownerDocument,da=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"filter"):R.createElement("filter");da.setAttribute("id",this.shadowId);var P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):R.createElement("feGaussianBlur");P.setAttribute("in","SourceAlpha");P.setAttribute("stdDeviation",this.svgShadowBlur);P.setAttribute("result","blur");da.appendChild(P);P=null!=R.createElementNS?
-R.createElementNS(mxConstants.NS_SVG,"feOffset"):R.createElement("feOffset");P.setAttribute("in","blur");P.setAttribute("dx",this.svgShadowSize);P.setAttribute("dy",this.svgShadowSize);P.setAttribute("result","offsetBlur");da.appendChild(P);P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feFlood"):R.createElement("feFlood");P.setAttribute("flood-color",this.svgShadowColor);P.setAttribute("flood-opacity",this.svgShadowOpacity);P.setAttribute("result","offsetColor");da.appendChild(P);
-P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feComposite"):R.createElement("feComposite");P.setAttribute("in","offsetColor");P.setAttribute("in2","offsetBlur");P.setAttribute("operator","in");P.setAttribute("result","offsetBlur");da.appendChild(P);P=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"feBlend"):R.createElement("feBlend");P.setAttribute("in","SourceGraphic");P.setAttribute("in2","offsetBlur");da.appendChild(P);P=u.getElementsByTagName("defs");0==P.length?
-(R=null!=R.createElementNS?R.createElementNS(mxConstants.NS_SVG,"defs"):R.createElement("defs"),null!=u.firstChild?u.insertBefore(R,u.firstChild):u.appendChild(R)):R=P[0];R.appendChild(da);O||(H=null!=H?H:u.getElementsByTagName("g")[0],null!=H&&(H.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(u.getAttribute("width")))&&T&&(u.setAttribute("width",parseInt(u.getAttribute("width"))+6),u.setAttribute("height",parseInt(u.getAttribute("height"))+6),H=u.getAttribute("viewBox"),null!=H&&
+return!0};Graph.prototype.getCellsForTags=function(u,H,P,T){var S=[];if(null!=u){H=null!=H?H:this.model.getDescendants(this.model.getRoot());for(var da=0,R={},ma=0;ma<u.length;ma++)0<u[ma].length&&(R[u[ma]]=!0,da++);for(ma=0;ma<H.length;ma++)if(P&&this.model.getParent(H[ma])==this.model.root||this.model.isVertex(H[ma])||this.model.isEdge(H[ma])){var ra=this.getTagsForCell(H[ma]),xa=!1;if(0<ra.length&&(ra=ra.split(" "),ra.length>=u.length)){for(var ta=xa=0;ta<ra.length&&xa<da;ta++)null!=R[ra[ta]]&&
+xa++;xa=xa==da}xa&&(1!=T||this.isCellVisible(H[ma]))&&S.push(H[ma])}}return S};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};Graph.prototype.getCommonTagsForCells=function(u){for(var H=null,P=[],T=0;T<u.length;T++){var S=this.getTagsForCell(u[T]);P=[];if(0<S.length){S=S.split(" ");for(var da={},R=0;R<S.length;R++)if(null==H||null!=H[S[R]])da[S[R]]=!0,P.push(S[R]);H=da}else return[]}return P};Graph.prototype.getTagsForCells=function(u){for(var H=
+[],P={},T=0;T<u.length;T++){var S=this.getTagsForCell(u[T]);if(0<S.length){S=S.split(" ");for(var da=0;da<S.length;da++)null==P[S[da]]&&(P[S[da]]=!0,H.push(S[da]))}}return H};Graph.prototype.getTagsForCell=function(u){return this.getAttributeForCell(u,"tags","")};Graph.prototype.addTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var P=0;P<u.length;P++){for(var T=this.getTagsForCell(u[P]),S=T.split(" "),da=!1,R=0;R<H.length;R++){var ma=mxUtils.trim(H[R]);""!=
+ma&&0>mxUtils.indexOf(S,ma)&&(T=0<T.length?T+" "+ma:ma,da=!0)}da&&this.setAttributeForCell(u[P],"tags",T)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(u,H){if(0<u.length&&0<H.length){this.model.beginUpdate();try{for(var P=0;P<u.length;P++){var T=this.getTagsForCell(u[P]);if(0<T.length){for(var S=T.split(" "),da=!1,R=0;R<H.length;R++){var ma=mxUtils.indexOf(S,H[R]);0<=ma&&(S.splice(ma,1),da=!0)}da&&this.setAttributeForCell(u[P],"tags",S.join(" "))}}}finally{this.model.endUpdate()}}};
+Graph.prototype.toggleCells=function(u){this.model.beginUpdate();try{for(var H=0;H<u.length;H++)this.model.setVisible(u[H],!this.model.isVisible(u[H]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(u,H){this.model.beginUpdate();try{for(var P=0;P<u.length;P++)this.model.setVisible(u[P],H)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(u,H,P,T){for(var S=0;S<u.length;S++)this.highlightCell(u[S],H,P,T)};Graph.prototype.highlightCell=function(u,H,
+P,T,S){H=null!=H?H:mxConstants.DEFAULT_VALID_COLOR;P=null!=P?P:1E3;u=this.view.getState(u);var da=null;null!=u&&(S=null!=S?S:4,S=Math.max(S+1,mxUtils.getValue(u.style,mxConstants.STYLE_STROKEWIDTH,1)+S),da=new mxCellHighlight(this,H,S,!1),null!=T&&(da.opacity=T),da.highlight(u),window.setTimeout(function(){null!=da.shape&&(mxUtils.setPrefixedStyle(da.shape.node.style,"transition","all 1200ms ease-in-out"),da.shape.node.style.opacity=0);window.setTimeout(function(){da.destroy()},1200)},P));return da};
+Graph.prototype.addSvgShadow=function(u,H,P,T){P=null!=P?P:!1;T=null!=T?T:!0;var S=u.ownerDocument,da=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"filter"):S.createElement("filter");da.setAttribute("id",this.shadowId);var R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):S.createElement("feGaussianBlur");R.setAttribute("in","SourceAlpha");R.setAttribute("stdDeviation",this.svgShadowBlur);R.setAttribute("result","blur");da.appendChild(R);R=null!=S.createElementNS?
+S.createElementNS(mxConstants.NS_SVG,"feOffset"):S.createElement("feOffset");R.setAttribute("in","blur");R.setAttribute("dx",this.svgShadowSize);R.setAttribute("dy",this.svgShadowSize);R.setAttribute("result","offsetBlur");da.appendChild(R);R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feFlood"):S.createElement("feFlood");R.setAttribute("flood-color",this.svgShadowColor);R.setAttribute("flood-opacity",this.svgShadowOpacity);R.setAttribute("result","offsetColor");da.appendChild(R);
+R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feComposite"):S.createElement("feComposite");R.setAttribute("in","offsetColor");R.setAttribute("in2","offsetBlur");R.setAttribute("operator","in");R.setAttribute("result","offsetBlur");da.appendChild(R);R=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"feBlend"):S.createElement("feBlend");R.setAttribute("in","SourceGraphic");R.setAttribute("in2","offsetBlur");da.appendChild(R);R=u.getElementsByTagName("defs");0==R.length?
+(S=null!=S.createElementNS?S.createElementNS(mxConstants.NS_SVG,"defs"):S.createElement("defs"),null!=u.firstChild?u.insertBefore(S,u.firstChild):u.appendChild(S)):S=R[0];S.appendChild(da);P||(H=null!=H?H:u.getElementsByTagName("g")[0],null!=H&&(H.setAttribute("filter","url(#"+this.shadowId+")"),!isNaN(parseInt(u.getAttribute("width")))&&T&&(u.setAttribute("width",parseInt(u.getAttribute("width"))+6),u.setAttribute("height",parseInt(u.getAttribute("height"))+6),H=u.getAttribute("viewBox"),null!=H&&
0<H.length&&(H=H.split(" "),3<H.length&&(w=parseFloat(H[2])+6,h=parseFloat(H[3])+6,u.setAttribute("viewBox",H[0]+" "+H[1]+" "+w+" "+h))))));return da};Graph.prototype.setShadowVisible=function(u,H){mxClient.IS_SVG&&!mxClient.IS_SF&&(H=null!=H?H:!0,(this.shadowVisible=u)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),H&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer=function(){if(null==
-this.defaultParent){var u=this.model.getChildCount(this.model.root),H=0;do var O=this.model.getChildAt(this.model.root,H);while(H++<u&&"1"==mxUtils.getValue(this.getCellStyle(O),"locked","0"));null!=O&&this.setDefaultParent(O)}};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=
+this.defaultParent){var u=this.model.getChildCount(this.model.root),H=0;do var P=this.model.getChildAt(this.model.root,H);while(H++<u&&"1"==mxUtils.getValue(this.getCellStyle(P),"locked","0"));null!=P&&this.setDefaultParent(P)}};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=
@@ -3327,35 +3328,36 @@ STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[S
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(u){var H=null;null!=u&&0<u.length&&("ER"==u.substring(0,2)?H="mxgraph.er":"sysML"==u.substring(0,5)&&(H="mxgraph.sysml"));return H};var W=mxMarker.createMarker;mxMarker.createMarker=
-function(u,H,O,T,R,da,P,ma,ra,xa){if(null!=O&&null==mxMarker.markers[O]){var ta=this.getPackageForType(O);null!=ta&&mxStencilRegistry.getStencil(ta)}return W.apply(this,arguments)};var Q=mxStencil.prototype.drawShape;mxStencil.prototype.drawShape=function(u,H,O,T,R,da){"1"==mxUtils.getValue(H.style,"lineShape",null)&&u.setFillColor(mxUtils.getValue(H.style,mxConstants.STYLE_STROKECOLOR,this.stroke));return Q.apply(this,arguments)};PrintDialog.prototype.create=function(u,H){function O(){Ca.value=Math.max(1,
-Math.min(ma,Math.max(parseInt(Ca.value),parseInt(Aa.value))));Aa.value=Math.max(1,Math.min(ma,Math.min(parseInt(Ca.value),parseInt(Aa.value))))}function T(za){function Da(ab,db,kb){var ib=ab.useCssTransforms,nb=ab.currentTranslate,vb=ab.currentScale,mb=ab.view.translate,Bb=ab.view.scale;ab.useCssTransforms&&(ab.useCssTransforms=!1,ab.currentTranslate=new mxPoint(0,0),ab.currentScale=1,ab.view.translate=new mxPoint(0,0),ab.view.scale=1);var yb=ab.getGraphBounds(),lb=0,ob=0,gb=ua.get(),rb=1/ab.pageScale,
-tb=Sa.checked;if(tb){rb=parseInt(fa.value);var zb=parseInt(na.value);rb=Math.min(gb.height*zb/(yb.height/ab.view.scale),gb.width*rb/(yb.width/ab.view.scale))}else rb=parseInt(Ta.value)/(100*ab.pageScale),isNaN(rb)&&(Ma=1/ab.pageScale,Ta.value="100 %");gb=mxRectangle.fromRectangle(gb);gb.width=Math.ceil(gb.width*Ma);gb.height=Math.ceil(gb.height*Ma);rb*=Ma;!tb&&ab.pageVisible?(yb=ab.getPageLayout(),lb-=yb.x*gb.width,ob-=yb.y*gb.height):tb=!0;if(null==db){db=PrintDialog.createPrintPreview(ab,rb,gb,
-0,lb,ob,tb);db.pageSelector=!1;db.mathEnabled=!1;Ba.checked&&(db.isCellVisible=function(pb){return ab.isCellSelected(pb)});lb=u.getCurrentFile();null!=lb&&(db.title=lb.getTitle());var wb=db.writeHead;db.writeHead=function(pb){wb.apply(this,arguments);null!=u.editor.fontCss&&(pb.writeln('<style type="text/css">'),pb.writeln(u.editor.fontCss),pb.writeln("</style>"));for(var xb=ab.getCustomFonts(),c=0;c<xb.length;c++){var l=xb[c].name,x=xb[c].url;Graph.isCssFontUrl(x)?pb.writeln('<link rel="stylesheet" href="'+
-mxUtils.htmlEntities(x)+'" charset="UTF-8" type="text/css">'):(pb.writeln('<style type="text/css">'),pb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),pb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var Ab=db.renderPage;db.renderPage=function(pb,xb,c,l,x,p){var v=mxClient.NO_FO,A=Ab.apply(this,arguments);mxClient.NO_FO=v;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:A.className="geDisableMathJax";return A}}lb=
-null;ob=R.shapeForegroundColor;tb=R.shapeBackgroundColor;gb=R.enableFlowAnimation;R.enableFlowAnimation=!1;null!=R.themes&&"darkTheme"==R.defaultThemeName&&(lb=R.stylesheet,R.stylesheet=R.getDefaultStylesheet(),R.shapeForegroundColor="#000000",R.shapeBackgroundColor="#ffffff",R.refresh());db.open(null,null,kb,!0);R.enableFlowAnimation=gb;null!=lb&&(R.shapeForegroundColor=ob,R.shapeBackgroundColor=tb,R.stylesheet=lb,R.refresh())}else{gb=ab.background;if(null==gb||""==gb||gb==mxConstants.NONE)gb="#ffffff";
-db.backgroundColor=gb;db.autoOrigin=tb;db.appendGraph(ab,rb,lb,ob,kb,!0);kb=ab.getCustomFonts();if(null!=db.wnd)for(lb=0;lb<kb.length;lb++)ob=kb[lb].name,tb=kb[lb].url,Graph.isCssFontUrl(tb)?db.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(tb)+'" charset="UTF-8" type="text/css">'):(db.wnd.document.writeln('<style type="text/css">'),db.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(ob)+'";\nsrc: url("'+mxUtils.htmlEntities(tb)+'");\n}'),db.wnd.document.writeln("</style>"))}ib&&
-(ab.useCssTransforms=ib,ab.currentTranslate=nb,ab.currentScale=vb,ab.view.translate=mb,ab.view.scale=Bb);return db}var Ma=parseInt(pa.value)/100;isNaN(Ma)&&(Ma=1,pa.value="100 %");Ma*=.75;var La=null,Ua=R.shapeForegroundColor,Ra=R.shapeBackgroundColor;null!=R.themes&&"darkTheme"==R.defaultThemeName&&(La=R.stylesheet,R.stylesheet=R.getDefaultStylesheet(),R.shapeForegroundColor="#000000",R.shapeBackgroundColor="#ffffff",R.refresh());var Fa=Aa.value,va=Ca.value,ya=!xa.checked,Na=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(u,
-xa.checked,Fa,va,Sa.checked,fa.value,na.value,parseInt(Ta.value)/100,parseInt(pa.value)/100,ua.get());else{ya&&(ya=Ba.checked||Fa==ra&&va==ra);if(!ya&&null!=u.pages&&u.pages.length){var Ja=0;ya=u.pages.length-1;xa.checked||(Ja=parseInt(Fa)-1,ya=parseInt(va)-1);for(var Pa=Ja;Pa<=ya;Pa++){var Ya=u.pages[Pa];Fa=Ya==u.currentPage?R:null;if(null==Fa){Fa=u.createTemporaryGraph(R.stylesheet);Fa.shapeForegroundColor=R.shapeForegroundColor;Fa.shapeBackgroundColor=R.shapeBackgroundColor;va=!0;Ja=!1;var cb=
-null,fb=null;null==Ya.viewState&&null==Ya.root&&u.updatePageRoot(Ya);null!=Ya.viewState&&(va=Ya.viewState.pageVisible,Ja=Ya.viewState.mathEnabled,cb=Ya.viewState.background,fb=Ya.viewState.backgroundImage,Fa.extFonts=Ya.viewState.extFonts);null!=fb&&null!=fb.originalSrc&&(fb=u.createImageForPageLink(fb.originalSrc,Ya));Fa.background=cb;Fa.backgroundImage=null!=fb?new mxImage(fb.src,fb.width,fb.height,fb.x,fb.y):null;Fa.pageVisible=va;Fa.mathEnabled=Ja;var qb=Fa.getGraphBounds;Fa.getGraphBounds=function(){var ab=
-qb.apply(this,arguments),db=this.backgroundImage;if(null!=db&&null!=db.width&&null!=db.height){var kb=this.view.translate,ib=this.view.scale;ab=mxRectangle.fromRectangle(ab);ab.add(new mxRectangle((kb.x+db.x)*ib,(kb.y+db.y)*ib,db.width*ib,db.height*ib))}return ab};var ub=Fa.getGlobalVariable;Fa.getGlobalVariable=function(ab){return"page"==ab?Ya.getName():"pagenumber"==ab?Pa+1:"pagecount"==ab?null!=u.pages?u.pages.length:1:ub.apply(this,arguments)};document.body.appendChild(Fa.container);u.updatePageRoot(Ya);
-Fa.model.setRoot(Ya.root)}Na=Da(Fa,Na,Pa!=ya);Fa!=R&&Fa.container.parentNode.removeChild(Fa.container)}}else Na=Da(R);null==Na?u.handleError({message:mxResources.get("errorUpdatingPreview")}):(Na.mathEnabled&&(ya=Na.wnd.document,za&&(Na.wnd.IMMEDIATE_PRINT=!0),ya.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),Na.closeDocument(),!Na.mathEnabled&&za&&PrintDialog.printPreview(Na));null!=La&&(R.shapeForegroundColor=Ua,R.shapeBackgroundColor=Ra,R.stylesheet=
-La,R.refresh())}}var R=u.editor.graph,da=document.createElement("div"),P=document.createElement("h3");P.style.width="100%";P.style.textAlign="center";P.style.marginTop="0px";mxUtils.write(P,H||mxResources.get("print"));da.appendChild(P);var ma=1,ra=1;P=document.createElement("div");P.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var xa=document.createElement("input");xa.style.cssText="margin-right:8px;margin-bottom:8px;";xa.setAttribute("value","all");xa.setAttribute("type",
-"radio");xa.setAttribute("name","pages-printdialog");P.appendChild(xa);H=document.createElement("span");mxUtils.write(H,mxResources.get("printAllPages"));P.appendChild(H);mxUtils.br(P);var ta=xa.cloneNode(!0);xa.setAttribute("checked","checked");ta.setAttribute("value","range");P.appendChild(ta);H=document.createElement("span");mxUtils.write(H,mxResources.get("pages")+":");P.appendChild(H);var Aa=document.createElement("input");Aa.style.cssText="margin:0 8px 0 8px;";Aa.setAttribute("value","1");Aa.setAttribute("type",
-"number");Aa.setAttribute("min","1");Aa.style.width="50px";P.appendChild(Aa);H=document.createElement("span");mxUtils.write(H,mxResources.get("to"));P.appendChild(H);var Ca=Aa.cloneNode(!0);P.appendChild(Ca);mxEvent.addListener(Aa,"focus",function(){ta.checked=!0});mxEvent.addListener(Ca,"focus",function(){ta.checked=!0});mxEvent.addListener(Aa,"change",O);mxEvent.addListener(Ca,"change",O);if(null!=u.pages&&(ma=u.pages.length,null!=u.currentPage))for(H=0;H<u.pages.length;H++)if(u.currentPage==u.pages[H]){ra=
-H+1;Aa.value=ra;Ca.value=ra;break}Aa.setAttribute("max",ma);Ca.setAttribute("max",ma);u.isPagesEnabled()?1<ma&&(da.appendChild(P),ta.checked=!0):ta.checked=!0;mxUtils.br(P);var Ba=document.createElement("input");Ba.setAttribute("value","all");Ba.setAttribute("type","radio");Ba.style.marginRight="8px";R.isSelectionEmpty()&&Ba.setAttribute("disabled","disabled");var sa=document.createElement("div");sa.style.marginBottom="10px";1==ma?(Ba.setAttribute("type","checkbox"),Ba.style.marginBottom="12px",sa.appendChild(Ba)):
-(Ba.setAttribute("name","pages-printdialog"),Ba.style.marginBottom="8px",P.appendChild(Ba));H=document.createElement("span");mxUtils.write(H,mxResources.get("selectionOnly"));Ba.parentNode.appendChild(H);1==ma&&mxUtils.br(Ba.parentNode);var Oa=document.createElement("input");Oa.style.marginRight="8px";Oa.setAttribute("value","adjust");Oa.setAttribute("type","radio");Oa.setAttribute("name","printZoom");sa.appendChild(Oa);H=document.createElement("span");mxUtils.write(H,mxResources.get("adjustTo"));
-sa.appendChild(H);var Ta=document.createElement("input");Ta.style.cssText="margin:0 8px 0 8px;";Ta.setAttribute("value","100 %");Ta.style.width="50px";sa.appendChild(Ta);mxEvent.addListener(Ta,"focus",function(){Oa.checked=!0});da.appendChild(sa);P=P.cloneNode(!1);var Sa=Oa.cloneNode(!0);Sa.setAttribute("value","fit");Oa.setAttribute("checked","checked");H=document.createElement("div");H.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";H.appendChild(Sa);P.appendChild(H);sa=
-document.createElement("table");sa.style.display="inline-block";var $a=document.createElement("tbody"),Ga=document.createElement("tr"),eb=Ga.cloneNode(!0),bb=document.createElement("td"),z=bb.cloneNode(!0),L=bb.cloneNode(!0),M=bb.cloneNode(!0),U=bb.cloneNode(!0),X=bb.cloneNode(!0);bb.style.textAlign="right";M.style.textAlign="right";mxUtils.write(bb,mxResources.get("fitTo"));var fa=document.createElement("input");fa.style.cssText="margin:0 8px 0 8px;";fa.setAttribute("value","1");fa.setAttribute("min",
-"1");fa.setAttribute("type","number");fa.style.width="40px";z.appendChild(fa);H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsAcross"));L.appendChild(H);mxUtils.write(M,mxResources.get("fitToBy"));var na=fa.cloneNode(!0);U.appendChild(na);mxEvent.addListener(fa,"focus",function(){Sa.checked=!0});mxEvent.addListener(na,"focus",function(){Sa.checked=!0});H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsDown"));X.appendChild(H);Ga.appendChild(bb);
-Ga.appendChild(z);Ga.appendChild(L);eb.appendChild(M);eb.appendChild(U);eb.appendChild(X);$a.appendChild(Ga);$a.appendChild(eb);sa.appendChild($a);P.appendChild(sa);da.appendChild(P);P=document.createElement("div");H=document.createElement("div");H.style.fontWeight="bold";H.style.marginBottom="12px";mxUtils.write(H,mxResources.get("paperSize"));P.appendChild(H);H=document.createElement("div");H.style.marginBottom="12px";var ua=PageSetupDialog.addPageFormatPanel(H,"printdialog",u.editor.graph.pageFormat||
-mxConstants.PAGE_FORMAT_A4_PORTRAIT);P.appendChild(H);H=document.createElement("span");mxUtils.write(H,mxResources.get("pageScale"));P.appendChild(H);var pa=document.createElement("input");pa.style.cssText="margin:0 8px 0 8px;";pa.setAttribute("value","100 %");pa.style.width="60px";P.appendChild(pa);da.appendChild(P);H=document.createElement("div");H.style.cssText="text-align:right;margin:48px 0 0 0;";P=mxUtils.button(mxResources.get("cancel"),function(){u.hideDialog()});P.className="geBtn";u.editor.cancelFirst&&
-H.appendChild(P);u.isOffline()||(sa=mxUtils.button(mxResources.get("help"),function(){R.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),sa.className="geBtn",H.appendChild(sa));PrintDialog.previewEnabled&&(sa=mxUtils.button(mxResources.get("preview"),function(){u.hideDialog();T(!1)}),sa.className="geBtn",H.appendChild(sa));sa=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){u.hideDialog();T(!0)});sa.className="geBtn gePrimaryBtn";H.appendChild(sa);u.editor.cancelFirst||
-H.appendChild(P);da.appendChild(H);this.container=da};var S=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=
-this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else S.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 ha=document.createElement("canvas"),la=new Image;la.onload=function(){try{ha.getContext("2d").drawImage(la,0,0);var u=ha.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=u&&6<u.length}catch(H){}};la.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
+"/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(u){var H=null;null!=u&&0<u.length&&("ER"==u.substring(0,2)?H="mxgraph.er":"sysML"==u.substring(0,5)&&(H="mxgraph.sysml"));return H};var ea=mxMarker.createMarker;mxMarker.createMarker=
+function(u,H,P,T,S,da,R,ma,ra,xa){if(null!=P&&null==mxMarker.markers[P]){var ta=this.getPackageForType(P);null!=ta&&mxStencilRegistry.getStencil(ta)}return ea.apply(this,arguments)};var O=mxStencil.prototype.drawShape;mxStencil.prototype.drawShape=function(u,H,P,T,S,da){"1"==mxUtils.getValue(H.style,"lineShape",null)&&u.setFillColor(mxUtils.getValue(H.style,mxConstants.STYLE_STROKECOLOR,this.stroke));return O.apply(this,arguments)};PrintDialog.prototype.create=function(u,H){function P(){Ca.value=
+Math.max(1,Math.min(ma,Math.max(parseInt(Ca.value),parseInt(Aa.value))));Aa.value=Math.max(1,Math.min(ma,Math.min(parseInt(Ca.value),parseInt(Aa.value))))}function T(za){function Da(ab,db,kb){var ib=ab.useCssTransforms,ob=ab.currentTranslate,vb=ab.currentScale,nb=ab.view.translate,Bb=ab.view.scale;ab.useCssTransforms&&(ab.useCssTransforms=!1,ab.currentTranslate=new mxPoint(0,0),ab.currentScale=1,ab.view.translate=new mxPoint(0,0),ab.view.scale=1);var yb=ab.getGraphBounds(),mb=0,pb=0,gb=ua.get(),rb=
+1/ab.pageScale,tb=Oa.checked;if(tb){rb=parseInt(ha.value);var zb=parseInt(na.value);rb=Math.min(gb.height*zb/(yb.height/ab.view.scale),gb.width*rb/(yb.width/ab.view.scale))}else rb=parseInt(Ta.value)/(100*ab.pageScale),isNaN(rb)&&(Ma=1/ab.pageScale,Ta.value="100 %");gb=mxRectangle.fromRectangle(gb);gb.width=Math.ceil(gb.width*Ma);gb.height=Math.ceil(gb.height*Ma);rb*=Ma;!tb&&ab.pageVisible?(yb=ab.getPageLayout(),mb-=yb.x*gb.width,pb-=yb.y*gb.height):tb=!0;if(null==db){db=PrintDialog.createPrintPreview(ab,
+rb,gb,0,mb,pb,tb);db.pageSelector=!1;db.mathEnabled=!1;Ba.checked&&(db.isCellVisible=function(lb){return ab.isCellSelected(lb)});mb=u.getCurrentFile();null!=mb&&(db.title=mb.getTitle());var wb=db.writeHead;db.writeHead=function(lb){wb.apply(this,arguments);mxClient.IS_GC&&(lb.writeln('<style type="text/css">'),lb.writeln("@media print {"),lb.writeln(".MathJax svg { shape-rendering: crispEdges; }"),lb.writeln("}"),lb.writeln("</style>"));null!=u.editor.fontCss&&(lb.writeln('<style type="text/css">'),
+lb.writeln(u.editor.fontCss),lb.writeln("</style>"));for(var xb=ab.getCustomFonts(),c=0;c<xb.length;c++){var l=xb[c].name,x=xb[c].url;Graph.isCssFontUrl(x)?lb.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(x)+'" charset="UTF-8" type="text/css">'):(lb.writeln('<style type="text/css">'),lb.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),lb.writeln("</style>"))}};if("undefined"!==typeof MathJax){var Ab=db.renderPage;db.renderPage=
+function(lb,xb,c,l,x,p){var v=mxClient.NO_FO,A=Ab.apply(this,arguments);mxClient.NO_FO=v;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:A.className="geDisableMathJax";return A}}mb=null;pb=S.shapeForegroundColor;tb=S.shapeBackgroundColor;gb=S.enableFlowAnimation;S.enableFlowAnimation=!1;null!=S.themes&&"darkTheme"==S.defaultThemeName&&(mb=S.stylesheet,S.stylesheet=S.getDefaultStylesheet(),S.shapeForegroundColor="#000000",S.shapeBackgroundColor="#ffffff",S.refresh());db.open(null,null,
+kb,!0);S.enableFlowAnimation=gb;null!=mb&&(S.shapeForegroundColor=pb,S.shapeBackgroundColor=tb,S.stylesheet=mb,S.refresh())}else{gb=ab.background;if(null==gb||""==gb||gb==mxConstants.NONE)gb="#ffffff";db.backgroundColor=gb;db.autoOrigin=tb;db.appendGraph(ab,rb,mb,pb,kb,!0);kb=ab.getCustomFonts();if(null!=db.wnd)for(mb=0;mb<kb.length;mb++)pb=kb[mb].name,tb=kb[mb].url,Graph.isCssFontUrl(tb)?db.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(tb)+'" charset="UTF-8" type="text/css">'):
+(db.wnd.document.writeln('<style type="text/css">'),db.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(pb)+'";\nsrc: url("'+mxUtils.htmlEntities(tb)+'");\n}'),db.wnd.document.writeln("</style>"))}ib&&(ab.useCssTransforms=ib,ab.currentTranslate=ob,ab.currentScale=vb,ab.view.translate=nb,ab.view.scale=Bb);return db}var Ma=parseInt(pa.value)/100;isNaN(Ma)&&(Ma=1,pa.value="100 %");Ma*=.75;var La=null,Ua=S.shapeForegroundColor,Sa=S.shapeBackgroundColor;null!=S.themes&&"darkTheme"==
+S.defaultThemeName&&(La=S.stylesheet,S.stylesheet=S.getDefaultStylesheet(),S.shapeForegroundColor="#000000",S.shapeBackgroundColor="#ffffff",S.refresh());var Fa=Aa.value,va=Ca.value,ya=!xa.checked,Na=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(u,xa.checked,Fa,va,Oa.checked,ha.value,na.value,parseInt(Ta.value)/100,parseInt(pa.value)/100,ua.get());else{ya&&(ya=Ba.checked||Fa==ra&&va==ra);if(!ya&&null!=u.pages&&u.pages.length){var Ja=0;ya=u.pages.length-1;xa.checked||(Ja=parseInt(Fa)-1,
+ya=parseInt(va)-1);for(var Qa=Ja;Qa<=ya;Qa++){var Za=u.pages[Qa];Fa=Za==u.currentPage?S:null;if(null==Fa){Fa=u.createTemporaryGraph(S.stylesheet);Fa.shapeForegroundColor=S.shapeForegroundColor;Fa.shapeBackgroundColor=S.shapeBackgroundColor;va=!0;Ja=!1;var cb=null,fb=null;null==Za.viewState&&null==Za.root&&u.updatePageRoot(Za);null!=Za.viewState&&(va=Za.viewState.pageVisible,Ja=Za.viewState.mathEnabled,cb=Za.viewState.background,fb=Za.viewState.backgroundImage,Fa.extFonts=Za.viewState.extFonts);null!=
+fb&&null!=fb.originalSrc&&(fb=u.createImageForPageLink(fb.originalSrc,Za));Fa.background=cb;Fa.backgroundImage=null!=fb?new mxImage(fb.src,fb.width,fb.height,fb.x,fb.y):null;Fa.pageVisible=va;Fa.mathEnabled=Ja;var qb=Fa.getGraphBounds;Fa.getGraphBounds=function(){var ab=qb.apply(this,arguments),db=this.backgroundImage;if(null!=db&&null!=db.width&&null!=db.height){var kb=this.view.translate,ib=this.view.scale;ab=mxRectangle.fromRectangle(ab);ab.add(new mxRectangle((kb.x+db.x)*ib,(kb.y+db.y)*ib,db.width*
+ib,db.height*ib))}return ab};var ub=Fa.getGlobalVariable;Fa.getGlobalVariable=function(ab){return"page"==ab?Za.getName():"pagenumber"==ab?Qa+1:"pagecount"==ab?null!=u.pages?u.pages.length:1:ub.apply(this,arguments)};document.body.appendChild(Fa.container);u.updatePageRoot(Za);Fa.model.setRoot(Za.root)}Na=Da(Fa,Na,Qa!=ya);Fa!=S&&Fa.container.parentNode.removeChild(Fa.container)}}else Na=Da(S);null==Na?u.handleError({message:mxResources.get("errorUpdatingPreview")}):(Na.mathEnabled&&(ya=Na.wnd.document,
+za&&(Na.wnd.IMMEDIATE_PRINT=!0),ya.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),Na.closeDocument(),!Na.mathEnabled&&za&&PrintDialog.printPreview(Na));null!=La&&(S.shapeForegroundColor=Ua,S.shapeBackgroundColor=Sa,S.stylesheet=La,S.refresh())}}var S=u.editor.graph,da=document.createElement("div"),R=document.createElement("h3");R.style.width="100%";R.style.textAlign="center";R.style.marginTop="0px";mxUtils.write(R,H||mxResources.get("print"));da.appendChild(R);
+var ma=1,ra=1;R=document.createElement("div");R.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var xa=document.createElement("input");xa.style.cssText="margin-right:8px;margin-bottom:8px;";xa.setAttribute("value","all");xa.setAttribute("type","radio");xa.setAttribute("name","pages-printdialog");R.appendChild(xa);H=document.createElement("span");mxUtils.write(H,mxResources.get("printAllPages"));R.appendChild(H);mxUtils.br(R);var ta=xa.cloneNode(!0);xa.setAttribute("checked",
+"checked");ta.setAttribute("value","range");R.appendChild(ta);H=document.createElement("span");mxUtils.write(H,mxResources.get("pages")+":");R.appendChild(H);var Aa=document.createElement("input");Aa.style.cssText="margin:0 8px 0 8px;";Aa.setAttribute("value","1");Aa.setAttribute("type","number");Aa.setAttribute("min","1");Aa.style.width="50px";R.appendChild(Aa);H=document.createElement("span");mxUtils.write(H,mxResources.get("to"));R.appendChild(H);var Ca=Aa.cloneNode(!0);R.appendChild(Ca);mxEvent.addListener(Aa,
+"focus",function(){ta.checked=!0});mxEvent.addListener(Ca,"focus",function(){ta.checked=!0});mxEvent.addListener(Aa,"change",P);mxEvent.addListener(Ca,"change",P);if(null!=u.pages&&(ma=u.pages.length,null!=u.currentPage))for(H=0;H<u.pages.length;H++)if(u.currentPage==u.pages[H]){ra=H+1;Aa.value=ra;Ca.value=ra;break}Aa.setAttribute("max",ma);Ca.setAttribute("max",ma);u.isPagesEnabled()?1<ma&&(da.appendChild(R),ta.checked=!0):ta.checked=!0;mxUtils.br(R);var Ba=document.createElement("input");Ba.setAttribute("value",
+"all");Ba.setAttribute("type","radio");Ba.style.marginRight="8px";S.isSelectionEmpty()&&Ba.setAttribute("disabled","disabled");var sa=document.createElement("div");sa.style.marginBottom="10px";1==ma?(Ba.setAttribute("type","checkbox"),Ba.style.marginBottom="12px",sa.appendChild(Ba)):(Ba.setAttribute("name","pages-printdialog"),Ba.style.marginBottom="8px",R.appendChild(Ba));H=document.createElement("span");mxUtils.write(H,mxResources.get("selectionOnly"));Ba.parentNode.appendChild(H);1==ma&&mxUtils.br(Ba.parentNode);
+var Pa=document.createElement("input");Pa.style.marginRight="8px";Pa.setAttribute("value","adjust");Pa.setAttribute("type","radio");Pa.setAttribute("name","printZoom");sa.appendChild(Pa);H=document.createElement("span");mxUtils.write(H,mxResources.get("adjustTo"));sa.appendChild(H);var Ta=document.createElement("input");Ta.style.cssText="margin:0 8px 0 8px;";Ta.setAttribute("value","100 %");Ta.style.width="50px";sa.appendChild(Ta);mxEvent.addListener(Ta,"focus",function(){Pa.checked=!0});da.appendChild(sa);
+R=R.cloneNode(!1);var Oa=Pa.cloneNode(!0);Oa.setAttribute("value","fit");Pa.setAttribute("checked","checked");H=document.createElement("div");H.style.cssText="display:inline-block;vertical-align:top;padding-top:2px;";H.appendChild(Oa);R.appendChild(H);sa=document.createElement("table");sa.style.display="inline-block";var Xa=document.createElement("tbody"),Ga=document.createElement("tr"),eb=Ga.cloneNode(!0),bb=document.createElement("td"),z=bb.cloneNode(!0),K=bb.cloneNode(!0),M=bb.cloneNode(!0),U=
+bb.cloneNode(!0),W=bb.cloneNode(!0);bb.style.textAlign="right";M.style.textAlign="right";mxUtils.write(bb,mxResources.get("fitTo"));var ha=document.createElement("input");ha.style.cssText="margin:0 8px 0 8px;";ha.setAttribute("value","1");ha.setAttribute("min","1");ha.setAttribute("type","number");ha.style.width="40px";z.appendChild(ha);H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsAcross"));K.appendChild(H);mxUtils.write(M,mxResources.get("fitToBy"));var na=ha.cloneNode(!0);
+U.appendChild(na);mxEvent.addListener(ha,"focus",function(){Oa.checked=!0});mxEvent.addListener(na,"focus",function(){Oa.checked=!0});H=document.createElement("span");mxUtils.write(H,mxResources.get("fitToSheetsDown"));W.appendChild(H);Ga.appendChild(bb);Ga.appendChild(z);Ga.appendChild(K);eb.appendChild(M);eb.appendChild(U);eb.appendChild(W);Xa.appendChild(Ga);Xa.appendChild(eb);sa.appendChild(Xa);R.appendChild(sa);da.appendChild(R);R=document.createElement("div");H=document.createElement("div");
+H.style.fontWeight="bold";H.style.marginBottom="12px";mxUtils.write(H,mxResources.get("paperSize"));R.appendChild(H);H=document.createElement("div");H.style.marginBottom="12px";var ua=PageSetupDialog.addPageFormatPanel(H,"printdialog",u.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);R.appendChild(H);H=document.createElement("span");mxUtils.write(H,mxResources.get("pageScale"));R.appendChild(H);var pa=document.createElement("input");pa.style.cssText="margin:0 8px 0 8px;";pa.setAttribute("value",
+"100 %");pa.style.width="60px";R.appendChild(pa);da.appendChild(R);H=document.createElement("div");H.style.cssText="text-align:right;margin:48px 0 0 0;";R=mxUtils.button(mxResources.get("cancel"),function(){u.hideDialog()});R.className="geBtn";u.editor.cancelFirst&&H.appendChild(R);u.isOffline()||(sa=mxUtils.button(mxResources.get("help"),function(){S.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),sa.className="geBtn",H.appendChild(sa));PrintDialog.previewEnabled&&(sa=mxUtils.button(mxResources.get("preview"),
+function(){u.hideDialog();T(!1)}),sa.className="geBtn",H.appendChild(sa));sa=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){u.hideDialog();T(!0)});sa.className="geBtn gePrimaryBtn";H.appendChild(sa);u.editor.cancelFirst||H.appendChild(R);da.appendChild(H);this.container=da};var N=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||
+(this.page.viewState.background=this.color);if(!this.ignoreImage){var u=this.image;null!=u&&null!=u.src&&Graph.isPageLink(u.src)&&(u={originalSrc:u.src});this.page.viewState.backgroundImage=u}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else N.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"),la=new Image;la.onload=function(){try{ba.getContext("2d").drawImage(la,0,0);var u=ba.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=u&&6<u.length}catch(H){}};
+la.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(u){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};b.afterDecode=function(e,k,n){n.previousColor=n.color;n.previousImage=n.image;n.previousFormat=n.format;null!=n.foldingEnabled&&(n.foldingEnabled=!n.foldingEnabled);null!=n.mathEnabled&&(n.mathEnabled=!n.mathEnabled);null!=n.shadowVisible&&(n.shadowVisible=!n.shadowVisible);return n};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.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=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,k,n){n.ui=e.ui;return k};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="20.0.1";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&
"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,
mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(d,f,g,m,q,y,F){y=null!=y?y:0<=d.indexOf("NetworkError")||0<=d.indexOf("SecurityError")||0<=d.indexOf("NS_ERROR_FAILURE")||0<=d.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3371,7 +3373,7 @@ d;this.fireEvent(new mxEventObject("shareCursorPositionChanged"))};EditorUi.prot
this.editor.graph.defaultMathEnabled=d;this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(d){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(d){return this.isOfflineApp()||!navigator.onLine||!d&&("1"==urlParams.stealth||"1"==urlParams.lockdown)};EditorUi.prototype.isExternalDataComms=function(){return"1"!=urlParams.offline&&!this.isOffline()&&!this.isOfflineApp()};
EditorUi.prototype.createSpinner=function(d,f,g){var m=null==d||null==f;g=null!=g?g:24;var q=new Spinner({lines:12,length:g,width:Math.round(g/3),radius:Math.round(g/2),rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),y=q.spin;q.spin=function(C,I){var G=!1;this.active||(y.call(this,C),this.active=!0,null!=I&&(m&&(f=Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,d=document.body.clientWidth/2-2),G=document.createElement("div"),
G.style.position="absolute",G.style.whiteSpace="nowrap",G.style.background="#4B4243",G.style.color="white",G.style.fontFamily=Editor.defaultHtmlFont,G.style.fontSize="9pt",G.style.padding="6px",G.style.paddingLeft="10px",G.style.paddingRight="10px",G.style.zIndex=2E9,G.style.left=Math.max(0,d)+"px",G.style.top=Math.max(0,f+70)+"px",mxUtils.setPrefixedStyle(G.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(G.style,"transform","translate(-50%,-50%)"),Editor.isDarkMode()||mxUtils.setPrefixedStyle(G.style,
-"boxShadow","2px 2px 3px 0px #ddd"),"..."!=I.substring(I.length-3,I.length)&&"!"!=I.charAt(I.length-1)&&(I+="..."),G.innerHTML=I,C.appendChild(G),q.status=G),this.pause=mxUtils.bind(this,function(){var aa=function(){};this.active&&(aa=mxUtils.bind(this,function(){this.spin(C,I)}));this.stop();return aa}),G=!0);return G};var F=q.stop;q.stop=function(){F.call(this);this.active=!1;null!=q.status&&null!=q.status.parentNode&&q.status.parentNode.removeChild(q.status);q.status=null};q.pause=function(){return function(){}};
+"boxShadow","2px 2px 3px 0px #ddd"),"..."!=I.substring(I.length-3,I.length)&&"!"!=I.charAt(I.length-1)&&(I+="..."),G.innerHTML=I,C.appendChild(G),q.status=G),this.pause=mxUtils.bind(this,function(){var Z=function(){};this.active&&(Z=mxUtils.bind(this,function(){this.spin(C,I)}));this.stop();return Z}),G=!0);return G};var F=q.stop;q.stop=function(){F.call(this);this.active=!1;null!=q.status&&null!=q.status.parentNode&&q.status.parentNode.removeChild(q.status);q.status=null};q.pause=function(){return function(){}};
return q};EditorUi.prototype.isCompatibleString=function(d){try{var f=mxUtils.parseXml(d),g=this.editor.extractGraphModel(f.documentElement,!0);return null!=g&&0==g.getElementsByTagName("parsererror").length}catch(m){}return!1};EditorUi.prototype.isVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&
3==d.charCodeAt(2)&&4==d.charCodeAt(3)||80==d.charCodeAt(0)&&75==d.charCodeAt(1)&&3==d.charCodeAt(2)&&6==d.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=function(d){return 8<d.length&&(208==d.charCodeAt(0)&&207==d.charCodeAt(1)&&17==d.charCodeAt(2)&&224==d.charCodeAt(3)&&161==d.charCodeAt(4)&&177==d.charCodeAt(5)&&26==d.charCodeAt(6)&&225==d.charCodeAt(7)||60==d.charCodeAt(0)&&63==d.charCodeAt(1)&&120==d.charCodeAt(2)&&109==d.charCodeAt(3)&&108==d.charCodeAt(3))};var b=EditorUi.prototype.createKeyHandler;
EditorUi.prototype.createKeyHandler=function(d){var f=b.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var g=f.getFunction,m=this.editor.graph,q=this;f.getFunction=function(y){if(m.isSelectionEmpty()&&null!=q.pages&&0<q.pages.length){var F=q.getSelectedPageIndex();if(mxEvent.isShiftDown(y)){if(37==y.keyCode)return function(){0<F&&q.movePage(F,F-1)};if(38==y.keyCode)return function(){0<F&&q.movePage(F,0)};if(39==y.keyCode)return function(){F<q.pages.length-1&&q.movePage(F,
@@ -3380,10 +3382,10 @@ var e=EditorUi.prototype.extractGraphModelFromHtml;EditorUi.prototype.extractGra
y?mxUtils.getXml(y):""}}catch(F){}return f};EditorUi.prototype.validateFileData=function(d){if(null!=d&&0<d.length){var f=d.indexOf('<meta charset="utf-8">');0<=f&&(d=d.slice(0,f)+'<meta charset="utf-8"/>'+d.slice(f+23-1,d.length));d=Graph.zapGremlins(d)}return d};EditorUi.prototype.replaceFileData=function(d){d=this.validateFileData(d);d=null!=d&&0<d.length?mxUtils.parseXml(d).documentElement:null;var f=null!=d?this.editor.extractGraphModel(d,!0):null;null!=f&&(d=f);if(null!=d){f=this.editor.graph;
f.model.beginUpdate();try{var g=null!=this.pages?this.pages.slice():null,m=d.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<m.length||1==m.length&&m[0].hasAttribute("name")){this.fileNode=d;this.pages=null!=this.pages?this.pages:[];for(var q=m.length-1;0<=q;q--){var y=this.updatePageRoot(new DiagramPage(m[q]));null==y.getName()&&y.setName(mxResources.get("pageWithNumber",[q+1]));f.model.execute(new ChangePage(this,y,0==q?y:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=
d.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(d.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),f.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(d),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=g)for(q=0;q<g.length;q++)f.model.execute(new ChangePage(this,g[q],null))}finally{f.model.endUpdate()}}};EditorUi.prototype.createFileData=
-function(d,f,g,m,q,y,F,C,I,G,aa){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;I=null!=I?I:!0;var ca=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var ba="_blank";else ca=ba=m;if(null==d)return"";var Z=d;if("mxfile"!=Z.nodeName.toLowerCase()){if(aa){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Z=Graph.compress(qa);if(Graph.decompress(Z)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
-qa.setAttribute("id",Editor.guid());mxUtils.setTextContent(qa,Z)}Z=d.ownerDocument.createElement("mxfile");Z.appendChild(qa)}G?(Z=Z.cloneNode(!0),Z.removeAttribute("modified"),Z.removeAttribute("host"),Z.removeAttribute("agent"),Z.removeAttribute("etag"),Z.removeAttribute("userAgent"),Z.removeAttribute("version"),Z.removeAttribute("editor"),Z.removeAttribute("type")):(Z.removeAttribute("userAgent"),Z.removeAttribute("version"),Z.removeAttribute("editor"),Z.removeAttribute("pages"),Z.removeAttribute("type"),
-mxClient.IS_CHROMEAPP?Z.setAttribute("host","Chrome"):EditorUi.isElectronApp?Z.setAttribute("host","Electron"):Z.setAttribute("host",window.location.hostname),Z.setAttribute("modified",(new Date).toISOString()),Z.setAttribute("agent",navigator.appVersion),Z.setAttribute("version",EditorUi.VERSION),Z.setAttribute("etag",Editor.guid()),d=null!=g?g.getMode():this.mode,null!=d&&Z.setAttribute("type",d),1<Z.getElementsByTagName("diagram").length&&null!=this.pages&&Z.setAttribute("pages",this.pages.length));
-aa=aa?mxUtils.getPrettyXml(Z):mxUtils.getXml(Z);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))aa=this.getHtml2(mxUtils.getXml(Z),f,null!=g?g.getTitle():null,ba,ca);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(m=null),aa=this.getEmbeddedSvg(aa,f,m,null,C,I,ca);return aa};EditorUi.prototype.getXmlFileData=function(d,f,g,m){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
+function(d,f,g,m,q,y,F,C,I,G,Z){f=null!=f?f:this.editor.graph;q=null!=q?q:!1;I=null!=I?I:!0;var ca=null;if(null==g||g.getMode()==App.MODE_DEVICE||g.getMode()==App.MODE_BROWSER)var aa="_blank";else ca=aa=m;if(null==d)return"";var Y=d;if("mxfile"!=Y.nodeName.toLowerCase()){if(Z){var qa=d.ownerDocument.createElement("diagram");qa.setAttribute("id",Editor.guid());qa.appendChild(d)}else{qa=Graph.zapGremlins(mxUtils.getXml(d));Y=Graph.compress(qa);if(Graph.decompress(Y)!=qa)return qa;qa=d.ownerDocument.createElement("diagram");
+qa.setAttribute("id",Editor.guid());mxUtils.setTextContent(qa,Y)}Y=d.ownerDocument.createElement("mxfile");Y.appendChild(qa)}G?(Y=Y.cloneNode(!0),Y.removeAttribute("modified"),Y.removeAttribute("host"),Y.removeAttribute("agent"),Y.removeAttribute("etag"),Y.removeAttribute("userAgent"),Y.removeAttribute("version"),Y.removeAttribute("editor"),Y.removeAttribute("type")):(Y.removeAttribute("userAgent"),Y.removeAttribute("version"),Y.removeAttribute("editor"),Y.removeAttribute("pages"),Y.removeAttribute("type"),
+mxClient.IS_CHROMEAPP?Y.setAttribute("host","Chrome"):EditorUi.isElectronApp?Y.setAttribute("host","Electron"):Y.setAttribute("host",window.location.hostname),Y.setAttribute("modified",(new Date).toISOString()),Y.setAttribute("agent",navigator.appVersion),Y.setAttribute("version",EditorUi.VERSION),Y.setAttribute("etag",Editor.guid()),d=null!=g?g.getMode():this.mode,null!=d&&Y.setAttribute("type",d),1<Y.getElementsByTagName("diagram").length&&null!=this.pages&&Y.setAttribute("pages",this.pages.length));
+Z=Z?mxUtils.getPrettyXml(Y):mxUtils.getXml(Y);if(!y&&!q&&(F||null!=g&&/(\.html)$/i.test(g.getTitle())))Z=this.getHtml2(mxUtils.getXml(Y),f,null!=g?g.getTitle():null,aa,ca);else if(y||!q&&null!=g&&/(\.svg)$/i.test(g.getTitle()))null==g||g.getMode()!=App.MODE_DEVICE&&g.getMode()!=App.MODE_BROWSER||(m=null),Z=this.getEmbeddedSvg(Z,f,m,null,C,I,ca);return Z};EditorUi.prototype.getXmlFileData=function(d,f,g,m){d=null!=d?d:!0;f=null!=f?f:!1;g=null!=g?g:!Editor.compressXml;var q=this.editor.getGraphXml(d,
m);if(d&&null!=this.fileNode&&null!=this.currentPage)if(d=function(I){var G=I.getElementsByTagName("mxGraphModel");G=0<G.length?G[0]:null;null==G&&g?(G=mxUtils.trim(mxUtils.getTextContent(I)),I=I.cloneNode(!1),0<G.length&&(G=Graph.decompress(G),null!=G&&0<G.length&&I.appendChild(mxUtils.parseXml(G).documentElement))):null==G||g?I=I.cloneNode(!0):(I=I.cloneNode(!1),mxUtils.setTextContent(I,Graph.compressNode(G)));q.appendChild(I)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(q)),q=this.fileNode.cloneNode(!1),f)d(this.currentPage.node);else for(f=0;f<this.pages.length;f++){var y=this.pages[f],F=y.node;if(y!=this.currentPage)if(y.needsUpdate){var C=new mxCodec(mxUtils.createXmlDocument());C=C.encode(new mxGraphModel(y.root));this.editor.graph.saveViewState(y.viewState,C,null,m);EditorUi.removeChildNodes(F);mxUtils.setTextContent(F,Graph.compressNode(C));delete y.needsUpdate}else m&&(this.updatePageRoot(y),null!=y.viewState.backgroundImage&&(null!=y.viewState.backgroundImage.originalSrc?
y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.originalSrc,y):Graph.isPageLink(y.viewState.backgroundImage.src)&&(y.viewState.backgroundImage=this.createImageForPageLink(y.viewState.backgroundImage.src,y))),null!=y.viewState.backgroundImage&&null!=y.viewState.backgroundImage.originalSrc&&(C=new mxCodec(mxUtils.createXmlDocument()),C=C.encode(new mxGraphModel(y.root)),this.editor.graph.saveViewState(y.viewState,C,null,m),F=F.cloneNode(!1),mxUtils.setTextContent(F,
@@ -3393,9 +3395,9 @@ function(d){if(null!=d[EditorUi.DIFF_INSERT])for(var f=0;f<d[EditorUi.DIFF_INSER
delete d[EditorUi.DIFF_UPDATE][m]}mxUtils.isEmptyObject(d[EditorUi.DIFF_UPDATE])&&delete d[EditorUi.DIFF_UPDATE]}return d};EditorUi.prototype.anonymizeAttributes=function(d,f){if(null!=d.attributes)for(var g=0;g<d.attributes.length;g++)"as"!=d.attributes[g].name&&d.setAttribute(d.attributes[g].name,this.anonymizeString(d.attributes[g].value,f));if(null!=d.childNodes)for(g=0;g<d.childNodes.length;g++)this.anonymizeAttributes(d.childNodes[g],f)};EditorUi.prototype.anonymizeNode=function(d,f){f=d.getElementsByTagName("mxCell");
for(var g=0;g<f.length;g++)null!=f[g].getAttribute("value")&&f[g].setAttribute("value","["+f[g].getAttribute("value").length+"]"),null!=f[g].getAttribute("xmlValue")&&f[g].setAttribute("xmlValue","["+f[g].getAttribute("xmlValue").length+"]"),null!=f[g].getAttribute("style")&&f[g].setAttribute("style","["+f[g].getAttribute("style").length+"]"),null!=f[g].parentNode&&"root"!=f[g].parentNode.nodeName&&null!=f[g].parentNode.parentNode&&(f[g].setAttribute("id",f[g].parentNode.getAttribute("id")),f[g].parentNode.parentNode.replaceChild(f[g],
f[g].parentNode));return d};EditorUi.prototype.synchronizeCurrentFile=function(d){var f=this.getCurrentFile();null!=f&&(f.savingFile?this.handleError({message:mxResources.get("busy")}):!d&&f.invalidChecksum?f.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(f.clearAutosave(),this.editor.setStatus(""),d?f.reloadFile(mxUtils.bind(this,function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)})):f.synchronizeFile(mxUtils.bind(this,
-function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,m,q,y,F,C,I,G,aa){q=null!=q?q:!0;y=null!=y?y:!1;var ca=this.editor.graph;if(f||!d&&null!=I&&/(\.svg)$/i.test(I.getTitle())){var ba=null!=ca.themes&&"darkTheme"==ca.defaultThemeName;G=!1;if(ba||null!=this.pages&&this.currentPage!=this.pages[0]){var Z=ca.getGlobalVariable;ca=this.createTemporaryGraph(ba?ca.getDefaultStylesheet():ca.getStylesheet());
-ca.setBackgroundImage=this.editor.graph.setBackgroundImage;ca.background=this.editor.graph.background;var qa=this.pages[0];this.currentPage==qa?ca.setBackgroundImage(this.editor.graph.backgroundImage):null!=qa.viewState&&null!=qa.viewState&&ca.setBackgroundImage(qa.viewState.backgroundImage);ca.getGlobalVariable=function(N){return"page"==N?qa.getName():"pagenumber"==N?1:Z.apply(this,arguments)};document.body.appendChild(ca.container);ca.model.setRoot(qa.root)}}F=null!=F?F:this.getXmlFileData(q,y,
-G,aa);I=null!=I?I:this.getCurrentFile();d=this.createFileData(F,ca,I,window.location.href,d,f,g,m,q,C,G);ca!=this.editor.graph&&ca.container.parentNode.removeChild(ca.container);return d};EditorUi.prototype.getHtml=function(d,f,g,m,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var I=f.view.scale;y=Math.floor(F.x/I-f.view.translate.x);I=Math.floor(F.y/I-f.view.translate.y);F=f.background;null==
+function(){f.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(g){f.handleFileError(g,!0)}))))};EditorUi.prototype.getFileData=function(d,f,g,m,q,y,F,C,I,G,Z){q=null!=q?q:!0;y=null!=y?y:!1;var ca=this.editor.graph;if(f||!d&&null!=I&&/(\.svg)$/i.test(I.getTitle())){var aa=null!=ca.themes&&"darkTheme"==ca.defaultThemeName;G=!1;if(aa||null!=this.pages&&this.currentPage!=this.pages[0]){var Y=ca.getGlobalVariable;ca=this.createTemporaryGraph(aa?ca.getDefaultStylesheet():ca.getStylesheet());
+ca.setBackgroundImage=this.editor.graph.setBackgroundImage;ca.background=this.editor.graph.background;var qa=this.pages[0];this.currentPage==qa?ca.setBackgroundImage(this.editor.graph.backgroundImage):null!=qa.viewState&&null!=qa.viewState&&ca.setBackgroundImage(qa.viewState.backgroundImage);ca.getGlobalVariable=function(Q){return"page"==Q?qa.getName():"pagenumber"==Q?1:Y.apply(this,arguments)};document.body.appendChild(ca.container);ca.model.setRoot(qa.root)}}F=null!=F?F:this.getXmlFileData(q,y,
+G,Z);I=null!=I?I:this.getCurrentFile();d=this.createFileData(F,ca,I,window.location.href,d,f,g,m,q,C,G);ca!=this.editor.graph&&ca.container.parentNode.removeChild(ca.container);return d};EditorUi.prototype.getHtml=function(d,f,g,m,q,y){y=null!=y?y:!0;var F=null,C=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=f){F=y?f.getGraphBounds():f.getBoundingBox(f.getSelectionCells());var I=f.view.scale;y=Math.floor(F.x/I-f.view.translate.x);I=Math.floor(F.y/I-f.view.translate.y);F=f.background;null==
q&&(f=this.getBasenames().join(";"),0<f.length&&(C=EditorUi.drawHost+"/embed.js?s="+f));d.setAttribute("x0",y);d.setAttribute("y0",I)}null!=d&&(d.setAttribute("pan","1"),d.setAttribute("zoom","1"),d.setAttribute("resize","0"),d.setAttribute("fit","0"),d.setAttribute("border","20"),d.setAttribute("links","1"),null!=m&&d.setAttribute("edit",m));null!=q&&(q=q.replace(/&/g,"&amp;"));d=null!=d?Graph.zapGremlins(mxUtils.getXml(d)):"";m=Graph.compress(d);Graph.decompress(m)!=d&&(m=encodeURIComponent(d));
return(null==q?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=q?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==q?null!=g?"<title>"+mxUtils.htmlEntities(g)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=q?'<meta http-equiv="refresh" content="0;URL=\''+q+"'\"/>\n":"")+"</head>\n<body"+(null==q&&null!=F&&F!=mxConstants.NONE?' style="background-color:'+F+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+
m+"</div>\n</div>\n"+(null==q?'<script type="text/javascript" src="'+C+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+q+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(d,f,g,m,q){f=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=q&&(q=q.replace(/&/g,"&amp;"));d={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,
@@ -3405,19 +3407,19 @@ function(d){d=this.validateFileData(d);this.pages=this.fileNode=this.currentPage
"0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name"))){g=null;this.fileNode=f;this.pages=[];for(var m=0;m<d.length;m++)null==d[m].getAttribute("id")&&d[m].setAttribute("id",m),f=new DiagramPage(d[m]),null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[m+1])),this.pages.push(f),null!=urlParams["page-id"]&&f.getId()==urlParams["page-id"]&&(g=f);this.currentPage=null!=g?g:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];f=this.currentPage.node}"0"!=
urlParams.pages&&null==this.fileNode&&null!=f&&(this.fileNode=f.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(f.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(f);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var q=urlParams["layer-ids"].split(" ");f={};for(m=0;m<q.length;m++)f[q[m]]=!0;var y=this.editor.graph.getModel(),
F=y.getChildren(y.root);for(m=0;m<F.length;m++){var C=F[m];y.setVisible(C,f[C.id]||!1)}}catch(I){}};EditorUi.prototype.getBaseFilename=function(d){var f=this.getCurrentFile();f=null!=f&&null!=f.getTitle()?f.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(f)||/(\.html)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.png)$/i.test(f))f=f.substring(0,f.lastIndexOf("."));/(\.drawio)$/i.test(f)&&(f=f.substring(0,f.lastIndexOf(".")));!d&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&
-0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,I,G,aa,ca){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var ba=this.getBaseFilename("remoteSvg"==d?!1:!q),Z=ba+("xml"==d||"pdf"==d&&aa?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Z,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
-ba),this.saveData(Z,d,qa,"text/html");else if("svg"!=d&&"xmlsvg"!=d||!this.spinner.spin(document.body,mxResources.get("export"))){if("xmlpng"==d)Z=ba+".png";else if("jpeg"==d)Z=ba+".jpg";else if("remoteSvg"==d){Z=ba+".svg";d="svg";var N=parseInt(I);"string"===typeof C&&0<C.indexOf("%")&&(C=parseInt(C)/100);if(0<N){var Y=this.editor.graph,ea=Y.getGraphBounds();var ka=Math.ceil(ea.width*C/Y.view.scale+2*N);var ja=Math.ceil(ea.height*C/Y.view.scale+2*N)}}this.saveRequest(Z,d,mxUtils.bind(this,function(S,
-ha){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var u=this.createDownloadRequest(S,d,m,ha,F,q,C,I,G,aa,ca,ka,ja);this.editor.graph.pageVisible=la;return u}catch(H){this.handleError(H)}}))}else{var V=null,J=mxUtils.bind(this,function(S){S.length<=MAX_REQUEST_SIZE?this.saveData(Z,"svg",S,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});if("svg"==d){var W=this.editor.graph.background;
-if(F||W==mxConstants.NONE)W=null;var Q=this.editor.graph.getSvg(W,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(Q);this.editor.convertImages(Q,mxUtils.bind(this,mxUtils.bind(this,function(S){this.spinner.stop();J(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(S))})))}else Z=ba+".svg",V=this.getFileData(!1,!0,null,mxUtils.bind(this,function(S){this.spinner.stop();J(S)}),m)}}catch(S){this.handleError(S)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,C,I,
-G,aa,ca,ba){var Z=this.editor.graph,qa=Z.getGraphBounds();g=this.getFileData(!0,null,null,null,g,0==y?!1:"xmlpng"!=f,null,null,null,!1,"pdf"==f);var N="",Y="";if(qa.width*qa.height>MAX_AREA||g.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};G=G?"1":"0";"pdf"==f&&(null!=aa?Y="&from="+aa.from+"&to="+aa.to:0==y&&(Y="&allPages=1"));"xmlpng"==f&&(G="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(y=0;y<this.pages.length;y++)if(this.pages[y]==
-this.currentPage){N="&from="+y;break}y=Z.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Z.getExportVariables()};I&&(q.grid={size:Z.gridSize,steps:Z.view.gridSteps,color:Z.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+N+Y+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
-"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(ca&&isFinite(ca)?"&w="+ca:"")+(ba&&isFinite(ba)?"&h="+ba:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var m=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
+0<this.currentPage.getName().length&&(f=f+"-"+this.currentPage.getName());return f};EditorUi.prototype.downloadFile=function(d,f,g,m,q,y,F,C,I,G,Z,ca){try{m=null!=m?m:this.editor.graph.isSelectionEmpty();var aa=this.getBaseFilename("remoteSvg"==d?!1:!q),Y=aa+("xml"==d||"pdf"==d&&Z?".drawio":"")+"."+d;if("xml"==d){var qa=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,m,q,null,null,null,f);this.saveData(Y,d,qa,"text/xml")}else if("html"==d)qa=this.getHtml2(this.getFileData(!0),this.editor.graph,
+aa),this.saveData(Y,d,qa,"text/html");else if("svg"!=d&&"xmlsvg"!=d||!this.spinner.spin(document.body,mxResources.get("export"))){if("xmlpng"==d)Y=aa+".png";else if("jpeg"==d)Y=aa+".jpg";else if("remoteSvg"==d){Y=aa+".svg";d="svg";var Q=parseInt(I);"string"===typeof C&&0<C.indexOf("%")&&(C=parseInt(C)/100);if(0<Q){var X=this.editor.graph,fa=X.getGraphBounds();var ka=Math.ceil(fa.width*C/X.view.scale+2*Q);var ia=Math.ceil(fa.height*C/X.view.scale+2*Q)}}this.saveRequest(Y,d,mxUtils.bind(this,function(N,
+ba){try{var la=this.editor.graph.pageVisible;0==y&&(this.editor.graph.pageVisible=y);var u=this.createDownloadRequest(N,d,m,ba,F,q,C,I,G,Z,ca,ka,ia);this.editor.graph.pageVisible=la;return u}catch(H){this.handleError(H)}}))}else{var V=null,L=mxUtils.bind(this,function(N){N.length<=MAX_REQUEST_SIZE?this.saveData(Y,"svg",N,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});if("svg"==d){var ea=this.editor.graph.background;
+if(F||ea==mxConstants.NONE)ea=null;var O=this.editor.graph.getSvg(ea,null,null,null,null,m);g&&this.editor.graph.addSvgShadow(O);this.editor.convertImages(O,mxUtils.bind(this,mxUtils.bind(this,function(N){this.spinner.stop();L(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(N))})))}else Y=aa+".svg",V=this.getFileData(!1,!0,null,mxUtils.bind(this,function(N){this.spinner.stop();L(N)}),m)}}catch(N){this.handleError(N)}};EditorUi.prototype.createDownloadRequest=function(d,f,g,m,q,y,F,
+C,I,G,Z,ca,aa){var Y=this.editor.graph,qa=Y.getGraphBounds();g=this.getFileData(!0,null,null,null,g,0==y?!1:"xmlpng"!=f,null,null,null,!1,"pdf"==f);var Q="",X="";if(qa.width*qa.height>MAX_AREA||g.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};G=G?"1":"0";"pdf"==f&&(null!=Z?X="&from="+Z.from+"&to="+Z.to:0==y&&(X="&allPages=1"));"xmlpng"==f&&(G="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(y=0;y<this.pages.length;y++)if(this.pages[y]==
+this.currentPage){Q="&from="+y;break}y=Y.background;"png"!=f&&"pdf"!=f&&"svg"!=f||!q?q||null!=y&&y!=mxConstants.NONE||(y="#ffffff"):y=mxConstants.NONE;q={globalVars:Y.getExportVariables()};I&&(q.grid={size:Y.gridSize,steps:Y.view.gridSteps,color:Y.view.gridColor});Graph.translateDiagram&&(q.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+f+Q+X+"&bg="+(null!=y?y:mxConstants.NONE)+"&base64="+m+"&embedXml="+G+"&xml="+encodeURIComponent(g)+(null!=d?"&filename="+encodeURIComponent(d):
+"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(null!=F?"&scale="+F:"")+(null!=C?"&border="+C:"")+(ca&&isFinite(ca)?"&w="+ca:"")+(aa&&isFinite(aa)?"&h="+aa:""))};EditorUi.prototype.setMode=function(d,f){this.mode=d};EditorUi.prototype.loadDescriptor=function(d,f,g){var m=window.location.hash,q=mxUtils.bind(this,function(y){var F=null!=d.data?d.data:"";null!=y&&0<y.length&&(0<F.length&&(F+="\n"),F+=y);y=new LocalFile(this,"csv"!=d.format&&0<F.length?F:this.emptyDiagramXml,null!=urlParams.title?
decodeURIComponent(urlParams.title):this.defaultFilename,!0);y.getHash=function(){return m};this.fileLoaded(y);"csv"==d.format&&this.importCsv(F,mxUtils.bind(this,function(ca){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=d.update){var C=null!=d.interval?parseInt(d.interval):6E4,I=null,G=mxUtils.bind(this,function(){var ca=this.currentPage;mxUtils.post(d.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,
-function(ba){ca===this.currentPage&&(200<=ba.getStatus()&&300>=ba.getStatus()?(this.updateDiagram(ba.getText()),aa()):this.handleError({message:mxResources.get("error")+" "+ba.getStatus()}))}),mxUtils.bind(this,function(ba){this.handleError(ba)}))}),aa=mxUtils.bind(this,function(){window.clearTimeout(I);I=window.setTimeout(G,C)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){aa();G()}));aa();G()}null!=f&&f()});null!=d.url&&0<d.url.length?this.editor.loadUrl(d.url,mxUtils.bind(this,
-function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ja){var V=new mxCellOverlay(ja.image||q.warningImage,ja.tooltip,ja.align,ja.valign,ja.offset);V.addListener(mxEvent.CLICK,function(J,W){m.alert(ja.tooltip)});return V}var g=null,m=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
-d.firstChild;null!=d;){if("update"==d.nodeName){var C=y.getCell(d.getAttribute("id"));if(null!=C){try{var I=d.getAttribute("value");if(null!=I){var G=mxUtils.parseXml(I).documentElement;if(null!=G)if("1"==G.getAttribute("replace-value"))y.setValue(C,G);else for(var aa=G.attributes,ca=0;ca<aa.length;ca++)q.setAttributeForCell(C,aa[ca].nodeName,0<aa[ca].nodeValue.length?aa[ca].nodeValue:null)}}catch(ja){null!=window.console&&console.log("Error in value for "+C.id+": "+ja)}try{var ba=d.getAttribute("style");
-null!=ba&&q.model.setStyle(C,ba)}catch(ja){null!=window.console&&console.log("Error in style for "+C.id+": "+ja)}try{var Z=d.getAttribute("icon");if(null!=Z){var qa=0<Z.length?JSON.parse(Z):null;null!=qa&&qa.append||q.removeCellOverlays(C);null!=qa&&q.addCellOverlay(C,f(qa))}}catch(ja){null!=window.console&&console.log("Error in icon for "+C.id+": "+ja)}try{var N=d.getAttribute("geometry");if(null!=N){N=JSON.parse(N);var Y=q.getCellGeometry(C);if(null!=Y){Y=Y.clone();for(key in N){var ea=parseFloat(N[key]);
-"dx"==key?Y.x+=ea:"dy"==key?Y.y+=ea:"dw"==key?Y.width+=ea:"dh"==key?Y.height+=ea:Y[key]=parseFloat(N[key])}q.model.setGeometry(C,Y)}}}catch(ja){null!=window.console&&console.log("Error in icon for "+C.id+": "+ja)}}}else if("model"==d.nodeName){for(var ka=d.firstChild;null!=ka&&ka.nodeType!=mxConstants.NODETYPE_ELEMENT;)ka=ka.nextSibling;null!=ka&&(new mxCodec(d.firstChild)).decode(ka,y)}else if("view"==d.nodeName){if(d.hasAttribute("scale")&&(q.view.scale=parseFloat(d.getAttribute("scale"))),d.hasAttribute("dx")||
+function(aa){ca===this.currentPage&&(200<=aa.getStatus()&&300>=aa.getStatus()?(this.updateDiagram(aa.getText()),Z()):this.handleError({message:mxResources.get("error")+" "+aa.getStatus()}))}),mxUtils.bind(this,function(aa){this.handleError(aa)}))}),Z=mxUtils.bind(this,function(){window.clearTimeout(I);I=window.setTimeout(G,C)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){Z();G()}));Z();G()}null!=f&&f()});null!=d.url&&0<d.url.length?this.editor.loadUrl(d.url,mxUtils.bind(this,
+function(y){q(y)}),mxUtils.bind(this,function(y){null!=g&&g(y)})):q("")};EditorUi.prototype.updateDiagram=function(d){function f(ia){var V=new mxCellOverlay(ia.image||q.warningImage,ia.tooltip,ia.align,ia.valign,ia.offset);V.addListener(mxEvent.CLICK,function(L,ea){m.alert(ia.tooltip)});return V}var g=null,m=this;if(null!=d&&0<d.length&&(g=mxUtils.parseXml(d),d=null!=g?g.documentElement:null,null!=d&&"updates"==d.nodeName)){var q=this.editor.graph,y=q.getModel();y.beginUpdate();var F=null;try{for(d=
+d.firstChild;null!=d;){if("update"==d.nodeName){var C=y.getCell(d.getAttribute("id"));if(null!=C){try{var I=d.getAttribute("value");if(null!=I){var G=mxUtils.parseXml(I).documentElement;if(null!=G)if("1"==G.getAttribute("replace-value"))y.setValue(C,G);else for(var Z=G.attributes,ca=0;ca<Z.length;ca++)q.setAttributeForCell(C,Z[ca].nodeName,0<Z[ca].nodeValue.length?Z[ca].nodeValue:null)}}catch(ia){null!=window.console&&console.log("Error in value for "+C.id+": "+ia)}try{var aa=d.getAttribute("style");
+null!=aa&&q.model.setStyle(C,aa)}catch(ia){null!=window.console&&console.log("Error in style for "+C.id+": "+ia)}try{var Y=d.getAttribute("icon");if(null!=Y){var qa=0<Y.length?JSON.parse(Y):null;null!=qa&&qa.append||q.removeCellOverlays(C);null!=qa&&q.addCellOverlay(C,f(qa))}}catch(ia){null!=window.console&&console.log("Error in icon for "+C.id+": "+ia)}try{var Q=d.getAttribute("geometry");if(null!=Q){Q=JSON.parse(Q);var X=q.getCellGeometry(C);if(null!=X){X=X.clone();for(key in Q){var fa=parseFloat(Q[key]);
+"dx"==key?X.x+=fa:"dy"==key?X.y+=fa:"dw"==key?X.width+=fa:"dh"==key?X.height+=fa:X[key]=parseFloat(Q[key])}q.model.setGeometry(C,X)}}}catch(ia){null!=window.console&&console.log("Error in icon for "+C.id+": "+ia)}}}else if("model"==d.nodeName){for(var ka=d.firstChild;null!=ka&&ka.nodeType!=mxConstants.NODETYPE_ELEMENT;)ka=ka.nextSibling;null!=ka&&(new mxCodec(d.firstChild)).decode(ka,y)}else if("view"==d.nodeName){if(d.hasAttribute("scale")&&(q.view.scale=parseFloat(d.getAttribute("scale"))),d.hasAttribute("dx")||
d.hasAttribute("dy"))q.view.translate=new mxPoint(parseFloat(d.getAttribute("dx")||0),parseFloat(d.getAttribute("dy")||0))}else"fit"==d.nodeName&&(F=d.hasAttribute("max-scale")?parseFloat(d.getAttribute("max-scale")):1);d=d.nextSibling}}finally{y.endUpdate()}null!=F&&this.chromelessResize&&this.chromelessResize(!0,F)}return g};EditorUi.prototype.getCopyFilename=function(d,f){var g=null!=d&&null!=d.getTitle()?d.getTitle():this.defaultFilename;d="";var m=g.lastIndexOf(".");0<=m&&(d=g.substring(m),g=
g.substring(0,m));if(f){f=g;var q=new Date;g=q.getFullYear();m=q.getMonth()+1;var y=q.getDate(),F=q.getHours(),C=q.getMinutes();q=q.getSeconds();g=f+(" "+(g+"-"+m+"-"+y+"-"+F+"-"+C+"-"+q))}return g=mxResources.get("copyOf",[g])+d};EditorUi.prototype.fileLoaded=function(d,f){var g=this.getCurrentFile();this.fileEditable=this.fileLoadedError=null;this.setCurrentFile(null);var m=!1;this.hideDialog();null!=g&&(EditorUi.debug("File.closed",[g]),g.removeListener(this.descriptorChangedListener),g.close());
this.editor.graph.model.clear();this.editor.undoManager.clear();var q=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=g&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!f&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerText="",this.fname.setAttribute("title",mxResources.get("rename")));
@@ -3426,64 +3428,64 @@ this.updateUi();d.isEditable()?d.isModified()?(d.addUnsavedStatus(),null!=d.back
this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));m=!0;if(!this.isOffline()&&null!=d.getMode()){var y="1"==urlParams.sketch?"sketch":uiTheme;if(null==y)y="default";else if("sketch"==y||"min"==y)y+=Editor.isDarkMode()?"-dark":"-light";EditorUi.logEvent({category:d.getMode().toUpperCase()+"-OPEN-FILE-"+d.getHash(),action:"size_"+d.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")+"_theme_"+y})}EditorUi.debug("File.opened",[d]);"1"==urlParams.viewerOnlyMsg&&this.showAlert(mxResources.get("viewerOnlyMsg"));
if(this.editor.editable&&this.mode==d.getMode()&&d.getMode()!=App.MODE_DEVICE&&null!=d.getMode())try{this.addRecent({id:d.getHash(),title:d.getTitle(),mode:d.getMode()})}catch(F){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(F){}}catch(F){this.fileLoadedError=F;if(null!=d)try{d.close()}catch(C){}if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=d?d.getHash():"none"),action:"message_"+F.message,label:"stack_"+
F.stack})}catch(C){}d=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=g?this.fileLoaded(g)||q():q()});f?d():this.handleError(F,mxResources.get("errorLoadingFile"),d,!0,null,null,!0)}else q();return m};EditorUi.prototype.getHashValueForPages=function(d,f){var g=0,m=new mxGraphModel,q=new mxCodec;null!=f&&(f.byteCount=0,f.attrCount=0,f.eltCount=0,f.nodeCount=0);for(var y=0;y<d.length;y++){this.updatePageRoot(d[y]);
-var F=d[y].node.cloneNode(!1);F.removeAttribute("name");m.root=d[y].root;var C=q.encode(m);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(I,G,aa,ca){return!ca||"mxGeometry"!=I.nodeName&&"mxPoint"!=I.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?ca&&"mxCell"==I.nodeName&&
-"previous"==G?null:aa:Math.round(aa)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var m=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(m^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(m^=this.hashValue(y,
+var F=d[y].node.cloneNode(!1);F.removeAttribute("name");m.root=d[y].root;var C=q.encode(m);this.editor.graph.saveViewState(d[y].viewState,C,!0);C.removeAttribute("pageWidth");C.removeAttribute("pageHeight");F.appendChild(C);null!=f&&(f.eltCount+=F.getElementsByTagName("*").length,f.nodeCount+=F.getElementsByTagName("mxCell").length);g=(g<<5)-g+this.hashValue(F,function(I,G,Z,ca){return!ca||"mxGeometry"!=I.nodeName&&"mxPoint"!=I.nodeName||"x"!=G&&"y"!=G&&"width"!=G&&"height"!=G?ca&&"mxCell"==I.nodeName&&
+"previous"==G?null:Z:Math.round(Z)},f)<<0}return g};EditorUi.prototype.hashValue=function(d,f,g){var m=0;if(null!=d&&"object"===typeof d&&"number"===typeof d.nodeType&&"string"===typeof d.nodeName&&"function"===typeof d.getAttribute){null!=d.nodeName&&(m^=this.hashValue(d.nodeName,f,g));if(null!=d.attributes){null!=g&&(g.attrCount+=d.attributes.length);for(var q=0;q<d.attributes.length;q++){var y=d.attributes[q].name,F=null!=f?f(d,y,d.attributes[q].value,!0):d.attributes[q].value;null!=F&&(m^=this.hashValue(y,
f,g)+this.hashValue(F,f,g))}}if(null!=d.childNodes)for(q=0;q<d.childNodes.length;q++)m=(m<<5)-m+this.hashValue(d.childNodes[q],f,g)<<0}else if(null!=d&&"function"!==typeof d){d=String(d);f=0;null!=g&&(g.byteCount+=d.length);for(q=0;q<d.length;q++)f=(f<<5)-f+d.charCodeAt(q)<<0;m^=f}return m};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(d,f,g,m,q,y,F){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||
mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(d){null==d&&(d=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,d,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(d){var f=mxUtils.createXmlDocument(),g=f.createElement("mxlibrary");mxUtils.setTextContent(g,JSON.stringify(d));f.appendChild(g);
return mxUtils.getXml(f)};EditorUi.prototype.closeLibrary=function(d){null!=d&&(this.removeLibrarySidebar(d.getHash()),d.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(d.getHash()),".scratchpad"==d.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(d){var f=this.sidebar.palettes[d];if(null!=f){for(var g=0;g<f.length;g++)f[g].parentNode.removeChild(f[g]);delete this.sidebar.palettes[d]}};EditorUi.prototype.repositionLibrary=function(d){var f=this.sidebar.container;
if(null==d){var g=this.sidebar.palettes["L.scratchpad"];null==g&&(g=this.sidebar.palettes.search);null!=g&&(d=g[g.length-1].nextSibling)}d=null!=d?d:f.firstChild.nextSibling.nextSibling;g=f.lastChild;var m=g.previousSibling;f.insertBefore(g,d);f.insertBefore(m,g)};EditorUi.prototype.loadLibrary=function(d,f){var g=mxUtils.parseXml(d.getData());if("mxlibrary"==g.documentElement.nodeName){var m=JSON.parse(mxUtils.getTextContent(g.documentElement));this.libraryLoaded(d,m,g.documentElement.getAttribute("title"),
-f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,m){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ja){0==ka.length&&d.isEditable()?
-(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ja.appendChild(y)):this.addLibraryEntries(ka,ja)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=m?m:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var I=C.parentNode.previousSibling;m=I.getAttribute("title");
-null!=m&&0<m.length&&".scratchpad"!=d.title&&I.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+m);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";I.style.position="relative";var aa=document.createElement("img");aa.setAttribute("src",Editor.crossImage);aa.setAttribute("title",mxResources.get("close"));aa.setAttribute("valign","absmiddle");aa.setAttribute("border","0");aa.style.position=
-"relative";aa.style.top="2px";aa.style.width="14px";aa.style.cursor="pointer";aa.style.margin="0 3px";Editor.isDarkMode()&&(aa.style.filter="invert(100%)");var ca=null;if(".scratchpad"!=d.title||this.closableScratchpad)G.appendChild(aa),mxEvent.addListener(aa,"click",mxUtils.bind(this,function(ka){if(!mxEvent.isConsumed(ka)){var ja=mxUtils.bind(this,function(){this.closeLibrary(d)});null!=ca?this.confirm(mxResources.get("allChangesLost"),null,ja,mxResources.get("cancel"),mxResources.get("discardChanges")):
-ja();mxEvent.consume(ka)}}));if(d.isEditable()){var ba=this.editor.graph,Z=null,qa=mxUtils.bind(this,function(ka){this.showLibraryDialog(d.getTitle(),C,f,d,d.getMode());mxEvent.consume(ka)}),N=mxUtils.bind(this,function(ka){d.setModified(!0);d.isAutosave()?(null!=Z&&null!=Z.parentNode&&Z.parentNode.removeChild(Z),Z=aa.cloneNode(!1),Z.setAttribute("src",Editor.spinImage),Z.setAttribute("title",mxResources.get("saving")),Z.style.cursor="default",Z.style.marginRight="2px",Z.style.marginTop="-2px",G.insertBefore(Z,
-G.firstChild),I.style.paddingRight=18*G.childNodes.length+"px",this.saveLibrary(d.getTitle(),f,d,d.getMode(),!0,!0,function(){null!=Z&&null!=Z.parentNode&&(Z.parentNode.removeChild(Z),I.style.paddingRight=18*G.childNodes.length+"px")})):null==ca&&(ca=aa.cloneNode(!1),ca.setAttribute("src",Editor.saveImage),ca.setAttribute("title",mxResources.get("save")),G.insertBefore(ca,G.firstChild),mxEvent.addListener(ca,"click",mxUtils.bind(this,function(ja){this.saveLibrary(d.getTitle(),f,d,d.getMode(),d.constructor==
-LocalLibrary,!0,function(){null==ca||d.isModified()||(I.style.paddingRight=18*G.childNodes.length+"px",ca.parentNode.removeChild(ca),ca=null)});mxEvent.consume(ja)})),I.style.paddingRight=18*G.childNodes.length+"px")}),Y=mxUtils.bind(this,function(ka,ja,V,J){ka=ba.cloneCells(mxUtils.sortCells(ba.model.getTopmostCells(ka)));for(var W=0;W<ka.length;W++){var Q=ba.getCellGeometry(ka[W]);null!=Q&&Q.translate(-ja.x,-ja.y)}C.appendChild(this.sidebar.createVertexTemplateFromCells(ka,ja.width,ja.height,J||
-"",!0,null,!1));ka={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(ka))),w:ja.width,h:ja.height};null!=J&&(ka.title=J);f.push(ka);N(V);null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)}),ea=mxUtils.bind(this,function(ka){if(ba.isSelectionEmpty())ba.getRubberband().isActive()?(ba.getRubberband().execute(ka),ba.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var ja=ba.getSelectionCells(),
-V=ba.view.getBounds(ja),J=ba.view.scale;V.x/=J;V.y/=J;V.width/=J;V.height/=J;V.x-=ba.view.translate.x;V.y-=ba.view.translate.y;Y(ja,V)}mxEvent.consume(ka)});mxEvent.addGestureListeners(C,function(){},mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler.first&&(ba.graphHandler.suspend(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility="hidden"),C.style.backgroundColor="#f1f3f4",C.style.cursor="copy",ba.panningManager.stop(),ba.autoScroll=!1,
-mxEvent.consume(ka))}),mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.panningManager&&null!=ba.graphHandler&&(C.style.backgroundColor="",C.style.cursor="default",this.sidebar.showTooltips=!0,ba.panningManager.stop(),ba.graphHandler.reset(),ba.isMouseDown=!1,ba.autoScroll=!0,ea(ka),mxEvent.consume(ka))}));mxEvent.addListener(C,"mouseleave",mxUtils.bind(this,function(ka){ba.isMouseDown&&null!=ba.graphHandler.first&&(ba.graphHandler.resume(),null!=ba.graphHandler.hint&&(ba.graphHandler.hint.style.visibility=
-"visible"),C.style.backgroundColor="",C.style.cursor="",ba.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(C,"dragover",mxUtils.bind(this,function(ka){C.style.backgroundColor="#f1f3f4";ka.dataTransfer.dropEffect="copy";C.style.cursor="copy";this.sidebar.hideTooltip();ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"drop",mxUtils.bind(this,function(ka){C.style.cursor="";C.style.backgroundColor="";0<ka.dataTransfer.files.length&&this.importFiles(ka.dataTransfer.files,0,0,
-this.maxImageSize,mxUtils.bind(this,function(ja,V,J,W,Q,S,ha,la,u){if(null!=ja&&"image/"==V.substring(0,6))ja="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ja),ja=[new mxCell("",new mxGeometry(0,0,Q,S),ja)],ja[0].vertex=!0,Y(ja,new mxRectangle(0,0,Q,S),ka,mxEvent.isAltDown(ka)?null:ha.substring(0,ha.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var H=!1,O=
-mxUtils.bind(this,function(T,R){null!=T&&"application/pdf"==R&&(R=Editor.extractGraphModelFromPdf(T),null!=R&&0<R.length&&(T=R));if(null!=T)if(T=mxUtils.parseXml(T),"mxlibrary"==T.documentElement.nodeName)try{var da=JSON.parse(mxUtils.getTextContent(T.documentElement));F(da,C);f=f.concat(da);N(ka);this.spinner.stop();H=!0}catch(xa){}else if("mxfile"==T.documentElement.nodeName)try{var P=T.documentElement.getElementsByTagName("diagram");for(da=0;da<P.length;da++){var ma=this.stringToCells(Editor.getDiagramNodeXml(P[da])),
-ra=this.editor.graph.getBoundingBoxFromGeometry(ma);Y(ma,new mxRectangle(0,0,ra.width,ra.height),ka)}H=!0}catch(xa){null!=window.console&&console.log("error in drop handler:",xa)}H||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=u&&null!=ha&&(/(\.v(dx|sdx?))($|\?)/i.test(ha)||/(\.vs(x|sx?))($|\?)/i.test(ha))?this.importVisio(u,function(T){O(T,"text/xml")},null,ha):(new XMLHttpRequest).upload&&
-this.isRemoteFileFormat(ja,ha)&&null!=u?this.isExternalDataComms()?this.parseFile(u,mxUtils.bind(this,function(T){4==T.readyState&&(this.spinner.stop(),200<=T.status&&299>=T.status?O(T.responseText,"text/xml"):this.handleError({message:mxResources.get(413==T.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):O(ja,V)}}));ka.stopPropagation();ka.preventDefault()})),
-mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor="";ka.stopPropagation();ka.preventDefault()}));aa=aa.cloneNode(!1);aa.setAttribute("src",Editor.editImage);aa.setAttribute("title",mxResources.get("edit"));G.insertBefore(aa,G.firstChild);mxEvent.addListener(aa,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});m=aa.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,
-G.firstChild);mxEvent.addListener(m,"click",ea);this.isOffline()||".scratchpad"!=d.title||null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}I.appendChild(G);I.style.paddingRight=
-18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,
-m.w,m.h,m.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=d?d[mxLanguage]||d.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)}];"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(d,f,g,m,q,y,F){d=new ImageDialog(this,d,f,g,m,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,m){m||(g=new ChangePageSetup(this,null,g),
-g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,m,q){d=new LibraryDialog(this,d,f,g,m,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);
-this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(g){this.editor.graph.isSelectionEmpty()&&f.refresh()}));return f};EditorUi.prototype.createSidebarFooterContainer=function(){var d=this.createDiv("geSidebarContainer geSidebarFooter");d.style.position="absolute";d.style.overflow="hidden";var f=document.createElement("a");f.className="geTitle";f.style.color="#DF6C0C";f.style.fontWeight="bold";f.style.height="100%";f.style.paddingTop="9px";f.innerHTML="<span>+</span>";var g=
-f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(m){m.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(m){this.actions.get("shapes").funct();mxEvent.consume(m)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,m,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?
-this.spinner.pause():function(){},I=null!=d&&null!=d.error?d.error:d;if(null!=d&&("1"==urlParams.test||null!=d.stack)&&null!=d.message)try{F?null!=window.console&&console.error("EditorUi.handleError:",d):EditorUi.logError("Caught: "+(""==d.message&&null!=d.name)?d.name:d.message,d.filename,d.lineNumber,d.columnNumber,d,"INFO")}catch(Z){}if(null!=I||null!=f){F=mxUtils.htmlEntities(mxResources.get("unknownError"));var G=mxResources.get("ok"),aa=null;f=null!=f?f:mxResources.get("error");if(null!=I){null!=
-I.retry&&(G=mxResources.get("cancel"),aa=function(){C();I.retry()});if(404==I.code||404==I.status||403==I.code){F=403==I.code?null!=I.message?mxUtils.htmlEntities(I.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=q?q:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var ca=null!=q?null:null!=y?y:window.location.hash;if(null!=ca&&("#G"==ca.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==
-ca.substring(0,45))&&(null!=d&&null!=d.error&&(null!=d.error.errors&&0<d.error.errors.length&&"fileAccess"==d.error.errors[0].reason||null!=d.error.data&&0<d.error.data.length&&"fileAccess"==d.error.data[0].reason)||404==I.code||404==I.status)){ca="#U"==ca.substring(0,2)?ca.substring(45,ca.lastIndexOf("%26ex")):ca.substring(2);this.showError(f,F,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+ca);this.handleError(d,f,g,
-m,q)}),aa,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Z(){ea.innerText="";for(var ka=0;ka<qa.length;ka++){var ja=document.createElement("option");mxUtils.write(ja,qa[ka].displayName);ja.value=ka;ea.appendChild(ja);ja=document.createElement("option");ja.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ja,"<"+qa[ka].email+">");ja.setAttribute("disabled","disabled");ea.appendChild(ja)}ja=document.createElement("option");mxUtils.write(ja,mxResources.get("addAccount"));ja.value=qa.length;
-ea.appendChild(ja)}var qa=this.drive.getUsersList(),N=document.createElement("div"),Y=document.createElement("span");Y.style.marginTop="6px";mxUtils.write(Y,mxResources.get("changeUser")+": ");N.appendChild(Y);var ea=document.createElement("select");ea.style.width="200px";Z();mxEvent.addListener(ea,"change",mxUtils.bind(this,function(){var ka=ea.value,ja=qa.length!=ka;ja&&this.drive.setUser(qa[ka]);this.drive.authorize(ja,mxUtils.bind(this,function(){ja||(qa=this.drive.getUsersList(),Z())}),mxUtils.bind(this,
-function(V){this.handleError(V)}),!0)}));N.appendChild(ea);N=new CustomDialog(this,N,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(N.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=g&&g()}),480,150);return}}null!=I.message?F=""==I.message&&null!=I.name?mxUtils.htmlEntities(I.name):mxUtils.htmlEntities(I.message):null!=I.response&&null!=I.response.error?F=mxUtils.htmlEntities(I.response.error):
-"undefined"!==typeof window.App&&(I.code==App.ERROR_TIMEOUT?F=mxUtils.htmlEntities(mxResources.get("timeout")):I.code==App.ERROR_BUSY?F=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof I&&0<I.length&&(F=mxUtils.htmlEntities(I)))}var ba=y=null;null!=I&&null!=I.helpLink?(y=mxResources.get("help"),ba=mxUtils.bind(this,function(){return this.editor.graph.openLink(I.helpLink)})):null!=I&&null!=I.ownerEmail&&(y=mxResources.get("contactOwner"),F+=mxUtils.htmlEntities(" ("+y+": "+I.ownerEmail+
-")"),ba=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(I.ownerEmail))}));this.showError(f,F,G,g,aa,null,null,y,ba,null,null,null,m?g:null)}else null!=g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,m,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/
-50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},m,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};EditorUi.prototype.showBanner=function(d,f,g,m){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.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(y.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(y.style,"transition","all 1s ease");y.className="geBtn gePrimaryBtn";q=document.createElement("img");q.setAttribute("src",IMAGE_PATH+"/logo.png");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";y.appendChild(q);
-q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(m?"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");
-F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";if(!m){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var I=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||m)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=
-mxSettings.settings&&(mxSettings.settings["close"+d]=Date.now(),mxSettings.save()))});mxEvent.addListener(q,"click",mxUtils.bind(this,function(aa){mxEvent.consume(aa);I()}));var G=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){I()}),1E3)});mxEvent.addListener(y,"click",mxUtils.bind(this,function(aa){var ca=mxEvent.getSource(aa);ca!=F&&ca!=C?(null!=g&&g(),I(),mxEvent.consume(aa)):G()}));window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,m){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,
-"tEXt","mxfile",encodeURIComponent(f))),0<m&&(d=Editor.writeGraphModelToPng(d,"pHYs","dpi",m));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,m,q){var y="jpeg"==g?"jpg":g;m=this.getBaseFilename(m)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(m,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!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(d,f){d=new TextareaDialog(this,d,f,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(d,f,g,m,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||
-/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)d=m?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,
-g,m);else{var F=document.createElement("a");y=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(m?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},
-2E4),F.click(),F.parentNode.removeChild(F)}catch(I){}}else this.createEchoRequest(d,f,g,m,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,m,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(m?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,m=Math.ceil(g/1024),q=Array(m),
-y=0;y<m;++y){for(var F=1024*y,C=Math.min(F+1024,g),I=Array(C-F),G=0;F<C;++G,++F)I[G]=d[F].charCodeAt(0);q[y]=new Uint8Array(I)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,m,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var I=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,aa){try{if("_blank"==aa)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,
-g,m);else if(null!=g&&"text/html"==g.substring(0,9)){var ca=new EmbedDialog(this,d);this.showDialog(ca.container,450,240,!0,!0);ca.init()}else{var ba=window.open("about:blank");null==ba?mxUtils.popup(d,!0):(ba.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),ba.document.close())}else aa==App.MODE_DEVICE||"download"==aa?this.doSaveLocalFile(d,G,g,m,null,C):null!=G&&0<G.length&&this.pickFolder(aa,mxUtils.bind(this,function(Z){try{this.exportFile(d,G,g,m,aa,Z)}catch(qa){this.handleError(qa)}}))}catch(Z){this.handleError(Z)}}),
-mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,y,F,null,1<q,I,d,g,m);y=this.isServices(q)?q>I?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var m=window.open("about:blank");null==m||null==m.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"!=f||this.editor.graph.mathEnabled?(d=g?d:btoa(unescape(encodeURIComponent(d))),m.document.write('<html><img style="max-width:100%;" src="data:'+
-f+";base64,"+d+'"/></html>')):m.document.write("<html>"+d+"</html>"):m.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),m.document.close())};var n=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(d){if(null!=urlParams.tags){this.tagsDialog=
-this.tagsComponent=null;var f=d(mxUtils.bind(this,function(m){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 q=f.getBoundingClientRect();this.tagsDialog.style.left=q.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+
+f)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(d){return""};EditorUi.prototype.libraryLoaded=function(d,f,g,m){if(null!=this.sidebar){d.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(d.getHash());".scratchpad"==d.title&&(this.scratchpad=d);var q=this.sidebar.palettes[d.getHash()];q=null!=q?q[q.length-1].nextSibling:null;this.removeLibrarySidebar(d.getHash());var y=null,F=mxUtils.bind(this,function(ka,ia){0==ka.length&&d.isEditable()?
+(null==y&&(y=document.createElement("div"),y.className="geDropTarget",mxUtils.write(y,mxResources.get("dragElementsHere"))),ia.appendChild(y)):this.addLibraryEntries(ka,ia)});null!=this.sidebar&&null!=f&&this.sidebar.addEntries(f);null==g&&(g=d.getTitle(),null!=g&&/(\.xml)$/i.test(g)&&(g=g.substring(0,g.lastIndexOf("."))));var C=this.sidebar.addPalette(d.getHash(),g,null!=m?m:!0,mxUtils.bind(this,function(ka){F(f,ka)}));this.repositionLibrary(q);var I=C.parentNode.previousSibling;m=I.getAttribute("title");
+null!=m&&0<m.length&&".scratchpad"!=d.title&&I.setAttribute("title",this.getLibraryStorageHint(d)+"\n"+m);var G=document.createElement("div");G.style.position="absolute";G.style.right="0px";G.style.top="0px";G.style.padding="8px";G.style.backgroundColor="inherit";I.style.position="relative";var Z=document.createElement("img");Z.setAttribute("src",Editor.crossImage);Z.setAttribute("title",mxResources.get("close"));Z.setAttribute("valign","absmiddle");Z.setAttribute("border","0");Z.style.position="relative";
+Z.style.top="2px";Z.style.width="14px";Z.style.cursor="pointer";Z.style.margin="0 3px";Editor.isDarkMode()&&(Z.style.filter="invert(100%)");var ca=null;if(".scratchpad"!=d.title||this.closableScratchpad)G.appendChild(Z),mxEvent.addListener(Z,"click",mxUtils.bind(this,function(ka){if(!mxEvent.isConsumed(ka)){var ia=mxUtils.bind(this,function(){this.closeLibrary(d)});null!=ca?this.confirm(mxResources.get("allChangesLost"),null,ia,mxResources.get("cancel"),mxResources.get("discardChanges")):ia();mxEvent.consume(ka)}}));
+if(d.isEditable()){var aa=this.editor.graph,Y=null,qa=mxUtils.bind(this,function(ka){this.showLibraryDialog(d.getTitle(),C,f,d,d.getMode());mxEvent.consume(ka)}),Q=mxUtils.bind(this,function(ka){d.setModified(!0);d.isAutosave()?(null!=Y&&null!=Y.parentNode&&Y.parentNode.removeChild(Y),Y=Z.cloneNode(!1),Y.setAttribute("src",Editor.spinImage),Y.setAttribute("title",mxResources.get("saving")),Y.style.cursor="default",Y.style.marginRight="2px",Y.style.marginTop="-2px",G.insertBefore(Y,G.firstChild),I.style.paddingRight=
+18*G.childNodes.length+"px",this.saveLibrary(d.getTitle(),f,d,d.getMode(),!0,!0,function(){null!=Y&&null!=Y.parentNode&&(Y.parentNode.removeChild(Y),I.style.paddingRight=18*G.childNodes.length+"px")})):null==ca&&(ca=Z.cloneNode(!1),ca.setAttribute("src",Editor.saveImage),ca.setAttribute("title",mxResources.get("save")),G.insertBefore(ca,G.firstChild),mxEvent.addListener(ca,"click",mxUtils.bind(this,function(ia){this.saveLibrary(d.getTitle(),f,d,d.getMode(),d.constructor==LocalLibrary,!0,function(){null==
+ca||d.isModified()||(I.style.paddingRight=18*G.childNodes.length+"px",ca.parentNode.removeChild(ca),ca=null)});mxEvent.consume(ia)})),I.style.paddingRight=18*G.childNodes.length+"px")}),X=mxUtils.bind(this,function(ka,ia,V,L){ka=aa.cloneCells(mxUtils.sortCells(aa.model.getTopmostCells(ka)));for(var ea=0;ea<ka.length;ea++){var O=aa.getCellGeometry(ka[ea]);null!=O&&O.translate(-ia.x,-ia.y)}C.appendChild(this.sidebar.createVertexTemplateFromCells(ka,ia.width,ia.height,L||"",!0,null,!1));ka={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(ka))),
+w:ia.width,h:ia.height};null!=L&&(ka.title=L);f.push(ka);Q(V);null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)}),fa=mxUtils.bind(this,function(ka){if(aa.isSelectionEmpty())aa.getRubberband().isActive()?(aa.getRubberband().execute(ka),aa.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var ia=aa.getSelectionCells(),V=aa.view.getBounds(ia),L=aa.view.scale;V.x/=L;V.y/=L;V.width/=L;V.height/=
+L;V.x-=aa.view.translate.x;V.y-=aa.view.translate.y;X(ia,V)}mxEvent.consume(ka)});mxEvent.addGestureListeners(C,function(){},mxUtils.bind(this,function(ka){aa.isMouseDown&&null!=aa.panningManager&&null!=aa.graphHandler.first&&(aa.graphHandler.suspend(),null!=aa.graphHandler.hint&&(aa.graphHandler.hint.style.visibility="hidden"),C.style.backgroundColor="#f1f3f4",C.style.cursor="copy",aa.panningManager.stop(),aa.autoScroll=!1,mxEvent.consume(ka))}),mxUtils.bind(this,function(ka){aa.isMouseDown&&null!=
+aa.panningManager&&null!=aa.graphHandler&&(C.style.backgroundColor="",C.style.cursor="default",this.sidebar.showTooltips=!0,aa.panningManager.stop(),aa.graphHandler.reset(),aa.isMouseDown=!1,aa.autoScroll=!0,fa(ka),mxEvent.consume(ka))}));mxEvent.addListener(C,"mouseleave",mxUtils.bind(this,function(ka){aa.isMouseDown&&null!=aa.graphHandler.first&&(aa.graphHandler.resume(),null!=aa.graphHandler.hint&&(aa.graphHandler.hint.style.visibility="visible"),C.style.backgroundColor="",C.style.cursor="",aa.autoScroll=
+!0)}));Graph.fileSupport&&(mxEvent.addListener(C,"dragover",mxUtils.bind(this,function(ka){C.style.backgroundColor="#f1f3f4";ka.dataTransfer.dropEffect="copy";C.style.cursor="copy";this.sidebar.hideTooltip();ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"drop",mxUtils.bind(this,function(ka){C.style.cursor="";C.style.backgroundColor="";0<ka.dataTransfer.files.length&&this.importFiles(ka.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(ia,V,L,ea,O,N,ba,la,u){if(null!=
+ia&&"image/"==V.substring(0,6))ia="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(ia),ia=[new mxCell("",new mxGeometry(0,0,O,N),ia)],ia[0].vertex=!0,X(ia,new mxRectangle(0,0,O,N),ka,mxEvent.isAltDown(ka)?null:ba.substring(0,ba.lastIndexOf(".")).replace(/_/g," ")),null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null);else{var H=!1,P=mxUtils.bind(this,function(T,S){null!=T&&"application/pdf"==S&&(S=Editor.extractGraphModelFromPdf(T),
+null!=S&&0<S.length&&(T=S));if(null!=T)if(T=mxUtils.parseXml(T),"mxlibrary"==T.documentElement.nodeName)try{var da=JSON.parse(mxUtils.getTextContent(T.documentElement));F(da,C);f=f.concat(da);Q(ka);this.spinner.stop();H=!0}catch(xa){}else if("mxfile"==T.documentElement.nodeName)try{var R=T.documentElement.getElementsByTagName("diagram");for(da=0;da<R.length;da++){var ma=this.stringToCells(Editor.getDiagramNodeXml(R[da])),ra=this.editor.graph.getBoundingBoxFromGeometry(ma);X(ma,new mxRectangle(0,0,
+ra.width,ra.height),ka)}H=!0}catch(xa){null!=window.console&&console.log("error in drop handler:",xa)}H||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=y&&null!=y.parentNode&&0<f.length&&(y.parentNode.removeChild(y),y=null)});null!=u&&null!=ba&&(/(\.v(dx|sdx?))($|\?)/i.test(ba)||/(\.vs(x|sx?))($|\?)/i.test(ba))?this.importVisio(u,function(T){P(T,"text/xml")},null,ba):(new XMLHttpRequest).upload&&this.isRemoteFileFormat(ia,ba)&&null!=u?this.isExternalDataComms()?
+this.parseFile(u,mxUtils.bind(this,function(T){4==T.readyState&&(this.spinner.stop(),200<=T.status&&299>=T.status?P(T.responseText,"text/xml"):this.handleError({message:mxResources.get(413==T.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):P(ia,V)}}));ka.stopPropagation();ka.preventDefault()})),mxEvent.addListener(C,"dragleave",function(ka){C.style.cursor="";C.style.backgroundColor=
+"";ka.stopPropagation();ka.preventDefault()}));Z=Z.cloneNode(!1);Z.setAttribute("src",Editor.editImage);Z.setAttribute("title",mxResources.get("edit"));G.insertBefore(Z,G.firstChild);mxEvent.addListener(Z,"click",qa);mxEvent.addListener(C,"dblclick",function(ka){mxEvent.getSource(ka)==C&&qa(ka)});m=Z.cloneNode(!1);m.setAttribute("src",Editor.plusImage);m.setAttribute("title",mxResources.get("add"));G.insertBefore(m,G.firstChild);mxEvent.addListener(m,"click",fa);this.isOffline()||".scratchpad"!=d.title||
+null==EditorUi.scratchpadHelpLink||(m=document.createElement("span"),m.setAttribute("title",mxResources.get("help")),m.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(m,"?"),mxEvent.addGestureListeners(m,mxUtils.bind(this,function(ka){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(ka)})),G.insertBefore(m,G.firstChild))}I.appendChild(G);I.style.paddingRight=18*G.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(d,f){for(var g=
+0;g<d.length;g++){var m=d[g],q=m.data;if(null!=q){q=this.convertDataUri(q);var y="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==m.aspect&&(y+="aspect=fixed;");f.appendChild(this.sidebar.createVertexTemplate(y+"image="+q,m.w,m.h,"",m.title||"",!1,null,!0))}else null!=m.xml&&(q=this.stringToCells(Graph.decompress(m.xml)),0<q.length&&f.appendChild(this.sidebar.createVertexTemplateFromCells(q,m.w,m.h,m.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(d){return null!=
+d?d[mxLanguage]||d.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)}];"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(d,f,g,m,q,y,F){d=new ImageDialog(this,d,f,g,m,q,y,F);this.showDialog(d.container,Graph.fileSupport?480:360,Graph.fileSupport?200:90,!0,!0);d.init()};EditorUi.prototype.showBackgroundImageDialog=function(d,f){d=null!=d?d:mxUtils.bind(this,function(g,m){m||(g=new ChangePageSetup(this,null,g),g.ignoreColor=!0,this.editor.graph.model.execute(g))});d=new BackgroundImageDialog(this,d,f);this.showDialog(d.container,
+400,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(d,f,g,m,q){d=new LibraryDialog(this,d,f,g,m,q);this.showDialog(d.container,640,440,!0,!1,mxUtils.bind(this,function(y){y&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));d.init()};var k=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(d){var f=k.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(g){this.editor.graph.isSelectionEmpty()&&
+f.refresh()}));return f};EditorUi.prototype.createSidebarFooterContainer=function(){var d=this.createDiv("geSidebarContainer geSidebarFooter");d.style.position="absolute";d.style.overflow="hidden";var f=document.createElement("a");f.className="geTitle";f.style.color="#DF6C0C";f.style.fontWeight="bold";f.style.height="100%";f.style.paddingTop="9px";f.innerHTML="<span>+</span>";var g=f.getElementsByTagName("span")[0];g.style.fontSize="18px";g.style.marginRight="5px";mxUtils.write(f,mxResources.get("moreShapes")+
+"...");mxEvent.addListener(f,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(m){m.preventDefault()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(m){this.actions.get("shapes").funct();mxEvent.consume(m)}));d.appendChild(f);return d};EditorUi.prototype.handleError=function(d,f,g,m,q,y,F){var C=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},I=null!=d&&null!=d.error?d.error:d;if(null!=d&&("1"==urlParams.test||null!=d.stack)&&null!=
+d.message)try{F?null!=window.console&&console.error("EditorUi.handleError:",d):EditorUi.logError("Caught: "+(""==d.message&&null!=d.name)?d.name:d.message,d.filename,d.lineNumber,d.columnNumber,d,"INFO")}catch(Y){}if(null!=I||null!=f){F=mxUtils.htmlEntities(mxResources.get("unknownError"));var G=mxResources.get("ok"),Z=null;f=null!=f?f:mxResources.get("error");if(null!=I){null!=I.retry&&(G=mxResources.get("cancel"),Z=function(){C();I.retry()});if(404==I.code||404==I.status||403==I.code){F=403==I.code?
+null!=I.message?mxUtils.htmlEntities(I.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=q?q:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var ca=null!=q?null:null!=y?y:window.location.hash;if(null!=ca&&("#G"==ca.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==ca.substring(0,45))&&(null!=d&&null!=d.error&&(null!=d.error.errors&&0<d.error.errors.length&&
+"fileAccess"==d.error.errors[0].reason||null!=d.error.data&&0<d.error.data.length&&"fileAccess"==d.error.data[0].reason)||404==I.code||404==I.status)){ca="#U"==ca.substring(0,2)?ca.substring(45,ca.lastIndexOf("%26ex")):ca.substring(2);this.showError(f,F,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+ca);this.handleError(d,f,g,m,q)}),Z,mxResources.get("changeUser"),mxUtils.bind(this,function(){function Y(){fa.innerText=
+"";for(var ka=0;ka<qa.length;ka++){var ia=document.createElement("option");mxUtils.write(ia,qa[ka].displayName);ia.value=ka;fa.appendChild(ia);ia=document.createElement("option");ia.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(ia,"<"+qa[ka].email+">");ia.setAttribute("disabled","disabled");fa.appendChild(ia)}ia=document.createElement("option");mxUtils.write(ia,mxResources.get("addAccount"));ia.value=qa.length;fa.appendChild(ia)}var qa=this.drive.getUsersList(),Q=document.createElement("div"),X=document.createElement("span");
+X.style.marginTop="6px";mxUtils.write(X,mxResources.get("changeUser")+": ");Q.appendChild(X);var fa=document.createElement("select");fa.style.width="200px";Y();mxEvent.addListener(fa,"change",mxUtils.bind(this,function(){var ka=fa.value,ia=qa.length!=ka;ia&&this.drive.setUser(qa[ka]);this.drive.authorize(ia,mxUtils.bind(this,function(){ia||(qa=this.drive.getUsersList(),Y())}),mxUtils.bind(this,function(V){this.handleError(V)}),!0)}));Q.appendChild(fa);Q=new CustomDialog(this,Q,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),
+!0)}));this.showDialog(Q.container,300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=g&&g()}),480,150);return}}null!=I.message?F=""==I.message&&null!=I.name?mxUtils.htmlEntities(I.name):mxUtils.htmlEntities(I.message):null!=I.response&&null!=I.response.error?F=mxUtils.htmlEntities(I.response.error):"undefined"!==typeof window.App&&(I.code==App.ERROR_TIMEOUT?F=mxUtils.htmlEntities(mxResources.get("timeout")):I.code==App.ERROR_BUSY?F=mxUtils.htmlEntities(mxResources.get("busy")):
+"string"===typeof I&&0<I.length&&(F=mxUtils.htmlEntities(I)))}var aa=y=null;null!=I&&null!=I.helpLink?(y=mxResources.get("help"),aa=mxUtils.bind(this,function(){return this.editor.graph.openLink(I.helpLink)})):null!=I&&null!=I.ownerEmail&&(y=mxResources.get("contactOwner"),F+=mxUtils.htmlEntities(" ("+y+": "+I.ownerEmail+")"),aa=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(I.ownerEmail))}));this.showError(f,F,G,g,Z,null,null,y,aa,null,null,null,m?g:null)}else null!=
+g&&g()};EditorUi.prototype.alert=function(d,f,g){d=new ErrorDialog(this,null,d,mxResources.get("ok"),f);this.showDialog(d.container,g||340,100,!0,!1);d.init()};EditorUi.prototype.confirm=function(d,f,g,m,q,y){var F=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},C=Math.min(200,28*Math.ceil(d.length/50));d=new ConfirmDialog(this,d,function(){F();null!=f&&f()},function(){F();null!=g&&g()},m,q,null,null,null,null,C);this.showDialog(d.container,340,46+C,!0,y);d.init()};
+EditorUi.prototype.showBanner=function(d,f,g,m){var q=!1;if(!(this.bannerShowing||this["hideBanner"+d]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+d])){var y=document.createElement("div");y.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(y.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(y.style,
+"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(y.style,"transition","all 1s ease");y.className="geBtn gePrimaryBtn";q=document.createElement("img");q.setAttribute("src",IMAGE_PATH+"/logo.png");q.setAttribute("border","0");q.setAttribute("align","absmiddle");q.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";y.appendChild(q);q=document.createElement("img");q.setAttribute("src",Dialog.prototype.closeImage);q.setAttribute("title",mxResources.get(m?
+"doNotShowAgain":"close"));q.setAttribute("border","0");q.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";y.appendChild(q);mxUtils.write(y,f);document.body.appendChild(y);this.bannerShowing=!0;f=document.createElement("div");f.style.cssText="font-size:11px;text-align:center;font-weight:normal;";var F=document.createElement("input");F.setAttribute("type","checkbox");F.setAttribute("id","geDoNotShowAgainCheckbox");F.style.marginRight="6px";
+if(!m){f.appendChild(F);var C=document.createElement("label");C.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(C,mxResources.get("doNotShowAgain"));f.appendChild(C);y.style.paddingBottom="30px";y.appendChild(f)}var I=mxUtils.bind(this,function(){null!=y.parentNode&&(y.parentNode.removeChild(y),this.bannerShowing=!1,F.checked||m)&&(this["hideBanner"+d]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+d]=Date.now(),mxSettings.save()))});mxEvent.addListener(q,
+"click",mxUtils.bind(this,function(Z){mxEvent.consume(Z);I()}));var G=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){I()}),1E3)});mxEvent.addListener(y,"click",mxUtils.bind(this,function(Z){var ca=mxEvent.getSource(Z);ca!=F&&ca!=C?(null!=g&&g(),I(),mxEvent.consume(Z)):G()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(y.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(G,
+3E4);q=!0}return q};EditorUi.prototype.setCurrentFile=function(d){null!=d&&(d.opened=new Date);this.currentFile=d};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(d,f,g,m){d=d.toDataURL("image/"+g);if(null!=d&&6<d.length)null!=f&&(d=Editor.writeGraphModelToPng(d,"tEXt","mxfile",encodeURIComponent(f))),0<m&&(d=Editor.writeGraphModelToPng(d,"pHYs",
+"dpi",m));else throw{message:mxResources.get("unknownError")};return d};EditorUi.prototype.saveCanvas=function(d,f,g,m,q){var y="jpeg"==g?"jpg":g;m=this.getBaseFilename(m)+(null!=f?".drawio":"")+"."+y;d=this.createImageDataUri(d,f,g,q);this.saveData(m,y,d.substring(d.lastIndexOf(",")+1),"image/"+g,!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(d,f){d=new TextareaDialog(this,d,f,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(d,f,g,m,q,y){"text/xml"!=g||/(\.drawio)$/i.test(f)||/(\.xml)$/i.test(f)||/(\.svg)$/i.test(f)||/(\.html)$/i.test(f)||(f=f+"."+(null!=y?y:"drawio"));if(window.Blob&&
+navigator.msSaveOrOpenBlob)d=m?this.base64ToBlob(d,g):new Blob([d],{type:g}),navigator.msSaveOrOpenBlob(d,f);else if(mxClient.IS_IE)g=window.open("about:blank","_blank"),null==g?mxUtils.popup(d,!0):(g.document.write(d),g.document.close(),g.document.execCommand("SaveAs",!0,f),g.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==g||"image/"!=g.substring(0,6)?this.showTextDialog(f+":",d):this.openInNewWindow(d,g,m);else{var F=document.createElement("a");y=(null==navigator.userAgent||
+0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof F.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var C=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);y=65==(C?parseInt(C[2],10):!1)?!1:y}if(y||this.isOffline()){F.href=URL.createObjectURL(m?this.base64ToBlob(d,g):new Blob([d],{type:g}));y?F.download=f:F.setAttribute("target","_blank");document.body.appendChild(F);try{window.setTimeout(function(){URL.revokeObjectURL(F.href)},2E4),F.click(),F.parentNode.removeChild(F)}catch(I){}}else this.createEchoRequest(d,
+f,g,m,q).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(d,f,g,m,q,y){d="xml="+encodeURIComponent(d);return new mxXmlRequest(SAVE_URL,d+(null!=g?"&mime="+g:"")+(null!=q?"&format="+q:"")+(null!=y?"&base64="+y:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(m?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(d,f){f=f||"";d=atob(d);for(var g=d.length,m=Math.ceil(g/1024),q=Array(m),y=0;y<m;++y){for(var F=1024*y,C=Math.min(F+1024,g),I=Array(C-F),G=0;F<C;++G,++F)I[G]=
+d[F].charCodeAt(0);q[y]=new Uint8Array(I)}return new Blob(q,{type:f})};EditorUi.prototype.saveLocalFile=function(d,f,g,m,q,y,F,C){y=null!=y?y:!1;F=null!=F?F:"vsdx"!=q&&(!mxClient.IS_IOS||!navigator.standalone);q=this.getServiceCount(y);isLocalStorage&&q++;var I=4>=q?2:6<q?4:3;f=new CreateDialog(this,f,mxUtils.bind(this,function(G,Z){try{if("_blank"==Z)if(null!=g&&"image/"==g.substring(0,6))this.openInNewWindow(d,g,m);else if(null!=g&&"text/html"==g.substring(0,9)){var ca=new EmbedDialog(this,d);this.showDialog(ca.container,
+450,240,!0,!0);ca.init()}else{var aa=window.open("about:blank");null==aa?mxUtils.popup(d,!0):(aa.document.write("<pre>"+mxUtils.htmlEntities(d,!1)+"</pre>"),aa.document.close())}else Z==App.MODE_DEVICE||"download"==Z?this.doSaveLocalFile(d,G,g,m,null,C):null!=G&&0<G.length&&this.pickFolder(Z,mxUtils.bind(this,function(Y){try{this.exportFile(d,G,g,m,Z,Y)}catch(qa){this.handleError(qa)}}))}catch(Y){this.handleError(Y)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+!1,y,F,null,1<q,I,d,g,m);y=this.isServices(q)?q>I?390:280:160;this.showDialog(f.container,420,y,!0,!0);f.init()};EditorUi.prototype.openInNewWindow=function(d,f,g){var m=window.open("about:blank");null==m||null==m.document?mxUtils.popup(d,!0):("image/svg+xml"!=f||mxClient.IS_SVG?"image/svg+xml"!=f||this.editor.graph.mathEnabled?(d=g?d:btoa(unescape(encodeURIComponent(d))),m.document.write('<html><img style="max-width:100%;" src="data:'+f+";base64,"+d+'"/></html>')):m.document.write("<html>"+d+"</html>"):
+m.document.write("<html><pre>"+mxUtils.htmlEntities(d,!1)+"</pre></html>"),m.document.close())};var n=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(d){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=d(mxUtils.bind(this,function(m){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 q=f.getBoundingClientRect();this.tagsDialog.style.left=q.left+"px";this.tagsDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+
4+"px";q=mxUtils.getCurrentStyle(this.editor.graph.container);this.tagsDialog.style.zIndex=q.zIndex;document.body.appendChild(this.tagsDialog);this.tagsComponent.refresh();this.editor.fireEvent(new mxEventObject("tagsDialogShown"))}mxEvent.consume(m)}),Editor.tagsImage,mxResources.get("tags"));this.editor.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var m=this.editor.graph.getAllTags();f.style.display=0<m.length?"":"none"}))}n.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 g=d(mxUtils.bind(this,
@@ -3492,313 +3494,311 @@ this.exportDialog.style.fontFamily=Editor.defaultHtmlFont;this.exportDialog.styl
this.exportDialog.style.zIndex=y.zIndex;var F=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});F.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(C){F.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var I=this.createImageDataUri(C,null,"png");C=document.createElement("img");C.style.maxWidth="140px";C.style.maxHeight=
"140px";C.style.cursor="pointer";C.style.backgroundColor="white";C.setAttribute("title",mxResources.get("openInNewWindow"));C.setAttribute("border","0");C.setAttribute("src",I);this.exportDialog.appendChild(C);mxEvent.addListener(C,"click",mxUtils.bind(this,function(){this.openInNewWindow(I.substring(I.indexOf(",")+1),"image/png",!0);q.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}),null,null,null,null,null,null,null,
Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",q);document.body.appendChild(this.exportDialog)}mxEvent.consume(m)}),Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(d,f,g,m,q){this.isLocalFileSave()?this.saveLocalFile(g,d,m,q,f):this.saveRequest(d,f,mxUtils.bind(this,function(y,F){return this.createEchoRequest(g,y,m,q,f,F)}),g,q,m)};EditorUi.prototype.saveRequest=function(d,f,g,m,q,y,F){F=null!=F?F:!mxClient.IS_IOS||!navigator.standalone;
-var C=this.getServiceCount(!1);isLocalStorage&&C++;var I=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,aa){if("_blank"==aa||null!=G&&0<G.length){var ca=g("_blank"==aa?null:G,aa==App.MODE_DEVICE||"download"==aa||null==aa||"_blank"==aa?"0":"1");null!=ca&&(aa==App.MODE_DEVICE||"download"==aa||"_blank"==aa?ca.simulate(document,"_blank"):this.pickFolder(aa,mxUtils.bind(this,function(ba){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=m)try{this.exportFile(m,G,y,!0,aa,
-ba)}catch(Z){this.handleError(Z)}else this.spinner.spin(document.body,mxResources.get("saving"))&&ca.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=ca.getStatus()&&299>=ca.getStatus())try{this.exportFile(ca.getText(),G,y,!0,aa,ba)}catch(Z){this.handleError(Z)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(Z){this.spinner.stop();this.handleError(Z)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
-!1,!1,F,null,1<C,I,m,y,q);C=this.isServices(C)?4<C?390:280:160;this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,m,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba,Z){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();
-g=null!=g?g:qa;var N=f?null:this.editor.graph.background;N==mxConstants.NONE&&(N=null);null==N&&0==f&&(N=aa?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var Y=this.editor.graph.getSvg(N,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!ba,aa,ca);m&&this.editor.graph.addSvgShadow(Y);var ea=this.getBaseFilename()+(q?".drawio":"")+".svg";Z=null!=Z?Z:mxUtils.bind(this,function(V){this.isLocalFileSave()||V.length<=MAX_REQUEST_SIZE?this.saveData(ea,"svg",V,"image/svg+xml"):
-this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});var ka=mxUtils.bind(this,function(V){this.spinner.stop();q&&V.setAttribute("content",this.getFileData(!0,null,null,null,g,I,null,null,null,!1));Z(Graph.xmlDeclaration+"\n"+(q?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(V))});this.editor.graph.mathEnabled&&this.editor.addMathCss(Y);var ja=mxUtils.bind(this,function(V){y?(null==this.thumbImageCache&&
-(this.thumbImageCache={}),this.editor.convertImages(V,ka,this.thumbImageCache)):ka(V)});ba?this.embedFonts(Y,ja):(this.editor.addFontCss(Y),ja(Y))}catch(V){this.handleError(V)}};EditorUi.prototype.addRadiobox=function(d,f,g,m,q,y,F){return this.addCheckbox(d,g,m,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;var I=document.createElement("input");I.style.marginRight="8px";I.style.marginTop="16px";I.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();
-I.id=F;null!=C&&I.setAttribute("name",C);g&&(I.setAttribute("checked","checked"),I.defaultChecked=!0);m&&I.setAttribute("disabled","disabled");y&&(d.appendChild(I),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return I};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var m=this.getCurrentFile(),q="";null!=m&&m.getMode()!=App.MODE_DEVICE&&m.getMode()!=
-App.MODE_BROWSER&&(q=window.location.href);var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";m=document.createElement("option");m.setAttribute("value","blank");mxUtils.write(m,mxResources.get("makeCopy"));y.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom")+"...");y.appendChild(m);d.appendChild(y);mxEvent.addListener(y,
-"change",mxUtils.bind(this,function(){if("custom"==y.value){var F=new FilenameDialog(this,q,mxResources.get("ok"),function(C){null!=C?q=C:y.value="blank"},mxResources.get("url"),null,null,null,null,function(){y.value="blank"});this.showDialog(F.container,300,80,!0,!1);F.init()}}));mxEvent.addListener(g,"change",mxUtils.bind(this,function(){g.checked&&(null==f||f.checked)?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));mxUtils.br(d);return{getLink:function(){return g.checked?
-"blank"===y.value?"_blank":q:null},getEditInput:function(){return g},getEditSelect:function(){return y}}};EditorUi.prototype.addLinkSection=function(d,f){function g(){var C=document.createElement("div");C.style.width="100%";C.style.height="100%";C.style.boxSizing="border-box";null!=y&&y!=mxConstants.NONE?(C.style.border="1px solid black",C.style.backgroundColor=y):(C.style.backgroundPosition="center center",C.style.backgroundRepeat="no-repeat",C.style.backgroundImage="url('"+Dialog.prototype.closeImage+
-"')");F.innerText="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+":");var m=document.createElement("select");m.style.width="100px";m.style.padding="0px";m.style.marginLeft="8px";m.style.marginRight="10px";m.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));m.appendChild(q);
-q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,mxResources.get("openInThisWindow"));m.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),m.appendChild(f));d.appendChild(m);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(I){y=I;g()});
-mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return m.value},focus:function(){m.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,m,q,y,F){F=null!=F?F:[];m&&("https://viewer.diagrams.net"==
-EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,m,q,y,F,C,
-I,G){I=this.createUrlParameters(d,f,g,m,q,y,I);d=this.getCurrentFile();f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&I.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(I.push("open="+
-g.substring(1)),g="");return(m&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<I.length?"?"+I.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,m,q,y,F,C,I,G,aa,ca){this.getBasenames();var ba={};""!=q&&q!=mxConstants.NONE&&(ba.highlight=q);"auto"!==m&&(ba.target=m);G||(ba.lightbox=!1);ba.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||
-100==g||(ba.zoom=g/100);g=[];F&&(g.push("pages"),ba.resize=!0,null!=this.pages&&null!=this.currentPage&&(ba.page=mxUtils.indexOf(this.pages,this.currentPage)));f&&(g.push("zoom"),ba.resize=!0);C&&g.push("layers");I&&g.push("tags");0<g.length&&(G&&g.push("lightbox"),ba.toolbar=g.join(" "));null!=aa&&0<aa.length&&(ba.edit=aa);null!=d?ba.url=d:ba.xml=this.getFileData(!0,null,null,null,null,!F);f='<div class="mxgraph" style="'+(y?"max-width:100%;":"")+(""!=g?"border:1px solid transparent;":"")+'" data-mxgraph="'+
-mxUtils.htmlEntities(JSON.stringify(ba))+'"></div>';d=null!=d?"&fetch="+encodeURIComponent(d):"";ca(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"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(d,f,g,m){var q=document.createElement("div");
-q.style.whiteSpace="nowrap";var y=document.createElement("h3");mxUtils.write(y,mxResources.get("html"));y.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";q.appendChild(y);var F=document.createElement("div");F.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var C=document.createElement("input");C.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";C.setAttribute("value","url");C.setAttribute("type","radio");C.setAttribute("name",
-"type-embedhtmldialog");y=C.cloneNode(!0);y.setAttribute("value","copy");F.appendChild(y);var I=document.createElement("span");mxUtils.write(I,mxResources.get("includeCopyOfMyDiagram"));F.appendChild(I);mxUtils.br(F);F.appendChild(C);I=document.createElement("span");mxUtils.write(I,mxResources.get("publicDiagramUrl"));F.appendChild(I);var G=this.getCurrentFile();null==g&&null!=G&&G.constructor==window.DriveFile&&(I=document.createElement("a"),I.style.paddingLeft="12px",I.style.color="gray",I.style.cursor=
-"pointer",mxUtils.write(I,mxResources.get("share")),F.appendChild(I),mxEvent.addListener(I,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(G.getId())})));y.setAttribute("checked","checked");null==g&&C.setAttribute("disabled","disabled");q.appendChild(F);var aa=this.addLinkSection(q),ca=this.addCheckbox(q,mxResources.get("zoom"),!0,null,!0);mxUtils.write(q,":");var ba=document.createElement("input");ba.setAttribute("type","text");ba.style.marginRight="16px";ba.style.width=
-"60px";ba.style.marginLeft="4px";ba.style.marginRight="12px";ba.value="100%";q.appendChild(ba);var Z=this.addCheckbox(q,mxResources.get("fit"),!0);F=null!=this.pages&&1<this.pages.length;var qa=qa=this.addCheckbox(q,mxResources.get("allPages"),F,!F),N=this.addCheckbox(q,mxResources.get("layers"),!0),Y=this.addCheckbox(q,mxResources.get("tags"),!0),ea=this.addCheckbox(q,mxResources.get("lightbox"),!0),ka=null;F=380;if(EditorUi.enableHtmlEditOption){ka=this.addEditButton(q,ea);var ja=ka.getEditInput();
-ja.style.marginBottom="16px";F+=50;mxEvent.addListener(ea,"change",function(){ea.checked?ja.removeAttribute("disabled"):ja.setAttribute("disabled","disabled");ja.checked&&ea.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){m(C.checked?g:null,ca.checked,ba.value,aa.getTarget(),aa.getColor(),Z.checked,qa.checked,N.checked,Y.checked,ea.checked,null!=ka?ka.getLink():null)}),null,d,f);
-this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=function(d,f,g,m,q,y,F,C){var I=document.createElement("div");I.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";I.appendChild(G);var aa=this.getCurrentFile();d=0;if(null==aa||aa.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";
-else{d=80;F=null!=F?F:"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 ca=document.createElement("div");ca.style.whiteSpace="normal";mxUtils.write(ca,mxResources.get("linkAccountRequired"));G.appendChild(ca);ca=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(aa.getId())}));
-ca.style.marginTop="12px";ca.className="geBtn";G.appendChild(ca);I.appendChild(G);ca=document.createElement("a");ca.style.paddingLeft="12px";ca.style.color="gray";ca.style.fontSize="11px";ca.style.cursor="pointer";mxUtils.write(ca,mxResources.get("check"));G.appendChild(ca);mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(J){this.spinner.stop();J=new ErrorDialog(this,
-null,mxResources.get(null!=J?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(J.container,300,80,!0,!1);J.init()}))}))}var ba=null,Z=null;if(null!=g||null!=m)d+=30,mxUtils.write(I,mxResources.get("width")+":"),ba=document.createElement("input"),ba.setAttribute("type","text"),ba.style.marginRight="16px",ba.style.width="50px",ba.style.marginLeft="6px",ba.style.marginRight="16px",ba.style.marginBottom="10px",ba.value="100%",I.appendChild(ba),mxUtils.write(I,mxResources.get("height")+
-":"),Z=document.createElement("input"),Z.setAttribute("type","text"),Z.style.width="50px",Z.style.marginLeft="6px",Z.style.marginBottom="10px",Z.value=m+"px",I.appendChild(Z),mxUtils.br(I);var qa=this.addLinkSection(I,y);g=null!=this.pages&&1<this.pages.length;var N=null;if(null==aa||aa.constructor!=window.DriveFile||f)N=this.addCheckbox(I,mxResources.get("allPages"),g,!g);var Y=this.addCheckbox(I,mxResources.get("lightbox"),!0,null,null,!y),ea=this.addEditButton(I,Y),ka=ea.getEditInput();y&&(ka.style.marginLeft=
-Y.style.marginLeft,Y.style.display="none",d-=20);var ja=this.addCheckbox(I,mxResources.get("layers"),!0);ja.style.marginLeft=ka.style.marginLeft;ja.style.marginTop="8px";var V=this.addCheckbox(I,mxResources.get("tags"),!0);V.style.marginLeft=ka.style.marginLeft;V.style.marginBottom="16px";V.style.marginTop="16px";mxEvent.addListener(Y,"change",function(){Y.checked?(ja.removeAttribute("disabled"),ka.removeAttribute("disabled")):(ja.setAttribute("disabled","disabled"),ka.setAttribute("disabled","disabled"));
-ka.checked&&Y.checked?ea.getEditSelect().removeAttribute("disabled"):ea.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,I,mxUtils.bind(this,function(){q(qa.getTarget(),qa.getColor(),null==N?!0:N.checked,Y.checked,ea.getLink(),ja.checked,null!=ba?ba.value:null,null!=Z?Z.value:null,V.checked)}),null,mxResources.get("create"),F,C);this.showDialog(f.container,340,300+d,!0,!0);null!=ba?(ba.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?ba.select():document.execCommand("selectAll",
-!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";
-C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var I=document.createElement("input");I.setAttribute("type","text");I.style.marginRight="16px";I.style.width="60px";I.style.marginLeft="4px";I.value=this.lastExportBorder||"0";y.appendChild(I);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),aa=m?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),
-Editor.defaultIncludeDiagram);F=this.editor.graph;var ca=m?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=ca&&(ca.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var ba=parseInt(C.value)/100||1,Z=parseInt(I.value)||0;g(!G.checked,null!=aa?aa.checked:!1,null!=ca?ca.checked:!1,ba,Z)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(m?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
-function(d,f,g,m,q,y,F,C,I){F=null!=F?F:Editor.defaultIncludeDiagram;var G=document.createElement("div");G.style.whiteSpace="nowrap";var aa=this.editor.graph,ca="jpeg"==C?220:300,ba=document.createElement("h3");mxUtils.write(ba,d);ba.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(ba);mxUtils.write(G,mxResources.get("zoom")+":");var Z=document.createElement("input");Z.setAttribute("type","text");Z.style.marginRight="16px";Z.style.width="60px";Z.style.marginLeft=
-"4px";Z.style.marginRight="12px";Z.value=this.lastExportZoom||"100%";G.appendChild(Z);mxUtils.write(G,mxResources.get("borderWidth")+":");var qa=document.createElement("input");qa.setAttribute("type","text");qa.style.marginRight="16px";qa.style.width="60px";qa.style.marginLeft="4px";qa.value=this.lastExportBorder||"0";G.appendChild(qa);mxUtils.br(G);var N=this.addCheckbox(G,mxResources.get("selectionOnly"),!1,aa.isSelectionEmpty()),Y=document.createElement("input");Y.style.marginTop="16px";Y.style.marginRight=
-"8px";Y.style.marginLeft="24px";Y.setAttribute("disabled","disabled");Y.setAttribute("type","checkbox");var ea=document.createElement("select");ea.style.marginTop="16px";ea.style.marginLeft="8px";d=["selectionOnly","diagram","page"];var ka={};for(ba=0;ba<d.length;ba++)if(!aa.isSelectionEmpty()||"selectionOnly"!=d[ba]){var ja=document.createElement("option");mxUtils.write(ja,mxResources.get(d[ba]));ja.setAttribute("value",d[ba]);ea.appendChild(ja);ka[d[ba]]=ja}I?(mxUtils.write(G,mxResources.get("size")+
-":"),G.appendChild(ea),mxUtils.br(G),ca+=26,mxEvent.addListener(ea,"change",function(){"selectionOnly"==ea.value&&(N.checked=!0)})):y&&(G.appendChild(Y),mxUtils.write(G,mxResources.get("crop")),mxUtils.br(G),ca+=30,mxEvent.addListener(N,"change",function(){N.checked?Y.removeAttribute("disabled"):Y.setAttribute("disabled","disabled")}));aa.isSelectionEmpty()?I&&(N.style.display="none",N.nextSibling.style.display="none",N.nextSibling.nextSibling.style.display="none",ca-=30):(ea.value="diagram",Y.setAttribute("checked",
-"checked"),Y.defaultChecked=!0,mxEvent.addListener(N,"change",function(){ea.value=N.checked?"selectionOnly":"diagram"}));var V=this.addCheckbox(G,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=C),J=null;Editor.isDarkMode()&&(J=this.addCheckbox(G,mxResources.get("dark"),!0),ca+=26);var W=this.addCheckbox(G,mxResources.get("shadow"),aa.shadowVisible),Q=null;if("png"==C||"jpeg"==C)Q=this.addCheckbox(G,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),ca+=30;var S=
-this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),F,null,null,"jpeg"!=C);S.style.marginBottom="16px";var ha=document.createElement("input");ha.style.marginBottom="16px";ha.style.marginRight="8px";ha.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ha.setAttribute("disabled","disabled");var la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");
-y.setAttribute("value","none");mxUtils.write(y,mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ha.checked=!0,
-ha.setAttribute("disabled","disabled"),ka.page.style.display="none","page"==ea.value&&(ea.value="diagram"),W.checked=!1,W.setAttribute("disabled","disabled"),H.style.display="inline-block",u.style.display="none"):"disabled"==ha.getAttribute("disabled")&&(ha.checked=!1,ha.removeAttribute("disabled"),W.removeAttribute("disabled"),ka.page.style.display="",H.style.display="none",u.style.display="")}));f&&(G.appendChild(ha),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,
-mxResources.get("txtSettings")+":"),G.appendChild(la),mxUtils.br(G),ca+=60);var u=document.createElement("select");u.style.maxWidth="260px";u.style.marginLeft="8px";u.style.marginRight="10px";u.className="geBtn";f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));u.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));u.appendChild(f);f=document.createElement("option");
-f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));u.appendChild(f);var H=document.createElement("div");mxUtils.write(H,mxResources.get("LinksLost"));H.style.margin="7px";H.style.display="none";"svg"==C&&(mxUtils.write(G,mxResources.get("links")+":"),G.appendChild(u),G.appendChild(H),mxUtils.br(G),mxUtils.br(G),ca+=50);g=new CustomDialog(this,G,mxUtils.bind(this,function(){this.lastExportBorder=qa.value;this.lastExportZoom=Z.value;q(Z.value,V.checked,!N.checked,W.checked,
-S.checked,ha.checked,qa.value,Y.checked,!1,u.value,null!=Q?Q.checked:null,null!=J?J.checked:null,ea.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,ca,!0,!0,null,null,null,null,!0);Z.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Z.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;if(null!=
-f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(C)}var I=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),aa=this.addCheckbox(y,g),ca=this.addCheckbox(y,mxResources.get("lightbox"),!0),ba=this.addEditButton(y,ca),Z=ba.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),N=this.addCheckbox(y,mxResources.get("layers"),qa,!qa);
-N.style.marginLeft=Z.style.marginLeft;N.style.marginBottom="12px";N.style.marginTop="8px";mxEvent.addListener(ca,"change",function(){ca.checked?(qa&&N.removeAttribute("disabled"),Z.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),Z.setAttribute("disabled","disabled"));Z.checked&&ca.checked?ba.getEditSelect().removeAttribute("disabled"):ba.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,y,mxUtils.bind(this,function(){d(I.checked,G.checked,aa.checked,
-ca.checked,ba.getLink(),N.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(d,f,g,m,q,y,F,C){function I(Z){var qa=" ",N="";m&&(qa=" 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!=aa?"&page="+aa:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",N+="cursor:pointer;");d&&(N+="max-width:100%;");var Y="";g&&(Y=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Z+'"'+Y+(""!=N?' style="'+N+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),aa=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Z){var qa=m?this.getFileData(!0):null;
-Z=this.createImageDataUri(Z,qa,"png");I(Z)}),null,null,null,mxUtils.bind(this,function(Z){C({message:mxResources.get("unknownError")})}),null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var ca="";g&&(ca="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var ba=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(m?"1":"0")+ca+"&xml="+encodeURIComponent(f));ba.send(mxUtils.bind(this,function(){200<=
-ba.getStatus()&&299>=ba.getStatus()?I("data:image/png;base64,"+ba.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,f,g,m,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),I=C.getElementsByTagName("a");if(null!=I)for(var G=0;G<I.length;G++){var aa=I[G].getAttribute("href");null!=aa&&"#"==aa.charAt(0)&&"_blank"==I[G].getAttribute("target")&&I[G].removeAttribute("target")}m&&
-C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var ca=" ",ba="";m&&(ca="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"+(q?"&edit=_blank":"")+(y?"&layers=1":
-"")+"');}})(this);\"",ba+="cursor:pointer;");d&&(ba+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Z){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Z))+'"'+(""!=ba?' style="'+ba+'"':"")+ca+"/>")}))}else ba="",m&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=f?"&page="+f:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}}})(this);"),ba+="cursor:pointer;"),d&&(d=parseInt(C.getAttribute("width")),q=parseInt(C.getAttribute("height")),C.setAttribute("viewBox","-0.5 -0.5 "+d+" "+q),ba+="max-width:100%;max-height:"+q+"px;",C.removeAttribute("height")),""!=ba&&C.setAttribute("style",ba),this.editor.addFontCss(C),this.editor.graph.mathEnabled&&this.editor.addMathCss(C),F(mxUtils.getXml(C))};EditorUi.prototype.timeSince=
+var C=this.getServiceCount(!1);isLocalStorage&&C++;var I=4>=C?2:6<C?4:3;d=new CreateDialog(this,d,mxUtils.bind(this,function(G,Z){if("_blank"==Z||null!=G&&0<G.length){var ca=g("_blank"==Z?null:G,Z==App.MODE_DEVICE||"download"==Z||null==Z||"_blank"==Z?"0":"1");null!=ca&&(Z==App.MODE_DEVICE||"download"==Z||"_blank"==Z?ca.simulate(document,"_blank"):this.pickFolder(Z,mxUtils.bind(this,function(aa){y=null!=y?y:"pdf"==f?"application/pdf":"image/"+f;if(null!=m)try{this.exportFile(m,G,y,!0,Z,aa)}catch(Y){this.handleError(Y)}else this.spinner.spin(document.body,
+mxResources.get("saving"))&&ca.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=ca.getStatus()&&299>=ca.getStatus())try{this.exportFile(ca.getText(),G,y,!0,Z,aa)}catch(Y){this.handleError(Y)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(Y){this.spinner.stop();this.handleError(Y)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,F,null,1<C,I,m,y,q);C=this.isServices(C)?4<C?390:280:160;
+this.showDialog(d.container,420,C,!0,!0);d.init()};EditorUi.prototype.isServices=function(d){return 1!=d};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(d,f,g,m,q,y){};EditorUi.prototype.pickFolder=function(d,f,g){f(null)};EditorUi.prototype.exportSvg=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa,Y){if(this.spinner.spin(document.body,mxResources.get("export")))try{var qa=this.editor.graph.isSelectionEmpty();g=null!=g?g:qa;var Q=f?null:this.editor.graph.background;
+Q==mxConstants.NONE&&(Q=null);null==Q&&0==f&&(Q=Z?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var X=this.editor.graph.getSvg(Q,d,F,C,null,g,null,null,"blank"==G?"_blank":"self"==G?"_top":null,null,!aa,Z,ca);m&&this.editor.graph.addSvgShadow(X);var fa=this.getBaseFilename()+(q?".drawio":"")+".svg";Y=null!=Y?Y:mxUtils.bind(this,function(V){this.isLocalFileSave()||V.length<=MAX_REQUEST_SIZE?this.saveData(fa,"svg",V,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},
+mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(V)}))});var ka=mxUtils.bind(this,function(V){this.spinner.stop();q&&V.setAttribute("content",this.getFileData(!0,null,null,null,g,I,null,null,null,!1));Y(Graph.xmlDeclaration+"\n"+(q?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(V))});this.editor.graph.mathEnabled&&this.editor.addMathCss(X);var ia=mxUtils.bind(this,function(V){y?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(V,
+ka,this.thumbImageCache)):ka(V)});aa?this.embedFonts(X,ia):(this.editor.addFontCss(X),ia(X))}catch(V){this.handleError(V)}};EditorUi.prototype.addRadiobox=function(d,f,g,m,q,y,F){return this.addCheckbox(d,g,m,q,y,F,!0,f)};EditorUi.prototype.addCheckbox=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;var I=document.createElement("input");I.style.marginRight="8px";I.style.marginTop="16px";I.setAttribute("type",F?"radio":"checkbox");F="geCheckbox-"+Editor.guid();I.id=F;null!=C&&I.setAttribute("name",C);g&&
+(I.setAttribute("checked","checked"),I.defaultChecked=!0);m&&I.setAttribute("disabled","disabled");y&&(d.appendChild(I),g=document.createElement("label"),mxUtils.write(g,f),g.setAttribute("for",F),d.appendChild(g),q||mxUtils.br(d));return I};EditorUi.prototype.addEditButton=function(d,f){var g=this.addCheckbox(d,mxResources.get("edit")+":",!0,null,!0);g.style.marginLeft="24px";var m=this.getCurrentFile(),q="";null!=m&&m.getMode()!=App.MODE_DEVICE&&m.getMode()!=App.MODE_BROWSER&&(q=window.location.href);
+var y=document.createElement("select");y.style.maxWidth="200px";y.style.width="auto";y.style.marginLeft="8px";y.style.marginRight="10px";y.className="geBtn";m=document.createElement("option");m.setAttribute("value","blank");mxUtils.write(m,mxResources.get("makeCopy"));y.appendChild(m);m=document.createElement("option");m.setAttribute("value","custom");mxUtils.write(m,mxResources.get("custom")+"...");y.appendChild(m);d.appendChild(y);mxEvent.addListener(y,"change",mxUtils.bind(this,function(){if("custom"==
+y.value){var F=new FilenameDialog(this,q,mxResources.get("ok"),function(C){null!=C?q=C:y.value="blank"},mxResources.get("url"),null,null,null,null,function(){y.value="blank"});this.showDialog(F.container,300,80,!0,!1);F.init()}}));mxEvent.addListener(g,"change",mxUtils.bind(this,function(){g.checked&&(null==f||f.checked)?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));mxUtils.br(d);return{getLink:function(){return g.checked?"blank"===y.value?"_blank":q:null},getEditInput:function(){return g},
+getEditSelect:function(){return y}}};EditorUi.prototype.addLinkSection=function(d,f){function g(){var C=document.createElement("div");C.style.width="100%";C.style.height="100%";C.style.boxSizing="border-box";null!=y&&y!=mxConstants.NONE?(C.style.border="1px solid black",C.style.backgroundColor=y):(C.style.backgroundPosition="center center",C.style.backgroundRepeat="no-repeat",C.style.backgroundImage="url('"+Dialog.prototype.closeImage+"')");F.innerText="";F.appendChild(C)}mxUtils.write(d,mxResources.get("links")+
+":");var m=document.createElement("select");m.style.width="100px";m.style.padding="0px";m.style.marginLeft="8px";m.style.marginRight="10px";m.className="geBtn";var q=document.createElement("option");q.setAttribute("value","auto");mxUtils.write(q,mxResources.get("automatic"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","blank");mxUtils.write(q,mxResources.get("openInNewWindow"));m.appendChild(q);q=document.createElement("option");q.setAttribute("value","self");mxUtils.write(q,
+mxResources.get("openInThisWindow"));m.appendChild(q);f&&(f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),m.appendChild(f));d.appendChild(m);mxUtils.write(d,mxResources.get("borderColor")+":");var y="#0000ff",F=null;F=mxUtils.button("",mxUtils.bind(this,function(C){this.pickColor(y||"none",function(I){y=I;g()});mxEvent.consume(C)}));g();F.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";
+F.style.marginLeft="4px";F.style.height="22px";F.style.width="22px";F.style.position="relative";F.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";F.className="geColorBtn";d.appendChild(F);mxUtils.br(d);return{getColor:function(){return y},getTarget:function(){return m.value},focus:function(){m.focus()}}};EditorUi.prototype.createUrlParameters=function(d,f,g,m,q,y,F){F=null!=F?F:[];m&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||F.push("lightbox=1"),
+"auto"!=d&&F.push("target="+d),null!=f&&f!=mxConstants.NONE&&F.push("highlight="+("#"==f.charAt(0)?f.substring(1):f)),null!=q&&0<q.length&&F.push("edit="+encodeURIComponent(q)),y&&F.push("layers=1"),this.editor.graph.foldingEnabled&&F.push("nav=1"));g&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&F.push("page-id="+this.currentPage.getId());return F};EditorUi.prototype.createLink=function(d,f,g,m,q,y,F,C,I,G){I=this.createUrlParameters(d,f,g,m,q,y,I);d=this.getCurrentFile();
+f=!0;null!=F?g="#U"+encodeURIComponent(F):(d=this.getCurrentFile(),C||null==d||d.constructor!=window.DriveFile?g="#R"+encodeURIComponent(g?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(g="#"+d.getHash(),f=!1));f&&null!=d&&null!=d.getTitle()&&d.getTitle()!=this.defaultFilename&&I.push("title="+encodeURIComponent(d.getTitle()));G&&1<g.length&&(I.push("open="+g.substring(1)),g="");return(m&&"1"!=urlParams.dev?EditorUi.lightboxHost:
+mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<I.length?"?"+I.join("&"):"")+g};EditorUi.prototype.createHtml=function(d,f,g,m,q,y,F,C,I,G,Z,ca){this.getBasenames();var aa={};""!=q&&q!=mxConstants.NONE&&(aa.highlight=q);"auto"!==m&&(aa.target=m);G||(aa.lightbox=!1);aa.nav=this.editor.graph.foldingEnabled;g=parseInt(g);isNaN(g)||100==g||(aa.zoom=g/100);g=[];F&&(g.push("pages"),aa.resize=!0,null!=
+this.pages&&null!=this.currentPage&&(aa.page=mxUtils.indexOf(this.pages,this.currentPage)));f&&(g.push("zoom"),aa.resize=!0);C&&g.push("layers");I&&g.push("tags");0<g.length&&(G&&g.push("lightbox"),aa.toolbar=g.join(" "));null!=Z&&0<Z.length&&(aa.edit=Z);null!=d?aa.url=d:aa.xml=this.getFileData(!0,null,null,null,null,!F);f='<div class="mxgraph" style="'+(y?"max-width:100%;":"")+(""!=g?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(aa))+'"></div>';d=null!=
+d?"&fetch="+encodeURIComponent(d):"";ca(f,'<script type="text/javascript" src="'+(0<d.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+d:"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(d,f,g,m){var q=document.createElement("div");q.style.whiteSpace="nowrap";var y=document.createElement("h3");
+mxUtils.write(y,mxResources.get("html"));y.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";q.appendChild(y);var F=document.createElement("div");F.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var C=document.createElement("input");C.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";C.setAttribute("value","url");C.setAttribute("type","radio");C.setAttribute("name","type-embedhtmldialog");y=C.cloneNode(!0);y.setAttribute("value",
+"copy");F.appendChild(y);var I=document.createElement("span");mxUtils.write(I,mxResources.get("includeCopyOfMyDiagram"));F.appendChild(I);mxUtils.br(F);F.appendChild(C);I=document.createElement("span");mxUtils.write(I,mxResources.get("publicDiagramUrl"));F.appendChild(I);var G=this.getCurrentFile();null==g&&null!=G&&G.constructor==window.DriveFile&&(I=document.createElement("a"),I.style.paddingLeft="12px",I.style.color="gray",I.style.cursor="pointer",mxUtils.write(I,mxResources.get("share")),F.appendChild(I),
+mxEvent.addListener(I,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(G.getId())})));y.setAttribute("checked","checked");null==g&&C.setAttribute("disabled","disabled");q.appendChild(F);var Z=this.addLinkSection(q),ca=this.addCheckbox(q,mxResources.get("zoom"),!0,null,!0);mxUtils.write(q,":");var aa=document.createElement("input");aa.setAttribute("type","text");aa.style.marginRight="16px";aa.style.width="60px";aa.style.marginLeft="4px";aa.style.marginRight="12px";
+aa.value="100%";q.appendChild(aa);var Y=this.addCheckbox(q,mxResources.get("fit"),!0);F=null!=this.pages&&1<this.pages.length;var qa=qa=this.addCheckbox(q,mxResources.get("allPages"),F,!F),Q=this.addCheckbox(q,mxResources.get("layers"),!0),X=this.addCheckbox(q,mxResources.get("tags"),!0),fa=this.addCheckbox(q,mxResources.get("lightbox"),!0),ka=null;F=380;if(EditorUi.enableHtmlEditOption){ka=this.addEditButton(q,fa);var ia=ka.getEditInput();ia.style.marginBottom="16px";F+=50;mxEvent.addListener(fa,
+"change",function(){fa.checked?ia.removeAttribute("disabled"):ia.setAttribute("disabled","disabled");ia.checked&&fa.checked?ka.getEditSelect().removeAttribute("disabled"):ka.getEditSelect().setAttribute("disabled","disabled")})}d=new CustomDialog(this,q,mxUtils.bind(this,function(){m(C.checked?g:null,ca.checked,aa.value,Z.getTarget(),Z.getColor(),Y.checked,qa.checked,Q.checked,X.checked,fa.checked,null!=ka?ka.getLink():null)}),null,d,f);this.showDialog(d.container,340,F,!0,!0);y.focus()};EditorUi.prototype.showPublishLinkDialog=
+function(d,f,g,m,q,y,F,C){var I=document.createElement("div");I.style.whiteSpace="nowrap";var G=document.createElement("h3");mxUtils.write(G,d||mxResources.get("link"));G.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";I.appendChild(G);var Z=this.getCurrentFile();d=0;if(null==Z||Z.constructor!=window.DriveFile||f)F=null!=F?F:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{d=80;F=null!=F?F:"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 ca=document.createElement("div");ca.style.whiteSpace="normal";mxUtils.write(ca,mxResources.get("linkAccountRequired"));G.appendChild(ca);ca=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(Z.getId())}));ca.style.marginTop="12px";ca.className="geBtn";G.appendChild(ca);I.appendChild(G);ca=document.createElement("a");
+ca.style.paddingLeft="12px";ca.style.color="gray";ca.style.fontSize="11px";ca.style.cursor="pointer";mxUtils.write(ca,mxResources.get("check"));G.appendChild(ca);mxEvent.addListener(ca,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(L){this.spinner.stop();L=new ErrorDialog(this,null,mxResources.get(null!=L?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(L.container,
+300,80,!0,!1);L.init()}))}))}var aa=null,Y=null;if(null!=g||null!=m)d+=30,mxUtils.write(I,mxResources.get("width")+":"),aa=document.createElement("input"),aa.setAttribute("type","text"),aa.style.marginRight="16px",aa.style.width="50px",aa.style.marginLeft="6px",aa.style.marginRight="16px",aa.style.marginBottom="10px",aa.value="100%",I.appendChild(aa),mxUtils.write(I,mxResources.get("height")+":"),Y=document.createElement("input"),Y.setAttribute("type","text"),Y.style.width="50px",Y.style.marginLeft=
+"6px",Y.style.marginBottom="10px",Y.value=m+"px",I.appendChild(Y),mxUtils.br(I);var qa=this.addLinkSection(I,y);g=null!=this.pages&&1<this.pages.length;var Q=null;if(null==Z||Z.constructor!=window.DriveFile||f)Q=this.addCheckbox(I,mxResources.get("allPages"),g,!g);var X=this.addCheckbox(I,mxResources.get("lightbox"),!0,null,null,!y),fa=this.addEditButton(I,X),ka=fa.getEditInput();y&&(ka.style.marginLeft=X.style.marginLeft,X.style.display="none",d-=20);var ia=this.addCheckbox(I,mxResources.get("layers"),
+!0);ia.style.marginLeft=ka.style.marginLeft;ia.style.marginTop="8px";var V=this.addCheckbox(I,mxResources.get("tags"),!0);V.style.marginLeft=ka.style.marginLeft;V.style.marginBottom="16px";V.style.marginTop="16px";mxEvent.addListener(X,"change",function(){X.checked?(ia.removeAttribute("disabled"),ka.removeAttribute("disabled")):(ia.setAttribute("disabled","disabled"),ka.setAttribute("disabled","disabled"));ka.checked&&X.checked?fa.getEditSelect().removeAttribute("disabled"):fa.getEditSelect().setAttribute("disabled",
+"disabled")});f=new CustomDialog(this,I,mxUtils.bind(this,function(){q(qa.getTarget(),qa.getColor(),null==Q?!0:Q.checked,X.checked,fa.getLink(),ia.checked,null!=aa?aa.value:null,null!=Y?Y.value:null,V.checked)}),null,mxResources.get("create"),F,C);this.showDialog(f.container,340,300+d,!0,!0);null!=aa?(aa.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?aa.select():document.execCommand("selectAll",!1,null)):qa.focus()};EditorUi.prototype.showRemoteExportDialog=function(d,f,g,m,q){var y=
+document.createElement("div");y.style.whiteSpace="nowrap";var F=document.createElement("h3");mxUtils.write(F,mxResources.get("image"));F.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(q?"10":"4")+"px";y.appendChild(F);if(q){mxUtils.write(y,mxResources.get("zoom")+":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px";C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value=this.lastExportZoom||"100%";
+y.appendChild(C);mxUtils.write(y,mxResources.get("borderWidth")+":");var I=document.createElement("input");I.setAttribute("type","text");I.style.marginRight="16px";I.style.width="60px";I.style.marginLeft="4px";I.value=this.lastExportBorder||"0";y.appendChild(I);mxUtils.br(y)}var G=this.addCheckbox(y,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),Z=m?null:this.addCheckbox(y,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram);F=this.editor.graph;var ca=
+m?null:this.addCheckbox(y,mxResources.get("transparentBackground"),F.background==mxConstants.NONE||null==F.background);null!=ca&&(ca.style.marginBottom="16px");d=new CustomDialog(this,y,mxUtils.bind(this,function(){var aa=parseInt(C.value)/100||1,Y=parseInt(I.value)||0;g(!G.checked,null!=Z?Z.checked:!1,null!=ca?ca.checked:!1,aa,Y)}),null,d,f);this.showDialog(d.container,300,(q?25:0)+(m?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(d,f,g,m,q,y,F,C,I){F=null!=F?F:Editor.defaultIncludeDiagram;
+var G=document.createElement("div");G.style.whiteSpace="nowrap";var Z=this.editor.graph,ca="jpeg"==C?220:300,aa=document.createElement("h3");mxUtils.write(aa,d);aa.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";G.appendChild(aa);mxUtils.write(G,mxResources.get("zoom")+":");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=this.lastExportZoom||
+"100%";G.appendChild(Y);mxUtils.write(G,mxResources.get("borderWidth")+":");var qa=document.createElement("input");qa.setAttribute("type","text");qa.style.marginRight="16px";qa.style.width="60px";qa.style.marginLeft="4px";qa.value=this.lastExportBorder||"0";G.appendChild(qa);mxUtils.br(G);var Q=this.addCheckbox(G,mxResources.get("selectionOnly"),!1,Z.isSelectionEmpty()),X=document.createElement("input");X.style.marginTop="16px";X.style.marginRight="8px";X.style.marginLeft="24px";X.setAttribute("disabled",
+"disabled");X.setAttribute("type","checkbox");var fa=document.createElement("select");fa.style.marginTop="16px";fa.style.marginLeft="8px";d=["selectionOnly","diagram","page"];var ka={};for(aa=0;aa<d.length;aa++)if(!Z.isSelectionEmpty()||"selectionOnly"!=d[aa]){var ia=document.createElement("option");mxUtils.write(ia,mxResources.get(d[aa]));ia.setAttribute("value",d[aa]);fa.appendChild(ia);ka[d[aa]]=ia}I?(mxUtils.write(G,mxResources.get("size")+":"),G.appendChild(fa),mxUtils.br(G),ca+=26,mxEvent.addListener(fa,
+"change",function(){"selectionOnly"==fa.value&&(Q.checked=!0)})):y&&(G.appendChild(X),mxUtils.write(G,mxResources.get("crop")),mxUtils.br(G),ca+=30,mxEvent.addListener(Q,"change",function(){Q.checked?X.removeAttribute("disabled"):X.setAttribute("disabled","disabled")}));Z.isSelectionEmpty()?I&&(Q.style.display="none",Q.nextSibling.style.display="none",Q.nextSibling.nextSibling.style.display="none",ca-=30):(fa.value="diagram",X.setAttribute("checked","checked"),X.defaultChecked=!0,mxEvent.addListener(Q,
+"change",function(){fa.value=Q.checked?"selectionOnly":"diagram"}));var V=this.addCheckbox(G,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=C),L=null;Editor.isDarkMode()&&(L=this.addCheckbox(G,mxResources.get("dark"),!0),ca+=26);var ea=this.addCheckbox(G,mxResources.get("shadow"),Z.shadowVisible),O=null;if("png"==C||"jpeg"==C)O=this.addCheckbox(G,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),ca+=30;var N=this.addCheckbox(G,mxResources.get("includeCopyOfMyDiagram"),
+F,null,null,"jpeg"!=C);N.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 la=document.createElement("select");la.style.maxWidth="260px";la.style.marginLeft="8px";la.style.marginRight="10px";la.style.marginBottom="16px";la.className="geBtn";y=document.createElement("option");y.setAttribute("value","none");mxUtils.write(y,
+mxResources.get("noChange"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","embedFonts");mxUtils.write(y,mxResources.get("embedFonts"));la.appendChild(y);y=document.createElement("option");y.setAttribute("value","lblToSvg");mxUtils.write(y,mxResources.get("lblToSvg"));this.isOffline()||EditorUi.isElectronApp||la.appendChild(y);mxEvent.addListener(la,"change",mxUtils.bind(this,function(){"lblToSvg"==la.value?(ba.checked=!0,ba.setAttribute("disabled","disabled"),ka.page.style.display=
+"none","page"==fa.value&&(fa.value="diagram"),ea.checked=!1,ea.setAttribute("disabled","disabled"),H.style.display="inline-block",u.style.display="none"):"disabled"==ba.getAttribute("disabled")&&(ba.checked=!1,ba.removeAttribute("disabled"),ea.removeAttribute("disabled"),ka.page.style.display="",H.style.display="none",u.style.display="")}));f&&(G.appendChild(ba),mxUtils.write(G,mxResources.get("embedImages")),mxUtils.br(G),mxUtils.write(G,mxResources.get("txtSettings")+":"),G.appendChild(la),mxUtils.br(G),
+ca+=60);var u=document.createElement("select");u.style.maxWidth="260px";u.style.marginLeft="8px";u.style.marginRight="10px";u.className="geBtn";f=document.createElement("option");f.setAttribute("value","auto");mxUtils.write(f,mxResources.get("automatic"));u.appendChild(f);f=document.createElement("option");f.setAttribute("value","blank");mxUtils.write(f,mxResources.get("openInNewWindow"));u.appendChild(f);f=document.createElement("option");f.setAttribute("value","self");mxUtils.write(f,mxResources.get("openInThisWindow"));
+u.appendChild(f);var H=document.createElement("div");mxUtils.write(H,mxResources.get("LinksLost"));H.style.margin="7px";H.style.display="none";"svg"==C&&(mxUtils.write(G,mxResources.get("links")+":"),G.appendChild(u),G.appendChild(H),mxUtils.br(G),mxUtils.br(G),ca+=50);g=new CustomDialog(this,G,mxUtils.bind(this,function(){this.lastExportBorder=qa.value;this.lastExportZoom=Y.value;q(Y.value,V.checked,!Q.checked,ea.checked,N.checked,ba.checked,qa.value,X.checked,!1,u.value,null!=O?O.checked:null,null!=
+L?L.checked:null,fa.value,"embedFonts"==la.value,"lblToSvg"==la.value)}),null,g,m);this.showDialog(g.container,340,ca,!0,!0,null,null,null,null,!0);Y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?Y.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,f,g,m,q){var y=document.createElement("div");y.style.whiteSpace="nowrap";var F=this.editor.graph;if(null!=f){var C=document.createElement("h3");mxUtils.write(C,f);C.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";
+y.appendChild(C)}var I=this.addCheckbox(y,mxResources.get("fit"),!0),G=this.addCheckbox(y,mxResources.get("shadow"),F.shadowVisible&&m,!m),Z=this.addCheckbox(y,g),ca=this.addCheckbox(y,mxResources.get("lightbox"),!0),aa=this.addEditButton(y,ca),Y=aa.getEditInput(),qa=1<F.model.getChildCount(F.model.getRoot()),Q=this.addCheckbox(y,mxResources.get("layers"),qa,!qa);Q.style.marginLeft=Y.style.marginLeft;Q.style.marginBottom="12px";Q.style.marginTop="8px";mxEvent.addListener(ca,"change",function(){ca.checked?
+(qa&&Q.removeAttribute("disabled"),Y.removeAttribute("disabled")):(Q.setAttribute("disabled","disabled"),Y.setAttribute("disabled","disabled"));Y.checked&&ca.checked?aa.getEditSelect().removeAttribute("disabled"):aa.getEditSelect().setAttribute("disabled","disabled")});f=new CustomDialog(this,y,mxUtils.bind(this,function(){d(I.checked,G.checked,Z.checked,ca.checked,aa.getLink(),Q.checked)}),null,mxResources.get("embed"),q);this.showDialog(f.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=
+function(d,f,g,m,q,y,F,C){function I(Y){var qa=" ",Q="";m&&(qa=" 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!=Z?"&page="+Z:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",Q+=
+"cursor:pointer;");d&&(Q+="max-width:100%;");var X="";g&&(X=' width="'+Math.round(G.width)+'" height="'+Math.round(G.height)+'"');F('<img src="'+Y+'"'+X+(""!=Q?' style="'+Q+'"':"")+qa+"/>")}var G=this.editor.graph.getGraphBounds(),Z=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(Y){var qa=m?this.getFileData(!0):null;Y=this.createImageDataUri(Y,qa,"png");I(Y)}),null,null,null,mxUtils.bind(this,function(Y){C({message:mxResources.get("unknownError")})}),
+null,!0,g?2:1,null,f,null,null,Editor.defaultBorder);else if(f=this.getFileData(!0),G.width*G.height<=MAX_AREA&&f.length<=MAX_REQUEST_SIZE){var ca="";g&&(ca="&w="+Math.round(2*G.width)+"&h="+Math.round(2*G.height));var aa=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(m?"1":"0")+ca+"&xml="+encodeURIComponent(f));aa.send(mxUtils.bind(this,function(){200<=aa.getStatus()&&299>=aa.getStatus()?I("data:image/png;base64,"+aa.getText()):C({message:mxResources.get("unknownError")})}))}else C({message:mxResources.get("drawingTooLarge")})};
+EditorUi.prototype.createEmbedSvg=function(d,f,g,m,q,y,F){var C=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!g),I=C.getElementsByTagName("a");if(null!=I)for(var G=0;G<I.length;G++){var Z=I[G].getAttribute("href");null!=Z&&"#"==Z.charAt(0)&&"_blank"==I[G].getAttribute("target")&&I[G].removeAttribute("target")}m&&C.setAttribute("content",this.getFileData(!0));f&&this.editor.graph.addSvgShadow(C);if(g){var ca=" ",aa="";m&&(ca="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"+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}})(this);\"",aa+="cursor:pointer;");d&&(aa+="max-width:100%;");this.editor.convertImages(C,mxUtils.bind(this,function(Y){F('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(Y))+'"'+(""!=aa?' style="'+aa+'"':"")+ca+"/>")}))}else aa="",m&&(f=this.getSelectedPageIndex(),C.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
+EditorUi.lightboxHost+"/?client=1"+(null!=f?"&page="+f:"")+(q?"&edit=_blank":"")+(y?"&layers=1":"")+"');}}})(this);"),aa+="cursor:pointer;"),d&&(d=parseInt(C.getAttribute("width")),q=parseInt(C.getAttribute("height")),C.setAttribute("viewBox","-0.5 -0.5 "+d+" "+q),aa+="max-width:100%;max-height:"+q+"px;",C.removeAttribute("height")),""!=aa&&C.setAttribute("style",aa),this.editor.addFontCss(C),this.editor.graph.mathEnabled&&this.editor.addMathCss(C),F(mxUtils.getXml(C))};EditorUi.prototype.timeSince=
function(d){d=Math.floor((new Date-d)/1E3);var f=Math.floor(d/31536E3);if(1<f)return f+" "+mxResources.get("years");f=Math.floor(d/2592E3);if(1<f)return f+" "+mxResources.get("months");f=Math.floor(d/86400);if(1<f)return f+" "+mxResources.get("days");f=Math.floor(d/3600);if(1<f)return f+" "+mxResources.get("hours");f=Math.floor(d/60);return 1<f?f+" "+mxResources.get("minutes"):1==f?f+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(d,f){if(null!=d){var g=null;if("diagram"==
d.nodeName)g=d;else if("mxfile"==d.nodeName){var m=d.getElementsByTagName("diagram");if(0<m.length){g=m[0];var q=f.getGlobalVariable;f.getGlobalVariable=function(y){return"page"==y?g.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==y?1:q.apply(this,arguments)}}}null!=g&&(d=Editor.parseDiagramNode(g))}m=this.editor.graph;try{this.editor.graph=f,this.editor.setGraphXml(d)}catch(y){}finally{this.editor.graph=m}return d};EditorUi.prototype.getPngFileProperties=function(d){var f=
1,g=0;if(null!=d){if(d.hasAttribute("scale")){var m=parseFloat(d.getAttribute("scale"));!isNaN(m)&&0<m&&(f=m)}d.hasAttribute("border")&&(m=parseInt(d.getAttribute("border")),!isNaN(m)&&0<m&&(g=m))}return{scale:f,border:g}};EditorUi.prototype.getEmbeddedPng=function(d,f,g,m,q){try{var y=this.editor.graph,F=null!=y.themes&&"darkTheme"==y.defaultThemeName,C=null;if(null!=g&&0<g.length)y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet()),document.body.appendChild(y.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(g).documentElement,
-!0),y),C=g;else if(F||null!=this.pages&&this.currentPage!=this.pages[0]){y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet());var I=y.getGlobalVariable;y.setBackgroundImage=this.editor.graph.setBackgroundImage;var G=this.pages[0];this.currentPage==G?y.setBackgroundImage(this.editor.graph.backgroundImage):null!=G.viewState&&null!=G.viewState&&y.setBackgroundImage(G.viewState.backgroundImage);y.getGlobalVariable=function(aa){return"page"==aa?G.getName():"pagenumber"==aa?1:I.apply(this,
-arguments)};document.body.appendChild(y.container);y.model.setRoot(G.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(aa){try{null==C&&(C=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var ca=aa.toDataURL("image/png");ca=Editor.writeGraphModelToPng(ca,"tEXt","mxfile",encodeURIComponent(C));d(ca.substring(ca.lastIndexOf(",")+1));y!=this.editor.graph&&y.container.parentNode.removeChild(y.container)}catch(ba){null!=f&&f(ba)}}),null,null,null,mxUtils.bind(this,function(aa){null!=
-f&&f(aa)}),null,null,m,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(aa){null!=f&&f(aa)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba){C=null!=C?C:!0;aa=null!=aa?aa:0;F=null!=I?I:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,aa,null,null,y,null,null,null,f.shadowVisible||ca,null,ba,"diagram");(f.shadowVisible||ca)&&f.addSvgShadow(y,null,null,0==aa);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Z=mxUtils.bind(this,
-function(qa){qa=(m?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(N){Z(N)})):Z(qa)}));else return Z(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(m){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba){I=null!=I?I:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Z=this.editor.graph.isSelectionEmpty();g=null!=g?g:Z;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
-q?this.getFileData(!0,null,null,null,g,C):null,I,null==this.pages||0==this.pages.length,aa)}catch(N){this.handleError(N)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,m,null,null,y,F,G,ca,ba)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,m,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
-[];try{var I=this.editor.graph;if(null!=d&&0<d.length){I.model.beginUpdate();try{var G=mxUtils.parseXml(d);d={};var aa=this.editor.extractGraphModel(G.documentElement,null!=this.pages);if(null!=aa&&"mxfile"==aa.nodeName&&null!=this.pages){var ca=aa.getElementsByTagName("diagram");if(1==ca.length&&!y){if(aa=Editor.parseDiagramNode(ca[0]),null!=this.currentPage&&(d[ca[0].getAttribute("id")]=this.currentPage.getId(),this.isBlankFile())){var ba=ca[0].getAttribute("name");null!=ba&&""!=ba&&this.editor.graph.model.execute(new RenamePage(this,
-this.currentPage,ba))}}else if(0<ca.length){y=[];var Z=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[ca[0].getAttribute("id")]=this.pages[0].getId(),aa=Editor.parseDiagramNode(ca[0]),m=!1,Z=1);for(;Z<ca.length;Z++){var qa=ca[Z].getAttribute("id");ca[Z].removeAttribute("id");var N=this.updatePageRoot(new DiagramPage(ca[Z]));d[qa]=ca[Z].getAttribute("id");var Y=this.pages.length;null==N.getName()&&N.setName(mxResources.get("pageWithNumber",[Y+1]));I.model.execute(new ChangePage(this,
-N,N,Y,!0));y.push(N)}this.updatePageLinks(d,y)}}if(null!=aa&&"mxGraphModel"===aa.nodeName){C=I.importGraphModel(aa,f,g,m);if(null!=C)for(Z=0;Z<C.length;Z++)this.updatePageLinksForCell(d,C[Z]);var ea=I.parseBackgroundImage(aa.getAttribute("backgroundImage"));if(null!=ea&&null!=ea.originalSrc){this.updateBackgroundPageLink(d,ea);var ka=new ChangePageSetup(this,null,ea);ka.ignoreColor=!0;I.model.execute(ka)}}F&&this.insertHandler(C,null,null,I.defaultVertexStyle,I.defaultEdgeStyle,!1,!0)}finally{I.model.endUpdate()}}}catch(ja){if(q)throw ja;
-this.handleError(ja)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(m){}};EditorUi.prototype.updatePageLinksForCell=
+!0),y),C=g;else if(F||null!=this.pages&&this.currentPage!=this.pages[0]){y=this.createTemporaryGraph(F?y.getDefaultStylesheet():y.getStylesheet());var I=y.getGlobalVariable;y.setBackgroundImage=this.editor.graph.setBackgroundImage;var G=this.pages[0];this.currentPage==G?y.setBackgroundImage(this.editor.graph.backgroundImage):null!=G.viewState&&null!=G.viewState&&y.setBackgroundImage(G.viewState.backgroundImage);y.getGlobalVariable=function(Z){return"page"==Z?G.getName():"pagenumber"==Z?1:I.apply(this,
+arguments)};document.body.appendChild(y.container);y.model.setRoot(G.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(Z){try{null==C&&(C=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var ca=Z.toDataURL("image/png");ca=Editor.writeGraphModelToPng(ca,"tEXt","mxfile",encodeURIComponent(C));d(ca.substring(ca.lastIndexOf(",")+1));y!=this.editor.graph&&y.container.parentNode.removeChild(y.container)}catch(aa){null!=f&&f(aa)}}),null,null,null,mxUtils.bind(this,function(Z){null!=
+f&&f(Z)}),null,null,m,null,y.shadowVisible,null,y,q,null,null,null,"diagram",null)}catch(Z){null!=f&&f(Z)}};EditorUi.prototype.getEmbeddedSvg=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa){C=null!=C?C:!0;Z=null!=Z?Z:0;F=null!=I?I:f.background;F==mxConstants.NONE&&(F=null);y=f.getSvg(F,G,Z,null,null,y,null,null,null,f.shadowVisible||ca,null,aa,"diagram");(f.shadowVisible||ca)&&f.addSvgShadow(y,null,null,0==Z);null!=d&&y.setAttribute("content",d);null!=g&&y.setAttribute("resource",g);var Y=mxUtils.bind(this,
+function(qa){qa=(m?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(qa);null!=q&&q(qa);return qa});f.mathEnabled&&this.editor.addMathCss(y);if(null!=q)this.embedFonts(y,mxUtils.bind(this,function(qa){C?this.editor.convertImages(qa,mxUtils.bind(this,function(Q){Y(Q)})):Y(qa)}));else return Y(y)};EditorUi.prototype.embedFonts=function(d,f){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),
+this.editor.embedExtFonts(mxUtils.bind(this,function(g){try{null!=g&&this.editor.addFontCss(d,g),f(d)}catch(m){f(d)}}))}catch(g){f(d)}}))};EditorUi.prototype.exportImage=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa){I=null!=I?I:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var Y=this.editor.graph.isSelectionEmpty();g=null!=g?g:Y;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(qa){this.spinner.stop();try{this.saveCanvas(qa,
+q?this.getFileData(!0,null,null,null,g,C):null,I,null==this.pages||0==this.pages.length,Z)}catch(Q){this.handleError(Q)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(qa){this.spinner.stop();this.handleError(qa)}),null,g,d||1,f,m,null,null,y,F,G,ca,aa)}catch(qa){this.spinner.stop(),this.handleError(qa)}}};EditorUi.prototype.isCorsEnabledForUrl=function(d){return this.editor.isCorsEnabledForUrl(d)};EditorUi.prototype.importXml=function(d,f,g,m,q,y,F){f=null!=f?f:0;g=null!=g?g:0;var C=
+[];try{var I=this.editor.graph;if(null!=d&&0<d.length){I.model.beginUpdate();try{var G=mxUtils.parseXml(d);d={};var Z=this.editor.extractGraphModel(G.documentElement,null!=this.pages);if(null!=Z&&"mxfile"==Z.nodeName&&null!=this.pages){var ca=Z.getElementsByTagName("diagram");if(1==ca.length&&!y){if(Z=Editor.parseDiagramNode(ca[0]),null!=this.currentPage&&(d[ca[0].getAttribute("id")]=this.currentPage.getId(),this.isBlankFile())){var aa=ca[0].getAttribute("name");null!=aa&&""!=aa&&this.editor.graph.model.execute(new RenamePage(this,
+this.currentPage,aa))}}else if(0<ca.length){y=[];var Y=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(d[ca[0].getAttribute("id")]=this.pages[0].getId(),Z=Editor.parseDiagramNode(ca[0]),m=!1,Y=1);for(;Y<ca.length;Y++){var qa=ca[Y].getAttribute("id");ca[Y].removeAttribute("id");var Q=this.updatePageRoot(new DiagramPage(ca[Y]));d[qa]=ca[Y].getAttribute("id");var X=this.pages.length;null==Q.getName()&&Q.setName(mxResources.get("pageWithNumber",[X+1]));I.model.execute(new ChangePage(this,
+Q,Q,X,!0));y.push(Q)}this.updatePageLinks(d,y)}}if(null!=Z&&"mxGraphModel"===Z.nodeName){C=I.importGraphModel(Z,f,g,m);if(null!=C)for(Y=0;Y<C.length;Y++)this.updatePageLinksForCell(d,C[Y]);var fa=I.parseBackgroundImage(Z.getAttribute("backgroundImage"));if(null!=fa&&null!=fa.originalSrc){this.updateBackgroundPageLink(d,fa);var ka=new ChangePageSetup(this,null,fa);ka.ignoreColor=!0;I.model.execute(ka)}}F&&this.insertHandler(C,null,null,I.defaultVertexStyle,I.defaultEdgeStyle,!1,!0)}finally{I.model.endUpdate()}}}catch(ia){if(q)throw ia;
+this.handleError(ia)}return C};EditorUi.prototype.updatePageLinks=function(d,f){for(var g=0;g<f.length;g++)this.updatePageLinksForCell(d,f[g].root),null!=f[g].viewState&&this.updateBackgroundPageLink(d,f[g].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(d,f){try{if(null!=f&&Graph.isPageLink(f.originalSrc)){var g=d[f.originalSrc.substring(f.originalSrc.indexOf(",")+1)];null!=g&&(f.originalSrc="data:page/id,"+g)}}catch(m){}};EditorUi.prototype.updatePageLinksForCell=
function(d,f){var g=document.createElement("div"),m=this.editor.graph,q=m.getLinkForCell(f);null!=q&&m.setLinkForCell(f,this.updatePageLink(d,q));if(m.isHtmlLabel(f)){g.innerHTML=m.sanitizeHtml(m.getLabel(f));for(var y=g.getElementsByTagName("a"),F=!1,C=0;C<y.length;C++)q=y[C].getAttribute("href"),null!=q&&(y[C].setAttribute("href",this.updatePageLink(d,q)),F=!0);F&&m.labelChanged(f,g.innerHTML)}for(C=0;C<m.model.getChildCount(f);C++)this.updatePageLinksForCell(d,m.model.getChildAt(f,C))};EditorUi.prototype.updatePageLink=
function(d,f){if(Graph.isPageLink(f)){var g=d[f.substring(f.indexOf(",")+1)];f=null!=g?"data:page/id,"+g:null}else if("data:action/json,"==f.substring(0,17))try{var m=JSON.parse(f.substring(17));if(null!=m.actions){for(var q=0;q<m.actions.length;q++){var y=m.actions[q];if(null!=y.open&&Graph.isPageLink(y.open)){var F=y.open.substring(y.open.indexOf(",")+1);g=d[F];null!=g?y.open="data:page/id,"+g:null==this.getPageById(F)&&delete y.open}}f="data:action/json,"+JSON.stringify(m)}}catch(C){}return f};
EditorUi.prototype.isRemoteVisioFormat=function(d){return/(\.v(sd|dx))($|\?)/i.test(d)||/(\.vs(s|x))($|\?)/i.test(d)};EditorUi.prototype.importVisio=function(d,f,g,m,q){m=null!=m?m:d.name;g=null!=g?g:mxUtils.bind(this,function(F){this.handleError(F)});var y=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var F=this.isRemoteVisioFormat(m);try{var C="UNKNOWN-VISIO",I=m.lastIndexOf(".");if(0<=I&&I<m.length)C=m.substring(I+1).toUpperCase();else{var G=m.lastIndexOf("/");0<=
-G&&G<m.length&&(m=m.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+m,label:F?"remote":"local"})}catch(ca){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,m);var aa=new XMLHttpRequest;aa.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(m)?"?stencil=1":""));aa.responseType="blob";this.addRemoteServiceSecurityCheck(aa);
-null!=q&&aa.setRequestHeader("x-convert-custom",q);aa.onreadystatechange=mxUtils.bind(this,function(){if(4==aa.readyState)if(200<=aa.status&&299>=aa.status)try{var ca=aa.response;if("text/xml"==ca.type){var ba=new FileReader;ba.onload=mxUtils.bind(this,function(Z){try{f(Z.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});ba.readAsText(ca)}else this.doImportVisio(ca,f,g,m)}catch(Z){g(Z)}else try{""==aa.responseType||"text"==aa.responseType?g({message:aa.responseText}):(ba=
-new FileReader,ba.onload=function(){g({message:JSON.parse(ba.result).Message})},ba.readAsText(aa.response))}catch(Z){g({})}});aa.send(F)}else try{this.doImportVisio(d,f,g,m)}catch(ca){g(ca)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,
-function(q){this.handleError(q)});var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?m():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",m))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=
-!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var m=mxUtils.bind(this,
-function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var q=JSON.parse(d);f(LucidImporter.importState(q));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+d.length}),null!=window.console&&"1"==urlParams.test){var y=[(new Date).toISOString(),"convertLucidChart",q];null!=q.state&&y.push(JSON.parse(q.state));if(null!=q.svgThumbs)for(var F=0;F<q.svgThumbs.length;F++)y.push(Editor.createSvgDataUri(q.svgThumbs[F]));null!=q.thumb&&y.push(q.thumb);
-console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(m,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){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",m)})})})}):mxscript("js/extensions.min.js",m))};EditorUi.prototype.generateMermaidImage=function(d,f,g,m){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=
-F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");if(0<C.length){var I=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(I)||isNaN(G))try{var aa=C[0].getAttribute("viewBox").split(/\s+/);I=parseFloat(aa[2]);G=parseFloat(aa[3])}catch(ca){I=I||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),I,G)}else m({message:mxResources.get("invalidInput")})}catch(ca){m(ca)}})}catch(F){m(F)}};
-"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,m){function q(C,I,G){c1=C>>2;c2=(C&3)<<4|I>>4;c3=(I&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+
-C);C-=26;return 0==C?"-":1==C?"_":"?"}var F=new XMLHttpRequest;F.open("GET",("txt"==f?PLANT_URL+"/txt/":"png"==f?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(C){r="";for(i=0;i<C.length;i+=3)r=i+2==C.length?r+q(C.charCodeAt(i),C.charCodeAt(i+1),0):i+1==C.length?r+q(C.charCodeAt(i),0,0):r+q(C.charCodeAt(i),C.charCodeAt(i+1),C.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(d))),!0);"txt"!=f&&(F.responseType="blob");F.onload=function(C){if(200<=this.status&&300>this.status)if("txt"==
-f)g(this.response);else{var I=new FileReader;I.readAsDataURL(this.response);I.onloadend=function(G){var aa=new Image;aa.onload=function(){try{var ca=aa.width,ba=aa.height;if(0==ca&&0==ba){var Z=I.result,qa=Z.indexOf(","),N=decodeURIComponent(escape(atob(Z.substring(qa+1)))),Y=mxUtils.parseXml(N).getElementsByTagName("svg");0<Y.length&&(ca=parseFloat(Y[0].getAttribute("width")),ba=parseFloat(Y[0].getAttribute("height")))}g(I.result,ca,ba)}catch(ea){m(ea)}};aa.src=I.result};I.onerror=function(G){m(G)}}else m(C)};
-F.onerror=function(C){m(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var m=this.editor.graph,q=null;m.getModel().beginUpdate();try{q=m.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),m.updateCellSize(q,!0)}finally{m.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?
-this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(d.replace(/\s+/g," "),mxUtils.bind(this,function(ba){4==ba.readyState&&200<=ba.status&&299>=ba.status&&this.editor.graph.setSelectionCells(this.insertTextAt(ba.responseText,f,g,!0))}));else if("data:"==d.substring(0,5)||!this.isOffline()&&(q||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d))){var I=this.editor.graph;if("data:application/pdf;base64,"==d.substring(0,28)){var G=Editor.extractGraphModelFromPdf(d);if(null!=
-G&&0<G.length)return this.importXml(G,f,g,y,!0,C)}if(Editor.isPngDataUrl(d)&&(G=Editor.extractGraphModelFromPng(d),null!=G&&0<G.length))return this.importXml(G,f,g,y,!0,C);if("data:image/svg+xml;"==d.substring(0,19))try{G=null;"data:image/svg+xml;base64,"==d.substring(0,26)?(G=d.substring(d.indexOf(",")+1),G=window.atob&&!mxClient.IS_SF?atob(G):Base64.decode(G,!0)):G=decodeURIComponent(d.substring(d.indexOf(",")+1));var aa=this.importXml(G,f,g,y,!0,C);if(0<aa.length)return aa}catch(ba){}this.loadImage(d,
-mxUtils.bind(this,function(ba){if("data:"==d.substring(0,5))this.resizeImage(ba,d,mxUtils.bind(this,function(N,Y,ea){I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),Y,ea,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(N)+";"))}),F,this.maxImageSize);else{var Z=Math.min(1,Math.min(this.maxImageSize/ba.width,this.maxImageSize/ba.height)),qa=Math.round(ba.width*Z);ba=Math.round(ba.height*
-Z);I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),qa,ba,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";"))}}),mxUtils.bind(this,function(){var ba=null;I.getModel().beginUpdate();try{ba=I.insertVertex(I.getDefaultParent(),null,d,I.snap(f),I.snap(g),1,1,"text;"+(m?"html=1;":"")),I.updateCellSize(ba),I.fireEvent(new mxEventObject("textInserted","cells",[ba]))}finally{I.getModel().endUpdate()}I.setSelectionCell(ba)}))}else{d=
-Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,function(ba){this.editor.graph.setSelectionCells(this.importXml(ba,f,g,y,null,C))}),mxUtils.bind(this,function(ba){this.handleError(ba)}));else{I=this.editor.graph;q=null;I.getModel().beginUpdate();try{q=I.insertVertex(I.getDefaultParent(),null,"",I.snap(f),I.snap(g),1,1,"text;whiteSpace=wrap;"+(m?"html=1;":""));
-I.fireEvent(new mxEventObject("textInserted","cells",[q]));"<"==d.charAt(0)&&d.indexOf(">")==d.length-1&&(d=mxUtils.htmlEntities(d));d.length>this.maxTextBytes&&(d=d.substring(0,this.maxTextBytes)+"...");q.value=d;I.updateCellSize(q);if(0<this.maxTextWidth&&q.geometry.width>this.maxTextWidth){var ca=I.getPreferredSizeForCell(q,this.maxTextWidth);q.geometry.width=ca.width;q.geometry.height=ca.height}Graph.isLink(q.value)&&I.setLinkForCell(q,q.value);q.geometry.width+=I.gridSize;q.geometry.height+=
-I.gridSize}finally{I.getModel().endUpdate()}return[q]}}return[]};EditorUi.prototype.formatFileSize=function(d){var f=-1;do d/=1024,f++;while(1024<d);return Math.max(d,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[f]};EditorUi.prototype.convertDataUri=function(d){if("data:"==d.substring(0,5)){var f=d.indexOf(";");0<f&&(d=d.substring(0,f)+d.substring(d.indexOf(",",f+1)))}return d};EditorUi.prototype.isRemoteFileFormat=function(d,f){return/("contentType":\s*"application\/gliffy\+json")/.test(d)};
-EditorUi.prototype.isLucidChartData=function(d){return null!=d&&('{"state":"{\\"Properties\\":'==d.substring(0,26)||'{"Properties":'==d.substring(0,14))};EditorUi.prototype.importLocalFile=function(d,f){if(d&&Graph.fileSupport){if(null==this.importFileInputElt){var g=document.createElement("input");g.setAttribute("type","file");mxEvent.addListener(g,"change",mxUtils.bind(this,function(){null!=g.files&&(this.importFiles(g.files,null,null,this.maxImageSize),g.type="",g.type="file",g.value="")}));g.style.display=
-"none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.getFileContent(this,F,C,I)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.deleteFile(this,F,C,I)});if(!f){var m=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=
-new OpenFile(mxUtils.bind(this,function(F){this.hideDialog(F)}));window.openFile.setConsumer(mxUtils.bind(this,function(F,C){null!=C&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(C)?(F=new Blob([F],{type:"application/octet-stream"}),this.importVisio(F,mxUtils.bind(this,function(I){this.importXml(I,0,0,!0)}),null,C)):this.editor.graph.setSelectionCells(this.importXml(F,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,
-function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=m;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(d,f,g){var m=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,I=!1;y.forEach(function(G,aa){G=
-aa.name.toLowerCase();"diagram/diagram.xml"==G?(I=!0,aa.async("string").then(function(ca){0==ca.indexOf("<mxfile ")?f(ca):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=aa))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&m.isRemoteFileFormat(G,d.name)?m.isOffline()?m.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):m.parseFileData(G,mxUtils.bind(this,function(aa){4==aa.readyState&&(200<=aa.status&&299>=aa.status?f(aa.responseText):
-g())}),d.name):g()}):I||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,m,q,y,F,C,I,G,aa,ca){G=null!=G?G:!0;var ba=!1,Z=null,qa=mxUtils.bind(this,function(N){var Y=null;null!=N&&"<mxlibrary"==N.substring(0,10)?this.loadLibrary(new LocalLibrary(this,N,F)):Y=this.importXml(N,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null);null!=C&&
-C(Y)});"image"==f.substring(0,5)?(I=!1,"image/png"==f.substring(0,9)&&(f=aa?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Z=this.importXml(f,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null),I=!0)),I||(f=this.editor.graph,I=d.indexOf(";"),0<I&&(d=d.substring(0,I)+d.substring(d.indexOf(",",I+1))),G&&f.isGridEnabled()&&(g=f.snap(g),m=f.snap(m)),Z=[f.insertVertex(null,null,"",g,m,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-d+";")])):/(\.*<graphml )/.test(d)?(ba=!0,this.importGraphML(d,qa)):null!=I&&null!=F&&(/(\.v(dx|sdx?))($|\?)/i.test(F)||/(\.vs(x|sx?))($|\?)/i.test(F))?(ba=!0,this.importVisio(I,qa)):(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,F)?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(ba=!0,q=mxUtils.bind(this,function(N){4==N.readyState&&(200<=N.status&&299>=N.status?qa(N.responseText):null!=C&&C(null))}),null!=d?this.parseFileData(d,q,F):this.parseFile(I,
-q,F)):0==d.indexOf("PK")&&null!=I?(ba=!0,this.importZipFile(I,qa,mxUtils.bind(this,function(){Z=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Z)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Z=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G,null,null!=ca?mxEvent.isControlDown(ca):null));ba||null==C||C(Z);return Z};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Z=null!=
-f&&null!=g,qa=!0;f=null!=f?f:0;g=null!=g?g:0;var N=!1;if(!mxClient.IS_CHROMEAPP&&null!=d)for(var Y=aa||this.resampleThreshold,ea=0;ea<d.length;ea++)if("image/svg"!==d[ea].type.substring(0,9)&&"image/"===d[ea].type.substring(0,6)&&d[ea].size>Y){N=!0;break}var ka=mxUtils.bind(this,function(){var ja=this.editor.graph,V=ja.gridSize;q=null!=q?q:mxUtils.bind(this,function(la,u,H,O,T,R,da,P,ma){try{return null!=la&&"<mxlibrary"==la.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,
-la,da)),null):this.importFile(la,u,H,O,T,R,da,P,ma,Z,ca,ba)}catch(ra){return this.handleError(ra),null}});y=null!=y?y:mxUtils.bind(this,function(la){ja.setSelectionCells(la)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var J=d.length,W=J,Q=[],S=mxUtils.bind(this,function(la,u){Q[la]=u;if(0==--W){this.spinner.stop();if(null!=C)C(Q);else{var H=[];ja.getModel().beginUpdate();try{for(la=0;la<Q.length;la++){var O=Q[la]();null!=O&&(H=H.concat(O))}}finally{ja.getModel().endUpdate()}}y(H)}}),
-ha=0;ha<J;ha++)mxUtils.bind(this,function(la){var u=d[la];if(null!=u){var H=new FileReader;H.onload=mxUtils.bind(this,function(O){if(null==F||F(u))if("image/"==u.type.substring(0,6))if("image/svg"==u.type.substring(0,9)){var T=Graph.clipSvgDataUri(O.target.result),R=T.indexOf(",");R=decodeURIComponent(escape(atob(T.substring(R+1))));var da=mxUtils.parseXml(R);R=da.getElementsByTagName("svg");if(0<R.length){R=R[0];var P=ca?null:R.getAttribute("content");null!=P&&"<"!=P.charAt(0)&&"%"!=P.charAt(0)&&
-(P=unescape(window.atob?atob(P):Base64.decode(P,!0)));null!=P&&"%"==P.charAt(0)&&(P=decodeURIComponent(P));null==P||"<mxfile "!==P.substring(0,8)&&"<mxGraphModel "!==P.substring(0,14)?S(la,mxUtils.bind(this,function(){try{if(null!=da){var xa=da.getElementsByTagName("svg");if(0<xa.length){var ta=xa[0],Aa=ta.getAttribute("width"),Ca=ta.getAttribute("height");Aa=null!=Aa&&"%"!=Aa.charAt(Aa.length-1)?parseFloat(Aa):NaN;Ca=null!=Ca&&"%"!=Ca.charAt(Ca.length-1)?parseFloat(Ca):NaN;var Ba=ta.getAttribute("viewBox");
-if(null==Ba||0==Ba.length)ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);else if(isNaN(Aa)||isNaN(Ca)){var sa=Ba.split(" ");3<sa.length&&(Aa=parseFloat(sa[2]),Ca=parseFloat(sa[3]))}T=Editor.createSvgDataUri(mxUtils.getXml(ta));var Oa=Math.min(1,Math.min(m/Math.max(1,Aa)),m/Math.max(1,Ca)),Ta=q(T,u.type,f+la*V,g+la*V,Math.max(1,Math.round(Aa*Oa)),Math.max(1,Math.round(Ca*Oa)),u.name);if(isNaN(Aa)||isNaN(Ca)){var Sa=new Image;Sa.onload=mxUtils.bind(this,function(){Aa=Math.max(1,Sa.width);Ca=Math.max(1,
-Sa.height);Ta[0].geometry.width=Aa;Ta[0].geometry.height=Ca;ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);T=Editor.createSvgDataUri(mxUtils.getXml(ta));var $a=T.indexOf(";");0<$a&&(T=T.substring(0,$a)+T.substring(T.indexOf(",",$a+1)));ja.setCellStyles("image",T,[Ta[0]])});Sa.src=Editor.createSvgDataUri(mxUtils.getXml(ta))}return Ta}}}catch($a){}return null})):S(la,mxUtils.bind(this,function(){return q(P,"text/xml",f+la*V,g+la*V,0,0,u.name)}))}else S(la,mxUtils.bind(this,function(){return null}))}else{R=
-!1;if("image/png"==u.type){var ma=ca?null:this.extractGraphModelFromPng(O.target.result);if(null!=ma&&0<ma.length){var ra=new Image;ra.src=O.target.result;S(la,mxUtils.bind(this,function(){return q(ma,"text/xml",f+la*V,g+la*V,ra.width,ra.height,u.name)}));R=!0}}R||(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(O.target.result,mxUtils.bind(this,function(xa){this.resizeImage(xa,O.target.result,mxUtils.bind(this,function(ta,Aa,Ca){S(la,mxUtils.bind(this,function(){if(null!=ta&&ta.length<G){var Ba=qa&&this.isResampleImageSize(u.size,aa)?Math.min(1,Math.min(m/Aa,m/Ca)):1;return q(ta,u.type,f+la*V,g+la*V,Math.round(Aa*Ba),Math.round(Ca*Ba),u.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),qa,m,aa,u.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else T=
-O.target.result,q(T,u.type,f+la*V,g+la*V,240,160,u.name,function(xa){S(la,function(){return xa})},u)});/(\.v(dx|sdx?))($|\?)/i.test(u.name)||/(\.vs(x|sx?))($|\?)/i.test(u.name)?q(null,u.type,f+la*V,g+la*V,240,160,u.name,function(O){S(la,function(){return O})},u):"image"==u.type.substring(0,5)||"application/pdf"==u.type?H.readAsDataURL(u):H.readAsText(u)}})(ha)});if(N){N=[];for(ea=0;ea<d.length;ea++)N.push(d[ea]);d=N;this.confirmImageResize(function(ja){qa=ja;ka()},I)}else ka()};EditorUi.prototype.isBlankFile=
-function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,
-mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,
-f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>
-f};EditorUi.prototype.resizeImage=function(d,f,g,m,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),I=Math.max(1,d.height);if(m&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,I/q);if(1<G){var aa=Math.round(C/G),ca=Math.round(I/G),ba=document.createElement("canvas");ba.width=aa;ba.height=ca;ba.getContext("2d").drawImage(d,0,0,aa,ca);var Z=ba.toDataURL();if(Z.length<f.length){var qa=document.createElement("canvas");qa.width=aa;qa.height=ca;var N=qa.toDataURL();
-Z!==N&&(f=Z,C=aa,I=ca)}}}catch(Y){}g(f,C,I)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var m=new Image;m.onload=function(){m.width=0<m.width?m.width:120;m.height=0<m.height?m.height:120;f(m)};null!=g&&(m.onerror=g);m.src=d}catch(q){if(null!=g)g(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?
-urlParams.rough:d)};var D=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());
-var d=this,f=this.editor.graph;Editor.isDarkMode()&&(f.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(f.panningHandler.isPanningTrigger=function(Y){var ea=Y.getEvent();return null==Y.getState()&&!mxEvent.isMouseEvent(ea)&&!f.freehand.isDrawing()||mxEvent.isPopupTrigger(ea)&&(null==Y.getState()||mxEvent.isControlDown(ea)||mxEvent.isShiftDown(ea))});f.cellEditor.editPlantUmlData=function(Y,ea,ka){var ja=JSON.parse(ka);ea=new TextareaDialog(d,mxResources.get("plantUml")+
-":",ja.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generatePlantUmlImage(V,ja.format,function(J,W,Q){d.spinner.stop();f.getModel().beginUpdate();try{if("txt"==ja.format)f.labelChanged(Y,"<pre>"+J+"</pre>"),f.updateCellSize(Y,!0);else{f.setCellStyles("image",d.convertDataUri(J),[Y]);var S=f.model.getGeometry(Y);null!=S&&(S=S.clone(),S.width=W,S.height=Q,f.cellsResized([Y],[S],!1))}f.setAttributeForCell(Y,"plantUmlData",JSON.stringify({data:V,format:ja.format}))}finally{f.getModel().endUpdate()}},
-function(J){d.handleError(J)})},null,null,400,220);d.showDialog(ea.container,420,300,!0,!0);ea.init()};f.cellEditor.editMermaidData=function(Y,ea,ka){var ja=JSON.parse(ka);ea=new TextareaDialog(d,mxResources.get("mermaid")+":",ja.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generateMermaidImage(V,ja.config,function(J,W,Q){d.spinner.stop();f.getModel().beginUpdate();try{f.setCellStyles("image",J,[Y]);var S=f.model.getGeometry(Y);null!=S&&(S=S.clone(),S.width=
-Math.max(S.width,W),S.height=Math.max(S.height,Q),f.cellsResized([Y],[S],!1));f.setAttributeForCell(Y,"mermaidData",JSON.stringify({data:V,config:ja.config},null,2))}finally{f.getModel().endUpdate()}},function(J){d.handleError(J)})},null,null,400,220);d.showDialog(ea.container,420,300,!0,!0);ea.init()};var g=f.cellEditor.startEditing;f.cellEditor.startEditing=function(Y,ea){try{var ka=this.graph.getAttributeForCell(Y,"plantUmlData");if(null!=ka)this.editPlantUmlData(Y,ea,ka);else if(ka=this.graph.getAttributeForCell(Y,
-"mermaidData"),null!=ka)this.editMermaidData(Y,ea,ka);else{var ja=f.getCellStyle(Y);"1"==mxUtils.getValue(ja,"metaEdit","0")?d.showDataDialog(Y):g.apply(this,arguments)}}catch(V){d.handleError(V)}};f.getLinkTitle=function(Y){return d.getLinkTitle(Y)};f.customLinkClicked=function(Y){var ea=!1;try{d.handleCustomLink(Y),ea=!0}catch(ka){d.handleError(ka)}return ea};var m=f.parseBackgroundImage;f.parseBackgroundImage=function(Y){var ea=m.apply(this,arguments);null!=ea&&null!=ea.src&&Graph.isPageLink(ea.src)&&
-(ea={originalSrc:ea.src});return ea};var q=f.setBackgroundImage;f.setBackgroundImage=function(Y){null!=Y&&null!=Y.originalSrc&&(Y=d.createImageForPageLink(Y.originalSrc,d.currentPage,this));q.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));this.editor.addListener("pageMoved",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(Y,ea){Y=null!=f.backgroundImage?
-f.backgroundImage.originalSrc:null;if(null!=Y){var ka=Y.indexOf(",");if(0<ka)for(Y=Y.substring(ka+1),ea=ea.getProperty("patches"),ka=0;ka<ea.length;ka++)if(null!=ea[ka][EditorUi.DIFF_UPDATE]&&null!=ea[ka][EditorUi.DIFF_UPDATE][Y]||null!=ea[ka][EditorUi.DIFF_REMOVE]&&0<=mxUtils.indexOf(ea[ka][EditorUi.DIFF_REMOVE],Y)){f.refreshBackgroundImage();break}}}));var y=f.getBackgroundImageObject;f.getBackgroundImageObject=function(Y,ea){var ka=y.apply(this,arguments);if(null!=ka&&null!=ka.originalSrc)if(!ea)ka=
-{src:ka.originalSrc};else if(ea&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var ja=this.stylesheet,V=this.shapeForegroundColor,J=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";ka=d.createImageForPageLink(ka.originalSrc);this.shapeBackgroundColor=J;this.shapeForegroundColor=V;this.stylesheet=ja}return ka};var F=this.clearDefaultStyle;this.clearDefaultStyle=function(){F.apply(this,arguments)};
-this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var C=d.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(Y){Y=null!=Y?Y:"";"1"==urlParams.dev&&(Y+=(0<Y.length?"&":"?")+"dev=1");return C.apply(this,arguments)};var I=
-f.addClickHandler;f.addClickHandler=function(Y,ea,ka){var ja=ea;ea=function(V,J){if(null==J){var W=mxEvent.getSource(V);"a"==W.nodeName.toLowerCase()&&(J=W.getAttribute("href"))}null!=J&&f.isCustomLink(J)&&(mxEvent.isTouchEvent(V)||!mxEvent.isPopupTrigger(V))&&f.customLinkClicked(J)&&mxEvent.consume(V);null!=ja&&ja(V,J)};I.call(this,Y,ea,ka)};D.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(f.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var G=Menus.prototype.addPopupMenuEditItems;
-this.menus.addPopupMenuEditItems=function(Y,ea,ka){d.editor.graph.isSelectionEmpty()?G.apply(this,arguments):d.menus.addMenuItems(Y,"delete - cut copy copyAsImage - duplicate".split(" "),null,ka)}}d.actions.get("print").funct=function(){d.showDialog((new PrintDialog(d)).container,360,null!=d.pages&&1<d.pages.length?470:390,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var aa=f.getExportVariables;f.getExportVariables=function(){var Y=aa.apply(this,arguments),ea=d.getCurrentFile();
-null!=ea&&(Y.filename=ea.getTitle());Y.pagecount=null!=d.pages?d.pages.length:1;Y.page=null!=d.currentPage?d.currentPage.getName():"";Y.pagenumber=null!=d.pages&&null!=d.currentPage?mxUtils.indexOf(d.pages,d.currentPage)+1:1;return Y};var ca=f.getGlobalVariable;f.getGlobalVariable=function(Y){var ea=d.getCurrentFile();return"filename"==Y&&null!=ea?ea.getTitle():"page"==Y&&null!=d.currentPage?d.currentPage.getName():"pagenumber"==Y?null!=d.currentPage&&null!=d.pages?mxUtils.indexOf(d.pages,d.currentPage)+
-1:1:"pagecount"==Y?null!=d.pages?d.pages.length:1:ca.apply(this,arguments)};var ba=f.labelLinkClicked;f.labelLinkClicked=function(Y,ea,ka){var ja=ea.getAttribute("href");if(null==ja||!f.isCustomLink(ja)||!mxEvent.isTouchEvent(ka)&&mxEvent.isPopupTrigger(ka))ba.apply(this,arguments);else{if(!f.isEnabled()||null!=Y&&f.isCellLocked(Y.cell))f.customLinkClicked(ja),f.getRubberband().reset();mxEvent.consume(ka)}};this.editor.getOrCreateFilename=function(){var Y=d.defaultFilename,ea=d.getCurrentFile();null!=
-ea&&(Y=null!=ea.getTitle()?ea.getTitle():Y);return Y};var Z=this.actions.get("print");Z.setEnabled(!mxClient.IS_IOS||!navigator.standalone);Z.visible=Z.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),
-this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.addListener("realtimeStateChanged",mxUtils.bind(this,function(){this.updateUserElement()}));this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&f.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(Y){var ea=f.cellEditor.text2,ka=null;null!=ea&&(mxEvent.addListener(ea,"dragleave",function(ja){null!=ka&&(ka.parentNode.removeChild(ka),
-ka=null);ja.stopPropagation();ja.preventDefault()}),mxEvent.addListener(ea,"dragover",mxUtils.bind(this,function(ja){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(ea));ja.stopPropagation();ja.preventDefault()})),mxEvent.addListener(ea,"drop",mxUtils.bind(this,function(ja){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ja.dataTransfer.files.length)this.importFiles(ja.dataTransfer.files,0,0,this.maxImageSize,function(J,W,Q,S,ha,la){f.insertImage(J,ha,la)},
-function(){},function(J){return"image/"==J.type.substring(0,6)},function(J){for(var W=0;W<J.length;W++)J[W]()},mxEvent.isControlDown(ja));else if(0<=mxUtils.indexOf(ja.dataTransfer.types,"text/uri-list")){var V=ja.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(V)?this.loadImage(decodeURIComponent(V),mxUtils.bind(this,function(J){var W=Math.max(1,J.width);J=Math.max(1,J.height);var Q=this.maxImageSize;Q=Math.min(1,Math.min(Q/Math.max(1,W)),Q/Math.max(1,J));f.insertImage(decodeURIComponent(V),
-W*Q,J*Q)})):document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(ja.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(ja.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,ja.dataTransfer.getData("text/plain"));ja.stopPropagation();ja.preventDefault()})))}));this.isSettingsEnabled()&&(Z=this.editor.graph.view,Z.setUnit(mxSettings.getUnit()),Z.addListener("unitChanged",
-function(Y,ea){mxSettings.setUnit(ea.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,Z.unit),this.refresh());if("1"==urlParams.styledev){Z=document.getElementById("geFooter");null!=Z&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top=
-"14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),Z.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(Y,ea){0<this.editor.graph.getSelectionCount()?(Y=this.editor.graph.getSelectionCell(),
-Y=this.editor.graph.getModel().getStyle(Y),this.styleInput.value=Y||"",this.styleInput.style.visibility="visible"):this.styleInput.style.visibility="hidden"})));var qa=this.isSelectionAllowed;this.isSelectionAllowed=function(Y){return mxEvent.getSource(Y)==this.styleInput?!0:qa.apply(this,arguments)}}Z=document.getElementById("geInfo");null!=Z&&Z.parentNode.removeChild(Z);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var N=null;mxEvent.addListener(f.container,"dragleave",
-function(Y){f.isEnabled()&&(null!=N&&(N.parentNode.removeChild(N),N=null),Y.stopPropagation(),Y.preventDefault())});mxEvent.addListener(f.container,"dragover",mxUtils.bind(this,function(Y){null==N&&(!mxClient.IS_IE||10<document.documentMode)&&(N=this.highlightElement(f.container));null!=this.sidebar&&this.sidebar.hideTooltip();Y.stopPropagation();Y.preventDefault()}));mxEvent.addListener(f.container,"drop",mxUtils.bind(this,function(Y){null!=N&&(N.parentNode.removeChild(N),N=null);if(f.isEnabled()){var ea=
-mxUtils.convertPoint(f.container,mxEvent.getClientX(Y),mxEvent.getClientY(Y)),ka=Y.dataTransfer.files,ja=f.view.translate,V=f.view.scale,J=ea.x/V-ja.x,W=ea.y/V-ja.y;if(0<ka.length)ea=1==ka.length&&this.isBlankFile()&&!this.canUndo()&&("image/svg"===ka[0].type.substring(0,9)||"image/"!==ka[0].type.substring(0,6)||/(\.drawio.png)$/i.test(ka[0].name)),"1"!=urlParams.embed&&(mxEvent.isShiftDown(Y)||ea)?(!mxEvent.isShiftDown(Y)&&ea&&null!=this.getCurrentFile()&&this.fileLoaded(null),this.openFiles(ka,
-!0)):(mxEvent.isAltDown(Y)&&(W=J=null),this.importFiles(ka,J,W,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(Y),null,null,mxEvent.isShiftDown(Y),Y));else{mxEvent.isAltDown(Y)&&(W=J=0);var Q=0<=mxUtils.indexOf(Y.dataTransfer.types,"text/uri-list")?Y.dataTransfer.getData("text/uri-list"):null;ka=this.extractGraphModelFromEvent(Y,null!=this.pages);if(null!=ka)f.setSelectionCells(this.importXml(ka,J,W,!0));else if(0<=mxUtils.indexOf(Y.dataTransfer.types,"text/html")){var S=Y.dataTransfer.getData("text/html");
-ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(S);var ha=null;ea=ka.getElementsByTagName("img");null!=ea&&1==ea.length?(S=ea[0].getAttribute("src"),null==S&&(S=ea[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(S)||(ha=!0)):(ea=ka.getElementsByTagName("a"),null!=ea&&1==ea.length?S=ea[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(S=mxUtils.getTextContent(ka[0]))));var la=!0,u=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(S,
-J,W,!0,ha,null,la,mxEvent.isControlDown(Y)))});ha&&null!=S&&S.length>this.resampleThreshold?this.confirmImageResize(function(H){la=H;u()},mxEvent.isControlDown(Y)):u()}else null!=Q&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(Q)?this.loadImage(decodeURIComponent(Q),mxUtils.bind(this,function(H){var O=Math.max(1,H.width);H=Math.max(1,H.height);var T=this.maxImageSize;T=Math.min(1,Math.min(T/Math.max(1,O)),T/Math.max(1,H));f.setSelectionCell(f.insertVertex(null,null,"",J,W,O*T,H*T,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
-Q+";"))}),mxUtils.bind(this,function(H){f.setSelectionCells(this.insertTextAt(Q,J,W,!0))})):0<=mxUtils.indexOf(Y.dataTransfer.types,"text/plain")&&f.setSelectionCells(this.insertTextAt(Y.dataTransfer.getData("text/plain"),J,W,!0))}}Y.stopPropagation();Y.preventDefault()}),!1)}f.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var d=this.editor.graph;d.container.addEventListener("paste",
-mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(I,G,aa,ca,ba,Z){d.insertImage(I,ba,Z)},function(){},function(I){return"image/"==I.type.substring(0,6)},function(I){for(var G=0;G<I.length;G++)I[G]()});
-else{var C=this.editor.graph.getInsertPoint();this.importFiles([F.getAsFile()],C.x,C.y,this.maxImageSize);mxEvent.consume(f)}break}}}}catch(I){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function d(){window.setTimeout(function(){g.innerHTML="&nbsp;";g.focus();document.execCommand("selectAll",!1,null)},0)}var f=this.editor.graph,g=document.createElement("div");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck",
-"false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var m=!1;this.keyHandler.bindControlKey(88,
-null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||m||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",
-f.container.appendChild(g),m=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!m||224!=F&&17!=F&&91!=F&&93!=F||(m=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),
-this.copyCells(g),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,"cut",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),this.copyCells(g,!0),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,"paste",mxUtils.bind(this,function(y){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&(g.innerHTML="&nbsp;",g.focus(),null!=y.clipboardData&&this.pasteCells(y,g,!0,!0),mxEvent.isConsumed(y)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(y,g,!1,
-!0)}),0))}),!0);var q=this.isSelectionAllowed;this.isSelectionAllowed=function(y){return mxEvent.getSource(y)==g?!0:q.apply(this,arguments)}};EditorUi.prototype.setSketchMode=function(d){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetSketchMode(d);null==urlParams.rough&&(mxSettings.settings.sketchMode=d,mxSettings.save());this.fireEvent(new mxEventObject("sketchModeChanged"))}),0)};EditorUi.prototype.setPagesVisible=
-function(d){Editor.pagesVisible!=d&&(Editor.pagesVisible=d,mxSettings.settings.pagesVisible=d,mxSettings.save(),this.fireEvent(new mxEventObject("pagesVisibleChanged")))};EditorUi.prototype.setSidebarTitles=function(d,f){this.sidebar.sidebarTitles!=d&&(this.sidebar.sidebarTitles=d,this.sidebar.refresh(),this.isSettingsEnabled()&&f&&(mxSettings.settings.sidebarTitles=d,mxSettings.save()),this.fireEvent(new mxEventObject("sidebarTitlesChanged")))};EditorUi.prototype.setInlineFullscreen=function(d){Editor.inlineFullscreen!=
-d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(m,q,y){null==m[q]&&(m[q]=y)},g=this.editor.graph;
-Editor.sketchMode=d;this.menus.defaultFontSize=d?20:16;g.defaultVertexStyle=mxUtils.clone(Graph.prototype.defaultVertexStyle);f(g.defaultVertexStyle,"fontSize",this.menus.defaultFontSize);g.defaultEdgeStyle=mxUtils.clone(Graph.prototype.defaultEdgeStyle);f(g.defaultEdgeStyle,"fontSize",this.menus.defaultFontSize-4);f(g.defaultEdgeStyle,"edgeStyle","none");f(g.defaultEdgeStyle,"rounded","0");f(g.defaultEdgeStyle,"curved","1");f(g.defaultEdgeStyle,"jettySize","auto");f(g.defaultEdgeStyle,"orthogonalLoop",
-"1");f(g.defaultEdgeStyle,"endArrow","open");f(g.defaultEdgeStyle,"endSize","14");f(g.defaultEdgeStyle,"startSize","14");d&&(f(g.defaultVertexStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultVertexStyle,"fontSource",Editor.sketchFontSource),f(g.defaultVertexStyle,"hachureGap","4"),f(g.defaultVertexStyle,"sketch","1"),f(g.defaultEdgeStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultEdgeStyle,"fontSource",Editor.sketchFontSource),f(g.defaultEdgeStyle,"sketch","1"),f(g.defaultEdgeStyle,"hachureGap",
-"4"),f(g.defaultEdgeStyle,"sourcePerimeterSpacing","8"),f(g.defaultEdgeStyle,"targetPerimeterSpacing","8"));g.currentVertexStyle=mxUtils.clone(g.defaultVertexStyle);g.currentEdgeStyle=mxUtils.clone(g.defaultEdgeStyle);this.clearDefaultStyle()}};EditorUi.prototype.getLinkTitle=function(d){var f=Graph.prototype.getLinkTitle.apply(this,arguments);if(Graph.isPageLink(d)){var g=d.indexOf(",");0<g&&(f=this.getPageById(d.substring(g+1)),f=null!=f?f.getName():mxResources.get("pageNotFound"))}else"data:"==
-d.substring(0,5)&&(f=mxResources.get("action"));return f};EditorUi.prototype.handleCustomLink=function(d){if(Graph.isPageLink(d)){var f=d.indexOf(",");if(d=this.getPageById(d.substring(f+1)))this.selectPage(d);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(d)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){Editor.pagesVisible=
-mxSettings.settings.pagesVisible;ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(d){d.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(d){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",
-mxUtils.bind(this,function(d,f){"1"!=urlParams["ext-fonts"]?mxSettings.setCustomFonts(this.menus.customFonts):(d=f.getProperty("customFonts"),this.menus.customFonts=d,mxSettings.setCustomFonts(d));mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(d,f){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());
-mxSettings.save()}));this.editor.graph.pageFormat=null!=this.editor.graph.defaultPageFormat?this.editor.graph.defaultPageFormat:mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(d,f){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));this.editor.graph.view.gridColor=mxSettings.getGridColor(Editor.isDarkMode());this.editor.graph.view.defaultDarkGridColor=mxSettings.getGridColor(!0);this.editor.graph.view.defaultGridColor=mxSettings.getGridColor(!1);
-this.addListener("gridColorChanged",mxUtils.bind(this,function(d,f){mxSettings.setGridColor(this.editor.graph.view.gridColor,Editor.isDarkMode());mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(d,f){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&(null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes?(this.sidebar.searchShapes(decodeURIComponent(urlParams["search-shapes"])),
-this.sidebar.showEntries("search")):(this.sidebar.showPalette("search",mxSettings.settings.search),this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save())));this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyImage=function(d,f,g){try{null!=navigator.clipboard&&this.spinner.spin(document.body,mxResources.get("exporting"))&&
-this.editor.exportToCanvas(mxUtils.bind(this,function(m,q){try{this.spinner.stop();var y=this.createImageDataUri(m,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,F,C,mxUtils.bind(this,function(I){this.handleError(I)}))}catch(I){this.handleError(I)}}),null,null,null,mxUtils.bind(this,function(m){this.spinner.stop();this.handleError(m)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,
-null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(m){this.handleError(m)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,m){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](m)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerText="";else{var m=
-mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(m));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(m,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),
-f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,m){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),m);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,
-d,[F]);else{q.model.beginUpdate();try{q.labelChanged(F,d),Graph.isLink(d)&&q.setLinkForCell(F,d)}finally{q.model.endUpdate()}}q.setSelectionCell(F)}else y=q.getInsertPoint(),q.isMouseInsertPoint()&&(F=0,q.lastPasteXml==d&&0<q.pasteCounter&&q.pasteCounter--),y=this.insertTextAt(d,y.x+F,y.y+F,!0),q.setSelectionCells(y);q.isSelectionEmpty()||(q.scrollCellToVisible(q.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(q.view.getState(q.getSelectionCell())));return y};EditorUi.prototype.pasteCells=
-function(d,f,g,m){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var I=decodeURIComponent(F);this.isCompatibleString(I)&&(C=!0,F=I)}catch(ca){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,
-C))}F=q.getElementsByTagName("span");if(null!=F&&0<F.length&&"application/vnd.lucid.chart.objects"===F[0].getAttribute("data-lucid-type"))g=F[0].getAttribute("data-lucid-content"),null!=g&&0<g.length&&(this.convertLucidChart(g,mxUtils.bind(this,function(ca){var ba=this.editor.graph;ba.lastPasteXml==ca?ba.pasteCounter++:(ba.lastPasteXml=ca,ba.pasteCounter=0);var Z=ba.pasteCounter*ba.gridSize;ba.setSelectionCells(this.importXml(ca,Z,Z));ba.scrollCellToVisible(ba.getSelectionCell())}),mxUtils.bind(this,
-function(ca){this.handleError(ca)})),mxEvent.consume(d));else{y=y?q.innerHTML:mxUtils.trim(null==q.innerText?mxUtils.getTextContent(q):q.innerText);C=!1;try{var G=y.lastIndexOf("%3E");0<=G&&G<y.length-3&&(y=y.substring(0,G+3))}catch(ca){}try{F=q.getElementsByTagName("span"),(I=null!=F&&0<F.length?mxUtils.trim(decodeURIComponent(F[0].textContent)):decodeURIComponent(y))&&(this.isCompatibleString(I)||0==I.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))&&(C=!0,y=I)}catch(ca){}try{if(null!=
-y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(ca){console.log("Miro import error:",ca)}this.pasteXml(y,m,C,d);try{mxEvent.consume(d)}catch(ca){}}else if(!g){var aa=this.editor.graph;aa.lastPasteXml=null;aa.pasteCounter=0}}catch(ca){this.handleError(ca)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=
-0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(m){null!=f&&(f.parentNode.removeChild(f),f=null);m.stopPropagation();m.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(m){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());m.stopPropagation();m.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(m){null!=f&&(f.parentNode.removeChild(f),
-f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<m.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(m.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(m)&&!mxEvent.isShiftDown(m)):this.openFiles(m.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(m);if(null==q){var y=null!=m.dataTransfer?m.dataTransfer:m.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):
-(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?m.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,
-null,!0)):this.isRemoteFileFormat(q)?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(q))).send(mxUtils.bind(this,function(F){200<=F.getStatus()&&299>=F.getStatus()&&this.openLocalFile(F.getText(),null,!0)})):/^https?:\/\//.test(q)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(q):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+
-"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}m.stopPropagation();m.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var m=document.body;var q=document.documentElement;var y=(m.clientWidth||q.clientWidth)-3;m=Math.max(m.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,m=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border=
-"3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,m-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),
-m=new mxGraphModel;g.decode(f,m);f=m.getChildAt(m.getRoot(),0);for(g=0;g<m.getChildCount(f);g++)d.push(m.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,m,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,
-10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(I){this.handleError(I,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,m)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();
-y(C)}));else if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.isOffline()?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):this.parseFile(g,mxUtils.bind(this,function(C){4==C.readyState&&(this.spinner.stop(),200<=C.status&&299>=C.status?y(C.responseText):this.handleError({message:mxResources.get(413==C.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&
-(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,m)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==
-d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,m)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,m=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,m,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=
-0;g<d.length;g++)mxUtils.bind(this,function(m){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,m.name,m,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();this.handleError(y);window.openFile=null});"image"!==m.type.substring(0,5)&&"application/pdf"!==m.type||"image/svg"===m.type.substring(0,9)?q.readAsText(m):q.readAsDataURL(m)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,m,q){var y=this.getCurrentFile(),
-F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,d,f||this.defaultFilename,g,m,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),
-null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(d,f),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):F()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var d={};if(null!=this.pages)for(var f=
-0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var m=this.editor.graph,q=m.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));m.model.isEdge(d)&&
-(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=m.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(m.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=
-d?"":"none";this.editor.graph.setEnabled(d);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=d?"":"hidden",this.ruler.vRuler.container.style.visibility=d?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=d?"":"hidden");d||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=
-this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,m,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));
-if(null==f||0==f.length)f=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,f,{}));this.mode=App.MODE_EMBED;this.setFileData(f);if(q)try{var y=this.editor.graph;y.setGridEnabled(!1);y.pageVisible=!1;var F=y.model.cells,C;for(C in F){var I=F[C];null!=I&&null!=I.style&&(I.style+=";sketch=1;"+(-1==I.style.indexOf("fontFamily=")||-1<I.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":
-""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=m?m:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?
-this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(d,f){null!=d?d.getPublicUrl(f):f(null)};EditorUi.prototype.createLoadMessage=function(d){var f=this.editor.graph;return{event:d,pageVisible:f.pageVisible,translate:f.view.translate,bounds:f.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:f.view.scale,page:f.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(d){var f=this.editor.graph;
-f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var m=f.background;if(null==m||m==mxConstants.NONE)m=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,m,1,this.embedExportBorder)}else d||
-g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=!1,"1"!=urlParams.embed&&this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,m=!1,q=null,y=mxUtils.bind(this,function(I,G){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,y);mxEvent.addListener(window,"message",mxUtils.bind(this,function(I){if(I.source==(window.opener||window.parent)){var G=I.data,aa=null,ca=mxUtils.bind(this,function(P){if(null!=P&&"function"===typeof P.charAt&&"<"!=P.charAt(0))try{Editor.isPngDataUrl(P)?P=Editor.extractGraphModelFromPng(P):"data:image/svg+xml;base64,"==
-P.substring(0,26)?P=atob(P.substring(26)):"data:image/svg+xml;utf8,"==P.substring(0,24)&&(P=P.substring(24)),null!=P&&("%"==P.charAt(0)?P=decodeURIComponent(P):"<"!=P.charAt(0)&&(P=Graph.decompress(P)))}catch(ma){}return P});if("json"==urlParams.proto){var ba=!1;try{G=JSON.parse(G),EditorUi.debug("EditorUi.installMessageHandler",[this],"evt",[I],"data",[G])}catch(P){G=null}try{if(null==G)return;if("dialog"==G.action){this.showError(null!=G.titleKey?mxResources.get(G.titleKey):G.title,null!=G.messageKey?
-mxResources.get(G.messageKey):G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayouts(this.editor.graph.createLayouts(G.layouts));return}if("prompt"==G.action){this.spinner.stop();var Z=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(P){null!=P?F.postMessage(JSON.stringify({event:"prompt",value:P,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",
-message:G}),"*")},null!=G.titleKey?mxResources.get(G.titleKey):G.title);this.showDialog(Z.container,300,80,!0,!1);Z.init();return}if("draft"==G.action){var qa=ca(G.xml);this.spinner.stop();Z=new DraftDialog(this,mxResources.get("draftFound",[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",
-message:G}),"*")}),G.editKey?mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),"*")}):null);this.showDialog(Z.container,640,480,!0,!1,mxUtils.bind(this,function(P){P&&this.actions.get("exit").funct()}));try{Z.init()}catch(P){F.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();
-var N=1==G.enableRecent,Y=1==G.enableSearch,ea=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ja=new TemplatesDialog(this,function(P,ma,ra){P=P||this.emptyDiagramXml;F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:ma,tempUrl:ra.url,libs:ra.libs,builtIn:null!=ra.info&&null!=ra.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=
-ka?ka.id:null,N?mxUtils.bind(this,function(P,ma,ra){this.remoteInvoke("getRecentDiagrams",[ra],null,P,ma)}):null,Y?mxUtils.bind(this,function(P,ma,ra,xa){this.remoteInvoke("searchDiagrams",[P,xa],null,ma,ra)}):null,mxUtils.bind(this,function(P,ma,ra){this.remoteInvoke("getFileContent",[P.url],null,ma,ra)}),null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,!1,!1,!0,!0);this.showDialog(ja.container,window.innerWidth,window.innerHeight,
-!0,!1,null,!1,!0);return}Z=new NewDialog(this,!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(P,ma,ra,xa){P=P||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:P,blank:P==this.emptyDiagramXml,name:ma,tempUrl:ra,libs:xa,builtIn:!0,message:G}),"*"):(d(P,I,P!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,N?mxUtils.bind(this,function(P){this.remoteInvoke("getRecentDiagrams",
-[null],null,P,function(){P(null,"Network Error!")})}):null,Y?mxUtils.bind(this,function(P,ma){this.remoteInvoke("searchDiagrams",[P,null],null,ma,function(){ma(null,"Network Error!")})}):null,mxUtils.bind(this,function(P,ma,ra){F.postMessage(JSON.stringify({event:"template",docUrl:P,info:ma,name:ra}),"*")}),null,null,ea?mxUtils.bind(this,function(P){this.remoteInvoke("getCustomTemplates",null,null,P,function(){P({},0)})}):null,1==G.withoutType);this.showDialog(Z.container,620,460,!0,!1,mxUtils.bind(this,
-function(P){this.sidebar.hideTooltip();P&&this.actions.get("exit").funct()}));Z.init();return}if("textContent"==G.action){var V=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:V,message:G}),"*");return}if("status"==G.action){null!=G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var J=
-null!=G.messageKey?mxResources.get(G.messageKey):G.message;null==G.show||G.show?this.spinner.spin(document.body,J):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):
-G.spin)){var W=null!=G.xml?G.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var Q=this.editor.graph,S=mxUtils.bind(this,function(P){this.editor.graph.setEnabled(!0);this.spinner.stop();var ma=this.createLoadMessage("export");ma.format=G.format;ma.message=G;ma.data=P;ma.xml=W;F.postMessage(JSON.stringify(ma),"*")}),ha=mxUtils.bind(this,function(P){null==P&&(P=Editor.blankImage);"xmlpng"==G.format&&(P=Editor.writeGraphModelToPng(P,"tEXt","mxfile",encodeURIComponent(W)));Q!=this.editor.graph&&
-Q.container.parentNode.removeChild(Q.container);S(P)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var u=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=la){var P=Q.getGlobalVariable;Q=this.createTemporaryGraph(Q.getStylesheet());for(var ma,ra=0;ra<this.pages.length;ra++)if(this.pages[ra].getId()==la){ma=this.updatePageRoot(this.pages[ra]);break}null==ma&&(ma=this.currentPage);Q.getGlobalVariable=
-function(Ca){return"page"==Ca?ma.getName():"pagenumber"==Ca?1:P.apply(this,arguments)};document.body.appendChild(Q.container);Q.model.setRoot(ma.root)}if(null!=G.layerIds){var xa=Q.model,ta=xa.getChildCells(xa.getRoot()),Aa={};for(ra=0;ra<G.layerIds.length;ra++)Aa[G.layerIds[ra]]=!0;for(ra=0;ra<ta.length;ra++)xa.setVisible(ta[ra],Aa[ta[ra].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ca){ha(Ca.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ha(null)}),
-null,null,G.scale,G.transparent,G.shadow,null,Q,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length&&(g=!0,this.setFileData(W),g=!1);u()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(W))).send(mxUtils.bind(this,function(P){200<=P.getStatus()&&
-299>=P.getStatus()?S("data:image/png;base64,"+P.getText()):ha(null)}),mxUtils.bind(this,function(){ha(null)}))}}else u=mxUtils.bind(this,function(){var P=this.createLoadMessage("export");P.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ma=this.getXmlFileData();P.xml=mxUtils.getXml(ma);P.data=this.getFileData(null,null,!0,null,null,null,ma);P.format=G.format}else if("html"==G.format)ma=this.editor.getGraphXml(),P.data=this.getHtml(ma,
-this.editor.graph),P.xml=mxUtils.getXml(ma),P.format=G.format;else{mxSvgCanvas2D.prototype.foAltText=null;ma=null!=G.background?G.background:this.editor.graph.background;ma==mxConstants.NONE&&(ma=null);P.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);P.format="svg";var ra=mxUtils.bind(this,function(xa){this.editor.graph.setEnabled(!0);this.spinner.stop();P.data=Editor.createSvgDataUri(xa);F.postMessage(JSON.stringify(P),"*")});if("xmlsvg"==G.format)(null==G.spin&&null==G.spinKey||
-this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))&&this.getEmbeddedSvg(P.xml,this.editor.graph,null,!0,ra,null,null,G.embedImages,ma,G.scale,G.border,G.shadow,G.keepTheme);else if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))this.editor.graph.setEnabled(!1),ma=this.editor.graph.getSvg(ma,G.scale,G.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||G.shadow,null,G.keepTheme),(this.editor.graph.shadowVisible||
-G.shadow)&&this.editor.graph.addSvgShadow(ma),this.embedFonts(ma,mxUtils.bind(this,function(xa){G.embedImages||null==G.embedImages?this.editor.convertImages(xa,mxUtils.bind(this,function(ta){ra(mxUtils.getXml(ta))})):ra(mxUtils.getXml(xa))}));return}F.postMessage(JSON.stringify(P),"*")}),null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(G.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(u)},0):u()):u();return}if("load"==G.action){ba=G.toSketch;m=1==G.autosave;
-this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var H=Editor.sketchMode;this.doSetSketchMode(G.rough);H!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(H=Editor.darkMode,this.doSetDarkMode(G.dark),H!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));
-null!=G.border&&(this.embedExportBorder=G.border);null!=G.background&&(this.embedExportBackground=G.background);null!=G.viewport&&(this.embedViewport=G.viewport);this.embedExitPoint=null;if(null!=G.rect){var O=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=G.rect.top+"px";this.diagramContainer.style.left=G.rect.left+"px";this.diagramContainer.style.height=G.rect.height+"px";this.diagramContainer.style.width=G.rect.width+"px";this.diagramContainer.style.bottom=
-"";this.diagramContainer.style.right="";aa=mxUtils.bind(this,function(){var P=this.editor.graph,ma=P.maxFitScale;P.maxFitScale=G.maxFitScale;P.fit(2*O);P.maxFitScale=ma;P.container.scrollTop-=2*O;P.container.scrollLeft-=2*O;this.fireEvent(new mxEventObject("editInlineStart","data",[G]))})}null!=G.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=G.noExitBtn);null!=G.title&&null!=this.buttonContainer&&(qa=document.createElement("span"),mxUtils.write(qa,G.title),null!=this.embedFilenameSpan&&
-this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(qa),this.embedFilenameSpan=qa);try{G.libs&&this.sidebar.showEntries(G.libs)}catch(P){}G=null!=G.xmlpng?this.extractGraphModelFromPng(G.xmlpng):null!=G.descriptor?G.descriptor:G.xml}else{if("merge"==G.action){var T=this.getCurrentFile();null!=T&&(qa=ca(G.xml),null!=qa&&""!=qa&&T.mergeFile(new LocalFile(this,qa),function(){F.postMessage(JSON.stringify({event:"merge",message:G}),"*")},function(P){F.postMessage(JSON.stringify({event:"merge",
-message:G,error:P}),"*")}))}else"remoteInvokeReady"==G.action?this.handleRemoteInvokeReady(F):"remoteInvoke"==G.action?this.handleRemoteInvoke(G,I.origin):"remoteInvokeResponse"==G.action?this.handleRemoteInvokeResponse(G):F.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(G)}),"*");return}}catch(P){this.handleError(P)}}var R=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),
-da=mxUtils.bind(this,function(P,ma){g=!0;try{d(P,ma,null,ba)}catch(ra){this.handleError(ra)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=R();m&&null==f&&(f=mxUtils.bind(this,function(ra,xa){ra=R();ra==q||g||(xa=this.createLoadMessage("autosave"),xa.xml=ra,(window.opener||window.parent).postMessage(JSON.stringify(xa),"*"));q=ra}),this.editor.graph.model.addListener(mxEvent.CHANGE,f),this.editor.graph.addListener("gridSizeChanged",f),this.editor.graph.addListener("shadowVisibleChanged",
-f),this.addListener("pageFormatChanged",f),this.addListener("pageScaleChanged",f),this.addListener("backgroundColorChanged",f),this.addListener("backgroundImageChanged",f),this.addListener("foldingEnabledChanged",f),this.addListener("mathEnabledChanged",f),this.addListener("gridEnabledChanged",f),this.addListener("guidesEnabledChanged",f),this.addListener("pageViewChanged",f));if("1"==urlParams.returnbounds||"json"==urlParams.proto)ma=this.createLoadMessage("load"),ma.xml=P,F.postMessage(JSON.stringify(ma),
-"*");null!=aa&&aa()});null!=G&&"function"===typeof G.substring&&"data:application/vnd.visio;base64,"==G.substring(0,34)?(ca="0M8R4KGxGuE"==G.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(G.substring(G.indexOf(",")+1)),function(P){da(P,I)},mxUtils.bind(this,function(P){this.handleError(P)}),ca)):null!=G&&"function"===typeof G.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(G,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):
-this.parseFileData(G,mxUtils.bind(this,function(P){4==P.readyState&&200<=P.status&&299>=P.status&&"<mxGraphModel"==P.responseText.substring(0,13)&&da(P.responseText,I)}),""):null!=G&&"function"===typeof G.substring&&this.isLucidChartData(G)?this.convertLucidChart(G,mxUtils.bind(this,function(P){da(P)}),mxUtils.bind(this,function(P){this.handleError(P)})):null==G||"object"!==typeof G||null==G.format||null==G.data&&null==G.url?(G=ca(G),da(G,I)):this.loadDescriptor(G,mxUtils.bind(this,function(P){da(R(),
-I)}),mxUtils.bind(this,function(P){this.handleError(P,mxResources.get("errorLoadingFile"))}))}}));var F=window.opener||window.parent;y="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";F.postMessage(y,"*");if("json"==urlParams.proto){var C=this.editor.graph.openLink;this.editor.graph.openLink=function(I,G,aa){C.apply(this,arguments);F.postMessage(JSON.stringify({event:"openLink",href:I,target:G,allowOpener:aa}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=
-this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var m="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,
-m);f.setAttribute("title",m);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),d.appendChild(f),"1"==urlParams.saveAndExit&&(f=document.createElement("a"),mxUtils.write(f,mxResources.get("saveAndExit")),f.setAttribute("title",
-mxResources.get("saveAndExit")),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),d.appendChild(f),g=f);"1"!=urlParams.noExitBtn&&(f=document.createElement("a"),g="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(f,g),f.setAttribute("title",g),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,
-"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),d.appendChild(f),g=f);g.style.marginRight="20px";this.toolbar.container.appendChild(d);this.toolbar.staticElements.push(d);d.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,
-430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.loadOrgChartLayouts=function(d){var f=mxUtils.bind(this,function(){this.loadingOrgChart=!1;this.spinner.stop();d()});"undefined"!==typeof mxOrgChartLayout||this.loadingOrgChart||this.isOffline(!0)?f():this.spinner.spin(document.body,mxResources.get("loading"))&&
-(this.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.importCsv=function(d,f){this.loadOrgChartLayouts(mxUtils.bind(this,function(){this.doImportCsv(d,f)}))};EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=
-[],F={};if(0<g.length){var C={},I=this.editor.graph,G=null,aa=null,ca=null,ba=null,Z=null,qa=null,N=null,Y="whiteSpace=wrap;html=1;",ea=null,ka=null,ja="",V="auto",J="auto",W=!1,Q=null,S=null,ha=40,la=40,u=100,H=0,O=function(){null!=f?f(ua):(I.setSelectionCells(ua),I.scrollCellToVisible(I.getSelectionCell()))},T=I.getFreeInsertPoint(),R=T.x,da=T.y;T=da;var P=null,ma="auto";ka=null;for(var ra=[],xa=null,ta=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&
-"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),Aa++;if("#"!=d.charAt(1)){var Ca=d.indexOf(":");if(0<Ca){var Ba=mxUtils.trim(d.substring(1,Ca)),sa=mxUtils.trim(d.substring(Ca+1));"label"==Ba?P=I.sanitizeHtml(sa):"labelname"==Ba&&0<sa.length&&"-"!=sa?Z=sa:"labels"==Ba&&0<sa.length&&"-"!=sa?N=JSON.parse(sa):"style"==Ba?aa=sa:"parentstyle"==Ba?Y=sa:"unknownStyle"==Ba&&"-"!=sa?qa=sa:"stylename"==Ba&&0<sa.length&&"-"!=sa?ba=sa:"styles"==Ba&&
-0<sa.length&&"-"!=sa?ca=JSON.parse(sa):"vars"==Ba&&0<sa.length&&"-"!=sa?G=JSON.parse(sa):"identity"==Ba&&0<sa.length&&"-"!=sa?ea=sa:"parent"==Ba&&0<sa.length&&"-"!=sa?ka=sa:"namespace"==Ba&&0<sa.length&&"-"!=sa?ja=sa:"width"==Ba?V=sa:"height"==Ba?J=sa:"collapsed"==Ba&&"-"!=sa?W="true"==sa:"left"==Ba&&0<sa.length?Q=sa:"top"==Ba&&0<sa.length?S=sa:"ignore"==Ba?ta=sa.split(","):"connect"==Ba?ra.push(JSON.parse(sa)):"link"==Ba?xa=sa:"padding"==Ba?H=parseFloat(sa):"edgespacing"==Ba?ha=parseFloat(sa):"nodespacing"==
-Ba?la=parseFloat(sa):"levelspacing"==Ba?u=parseFloat(sa):"layout"==Ba&&(ma=sa)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));var Oa=this.editor.csvToArray(g[Aa].replace(/\r$/,""));Ca=d=null;Ba=[];for(sa=0;sa<Oa.length;sa++)ea==Oa[sa]&&(d=sa),ka==Oa[sa]&&(Ca=sa),Ba.push(mxUtils.trim(Oa[sa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==P&&(P="%"+Ba[0]+"%");if(null!=ra)for(var Ta=0;Ta<ra.length;Ta++)null==C[ra[Ta].to]&&(C[ra[Ta].to]={});ea=[];for(sa=
-Aa+1;sa<g.length;sa++){var Sa=this.editor.csvToArray(g[sa].replace(/\r$/,""));if(null==Sa){var $a=40<g[sa].length?g[sa].substring(0,40)+"...":g[sa];throw Error($a+" ("+sa+"):\n"+mxResources.get("containsValidationErrors"));}0<Sa.length&&ea.push(Sa)}I.model.beginUpdate();try{for(sa=0;sa<ea.length;sa++){Sa=ea[sa];var Ga=null,eb=null!=d?ja+Sa[d]:null;g=!1;null!=eb&&(Ga=I.model.getCell(eb),g=null==Ga||0<=mxUtils.indexOf(m,Ga));var bb=new mxCell(P,new mxGeometry(R,T,0,0),aa||"whiteSpace=wrap;html=1;");
-bb.collapsed=W;bb.vertex=!0;bb.id=eb;null==Ga||g||I.model.setCollapsed(Ga,W);for(var z=0;z<Sa.length;z++)I.setAttributeForCell(bb,Ba[z],Sa[z]),null==Ga||g||I.setAttributeForCell(Ga,Ba[z],Sa[z]);if(null!=Z&&null!=N){var L=N[bb.getAttribute(Z)];null!=L&&(I.labelChanged(bb,L),null==Ga||g||I.cellLabelChanged(Ga,L))}if(null!=ba&&null!=ca){var M=ca[bb.getAttribute(ba)];null!=M&&(bb.style=M)}I.setAttributeForCell(bb,"placeholders","1");bb.style=I.replacePlaceholders(bb,bb.style,G);null==Ga||g?I.fireEvent(new mxEventObject("cellsInserted",
-"cells",[bb])):(I.model.setStyle(Ga,bb.style),0>mxUtils.indexOf(y,Ga)&&y.push(Ga),I.fireEvent(new mxEventObject("cellsInserted","cells",[Ga])));g=null!=Ga;Ga=bb;if(!g)for(Ta=0;Ta<ra.length;Ta++)C[ra[Ta].to][Ga.getAttribute(ra[Ta].to)]=Ga;null!=xa&&"link"!=xa&&(I.setLinkForCell(Ga,Ga.getAttribute(xa)),I.setAttributeForCell(Ga,xa,null));var U=this.editor.graph.getPreferredSizeForCell(Ga);ka=null!=Ca?I.model.getCell(ja+Sa[Ca]):null;if(Ga.vertex){$a=null!=ka?0:R;Aa=null!=ka?0:da;null!=Q&&null!=Ga.getAttribute(Q)&&
-(Ga.geometry.x=$a+parseFloat(Ga.getAttribute(Q)));null!=S&&null!=Ga.getAttribute(S)&&(Ga.geometry.y=Aa+parseFloat(Ga.getAttribute(S)));var X="@"==V.charAt(0)?Ga.getAttribute(V.substring(1)):null;Ga.geometry.width=null!=X&&"auto"!=X?parseFloat(Ga.getAttribute(V.substring(1))):"auto"==V||"auto"==X?U.width+H:parseFloat(V);var fa="@"==J.charAt(0)?Ga.getAttribute(J.substring(1)):null;Ga.geometry.height=null!=fa&&"auto"!=fa?parseFloat(fa):"auto"==J||"auto"==fa?U.height+H:parseFloat(J);T+=Ga.geometry.height+
-la}g?(null==F[eb]&&(F[eb]=[]),F[eb].push(Ga)):(m.push(Ga),null!=ka?(ka.style=I.replacePlaceholders(ka,Y,G),I.addCell(Ga,ka),q.push(ka)):y.push(I.addCell(Ga)))}for(sa=0;sa<q.length;sa++)X="@"==V.charAt(0)?q[sa].getAttribute(V.substring(1)):null,fa="@"==J.charAt(0)?q[sa].getAttribute(J.substring(1)):null,"auto"!=V&&"auto"!=X||"auto"!=J&&"auto"!=fa||I.updateGroupBounds([q[sa]],H,!0);var na=y.slice(),ua=y.slice();for(Ta=0;Ta<ra.length;Ta++){var pa=ra[Ta];for(sa=0;sa<m.length;sa++){Ga=m[sa];var za=mxUtils.bind(this,
-function(Ya,cb,fb){var qb=cb.getAttribute(fb.from);if(null!=qb&&""!=qb){qb=qb.split(",");for(var ub=0;ub<qb.length;ub++){var ab=C[fb.to][qb[ub]];if(null==ab&&null!=qa){ab=new mxCell(qb[ub],new mxGeometry(R,da,0,0),qa);ab.style=I.replacePlaceholders(cb,ab.style,G);var db=this.editor.graph.getPreferredSizeForCell(ab);ab.geometry.width=db.width+H;ab.geometry.height=db.height+H;C[fb.to][qb[ub]]=ab;ab.vertex=!0;ab.id=qb[ub];y.push(I.addCell(ab))}if(null!=ab){db=fb.label;null!=fb.fromlabel&&(db=(cb.getAttribute(fb.fromlabel)||
-"")+(db||""));null!=fb.sourcelabel&&(db=I.replacePlaceholders(cb,fb.sourcelabel,G)+(db||""));null!=fb.tolabel&&(db=(db||"")+(ab.getAttribute(fb.tolabel)||""));null!=fb.targetlabel&&(db=(db||"")+I.replacePlaceholders(ab,fb.targetlabel,G));var kb="target"==fb.placeholders==!fb.invert?ab:Ya;kb=null!=fb.style?I.replacePlaceholders(kb,fb.style,G):I.createCurrentEdgeStyle();db=I.insertEdge(null,null,db||"",fb.invert?ab:Ya,fb.invert?Ya:ab,kb);if(null!=fb.labels)for(kb=0;kb<fb.labels.length;kb++){var ib=
-fb.labels[kb],nb=new mxCell(ib.label||kb,new mxGeometry(null!=ib.x?ib.x:0,null!=ib.y?ib.y:0,0,0),"resizable=0;html=1;");nb.vertex=!0;nb.connectable=!1;nb.geometry.relative=!0;null!=ib.placeholders&&(nb.value=I.replacePlaceholders("target"==ib.placeholders==!fb.invert?ab:Ya,nb.value,G));if(null!=ib.dx||null!=ib.dy)nb.geometry.offset=new mxPoint(null!=ib.dx?ib.dx:0,null!=ib.dy?ib.dy:0);db.insert(nb)}ua.push(db);mxUtils.remove(fb.invert?Ya:ab,na)}}}});za(Ga,Ga,pa);if(null!=F[Ga.id])for(z=0;z<F[Ga.id].length;z++)za(Ga,
-F[Ga.id][z],pa)}}if(null!=ta)for(sa=0;sa<m.length;sa++)for(Ga=m[sa],z=0;z<ta.length;z++)I.setAttributeForCell(Ga,mxUtils.trim(ta[z]),null);if(0<y.length){var Da=new mxParallelEdgeLayout(I);Da.spacing=ha;Da.checkOverlap=!0;var Ma=function(){0<Da.spacing&&Da.execute(I.getDefaultParent());for(var Ya=0;Ya<y.length;Ya++){var cb=I.getCellGeometry(y[Ya]);cb.x=Math.round(I.snap(cb.x));cb.y=Math.round(I.snap(cb.y));"auto"==V&&(cb.width=Math.round(I.snap(cb.width)));"auto"==J&&(cb.height=Math.round(I.snap(cb.height)))}};
-if("["==ma.charAt(0)){var La=O;I.view.validate();this.executeLayouts(I.createLayouts(JSON.parse(ma)),function(){Ma();La()});O=null}else if("circle"==ma){var Ua=new mxCircleLayout(I);Ua.disableEdgeStyle=!1;Ua.resetEdges=!1;var Ra=Ua.isVertexIgnored;Ua.isVertexIgnored=function(Ya){return Ra.apply(this,arguments)||0>mxUtils.indexOf(y,Ya)};this.executeLayout(function(){Ua.execute(I.getDefaultParent());Ma()},!0,O);O=null}else if("horizontaltree"==ma||"verticaltree"==ma||"auto"==ma&&ua.length==2*y.length-
-1&&1==na.length){I.view.validate();var Fa=new mxCompactTreeLayout(I,"horizontaltree"==ma);Fa.levelDistance=la;Fa.edgeRouting=!1;Fa.resetEdges=!1;this.executeLayout(function(){Fa.execute(I.getDefaultParent(),0<na.length?na[0]:null)},!0,O);O=null}else if("horizontalflow"==ma||"verticalflow"==ma||"auto"==ma&&1==na.length){I.view.validate();var va=new mxHierarchicalLayout(I,"horizontalflow"==ma?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);va.intraCellSpacing=la;va.parallelEdgeSpacing=ha;va.interRankCellSpacing=
-u;va.disableEdgeStyle=!1;this.executeLayout(function(){va.execute(I.getDefaultParent(),ua);I.moveCells(ua,R,da)},!0,O);O=null}else if("orgchart"==ma){I.view.validate();var ya=new mxOrgChartLayout(I,2,u,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(Ya){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,Ya)};this.executeLayout(function(){ya.execute(I.getDefaultParent());Ma()},!0,O);O=null}else if("organic"==ma||"auto"==ma&&ua.length>y.length){I.view.validate();var Ja=new mxFastOrganicLayout(I);
-Ja.forceConstant=3*la;Ja.disableEdgeStyle=!1;Ja.resetEdges=!1;var Pa=Ja.isVertexIgnored;Ja.isVertexIgnored=function(Ya){return Pa.apply(this,arguments)||0>mxUtils.indexOf(y,Ya)};this.executeLayout(function(){Ja.execute(I.getDefaultParent());Ma()},!0,O);O=null}}this.hideDialog()}finally{I.model.endUpdate()}null!=O&&O()}}catch(Ya){this.handleError(Ya)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",
-m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],
-f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;
-return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);
-g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&
-d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=
-function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,f=this.getCurrentFile(),g=this.getSelectionState(),m=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(m);
-this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());this.actions.get("guides").setEnabled(m);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(m);this.actions.get("connectionArrows").setEnabled(m);this.actions.get("connectionPoints").setEnabled(m);this.actions.get("copyStyle").setEnabled(m&&!d.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(m&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<
-g.vertices.length);this.actions.get("createShape").setEnabled(m);this.actions.get("createRevision").setEnabled(m);this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(m&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=
-this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):
-"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(m&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(d,f,g,m,q,y,F,C){var I=d.editor.graph;
-if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,"svg",mxUtils.getXml(I.getSvg(m,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),aa=I.getGraphBounds(),ca=Math.floor(aa.width*q/I.view.scale),ba=Math.floor(aa.height*q/I.view.scale);if(G.length<=MAX_REQUEST_SIZE&&ca*ba<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=g&&"jpeg"!=g||!d.isExportToCanvas()){var Z={globalVars:I.getExportVariables()};
-C&&(Z.grid={size:I.gridSize,steps:I.view.gridSteps,color:I.view.gridColor});d.saveRequest(f,g,function(qa,N){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(N||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Z))+(0<F?"&dpi="+F:"")+"&bg="+(null!=m?m:"none")+"&w="+ca+"&h="+ba+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==m||"none"==m,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",
-C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var m=d;this.currentPage!=this.pages[g]&&(m=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),m.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+m.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);
-return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var m=document.createElement("h3");mxUtils.write(m,mxUtils.htmlEntities(d));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(m);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';
-var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var I=JSON.parse(decodeURIComponent(C.substring(1)));y[I[0]]={id:I[0],title:I[1],downloadUrl:I[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerText="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var aa=0;aa<G.length;aa++){var ca=G[aa];y[ca.id]&&
-(f[ca.id]=ca);var ba=this.addCheckbox(q,ca.title,y[ca.id]);(function(Z,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Z.id]=Z:delete f[Z.id]})})(ca,ba)}},mxUtils.bind(this,function(G){q.innerText="";var aa=document.createElement("div");aa.style.padding="8px";aa.style.textAlign="center";mxUtils.write(aa,mxResources.get("error")+": ");mxUtils.write(aa,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));q.appendChild(aa)}));g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,
-function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,aa;for(aa in f)null==y[aa]&&(G++,mxUtils.bind(this,function(ca){this.remoteInvoke("getFileContent",[ca.downloadUrl],null,mxUtils.bind(this,function(ba){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,ba,ca))}catch(Z){this.handleError(Z,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(f[aa]));
-for(aa in y)f[aa]||this.closeLibrary(new RemoteLibrary(this,null,y[aa]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};
-EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==g)throw Error("No callback for "+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):
-g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,m,q){var y=!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&m.apply(this,arguments)}),I=mxUtils.bind(this,function(){window.clearTimeout(F);y&&q.apply(this,arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;
-this.remoteInvokeCallbacks.push({callback:C,error:I});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,aa){var ca={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=aa?ca.error={errResp:aa}:null!=G&&(ca.resp=G);this.remoteWin.postMessage(JSON.stringify(ca),"*")});try{var m=d.funtionName,
-q=this.remoteInvokableFns[m];if(null!=q&&"function"===typeof this[m]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+m+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),this[m].apply(this,C);else{var I=this[m].apply(this,C);g([I])}}else g(null,"Invalid Call: "+
-m+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var m=g.open("database",2);m.onupgradeneeded=function(q){try{var y=m.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",{keyPath:"title"}),y.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=
-isLocalStorage)}catch(F){null!=f&&f(F)}};m.onsuccess=mxUtils.bind(this,function(q){var y=m.result;this.database=y;EditorUi.migrateStorageFiles&&(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=document.createElement("iframe");C.style.display="none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+
-urlParams.forceMigration);document.body.appendChild(C);var I=!0,G=!1,aa,ca=0,ba=mxUtils.bind(this,function(){G=!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Z=mxUtils.bind(this,function(){ca++;qa()}),qa=mxUtils.bind(this,function(){try{if(ca>=aa.length)ba();else{var Y=aa[ca];StorageFile.getFileContent(this,Y,mxUtils.bind(this,function(ea){null==ea||".scratchpad"==Y&&ea==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
-funtionName:"getLocalStorageFile",functionArgs:[Y]}),"*"):Z()}),Z)}}catch(ea){console.log(ea)}}),N=mxUtils.bind(this,function(Y){try{this.setDatabaseItem(null,[{title:Y.title,size:Y.data.length,lastModified:Date.now(),type:Y.isLib?"L":"F"},{title:Y.title,data:Y.data}],Z,Z,["filesInfo","files"])}catch(ea){console.log(ea)}});F=mxUtils.bind(this,function(Y){try{if(Y.source==C.contentWindow){var ea={};try{ea=JSON.parse(Y.data)}catch(ka){}"init"==ea.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
-"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=ea.event||G||(I?null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?(aa=ea.resp[0],I=!1,qa()):ba():null!=ea.resp&&0<ea.resp.length&&null!=ea.resp[0]?N(ea.resp[0]):Z())}}catch(ka){console.log(ka)}});window.addEventListener("message",F)}})));d(y);y.onversionchange=function(){y.close()}});m.onerror=f;m.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&
-f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,f,g,m,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=m;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=m&&m(C)}}),m)};EditorUi.prototype.removeDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){m=m||"objects";Array.isArray(m)||
-(m=[m],d=[d]);q=q.transaction(m,"readwrite");q.oncomplete=f;q.onerror=g;for(var y=0;y<m.length;y++)q.objectStore(m[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){try{m=m||"objects";var y=q.transaction([m],"readonly").objectStore(m).get(d);y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||
-"objects";var q=m.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=
-f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=
-function(d,f,g){var m=this.getCurrentFile();null!=m?m.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,f){var g=this.getCurrentFile();return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=
-function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=
-function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,f,g,m,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,m,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=
-function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,f,g,m,q,y,F,C,I,G,aa,ca,ba,Z,qa,N){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,m,q,y,F,C,I,G,aa,ca,ba,Z,qa,N)};EditorUi.prototype.createImageUrlConverter=
-function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,m)};EditorUi.prototype.convertImageToDataUri=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");
-return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==
-localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===m.substring(0,8)||"<?xml"===m.substring(0,5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&
-"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ja=ca.getElementsByTagName("div"),V=0,J=0;J<ja.length;J++)"none"!=ja[J].style.display&&ja[J].parentNode==ca&&V++;ba.style.display=0==V?"block":"none"}function d(ja,V,J,W){function Q(){V.removeChild(la);V.removeChild(u);ha.style.display="block";S.style.display="block"}I={div:V,comment:ja,saveCallback:J,deleteOnCancel:W};var S=V.querySelector(".geCommentTxt"),ha=V.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
-la.className="geCommentEditTxtArea";la.style.minHeight=S.offsetHeight+"px";la.value=ja.content;V.insertBefore(la,S);var u=document.createElement("div");u.className="geCommentEditBtns";var H=mxUtils.button(mxResources.get("cancel"),function(){W?(V.parentNode.removeChild(V),E()):Q();I=null});H.className="geCommentEditBtn";u.appendChild(H);var O=mxUtils.button(mxResources.get("save"),function(){S.innerText="";ja.content=la.value;mxUtils.write(S,ja.content);Q();J(ja);I=null});mxEvent.addListener(la,"keydown",
-mxUtils.bind(this,function(T){mxEvent.isConsumed(T)||((mxEvent.isControlDown(T)||mxClient.IS_MAC&&mxEvent.isMetaDown(T))&&13==T.keyCode?(O.click(),mxEvent.consume(T)):27==T.keyCode&&(H.click(),mxEvent.consume(T)))}));O.focus();O.className="geCommentEditBtn gePrimaryBtn";u.appendChild(O);V.insertBefore(u,S);ha.style.display="none";S.style.display="none";la.focus()}function f(ja,V){V.innerText="";ja=new Date(ja.modifiedDate);var J=b.timeSince(ja);null==J&&(J=mxResources.get("lessThanAMinute"));mxUtils.write(V,
-mxResources.get("timeAgo",[J],"{1} ago"));V.setAttribute("title",ja.toLocaleDateString()+" "+ja.toLocaleTimeString())}function g(ja){var V=document.createElement("img");V.className="geCommentBusyImg";V.src=IMAGE_PATH+"/spin.gif";ja.appendChild(V);ja.busyImg=V}function m(ja){ja.style.border="1px solid red";ja.removeChild(ja.busyImg)}function q(ja){ja.style.border="";ja.removeChild(ja.busyImg)}function y(ja,V,J,W,Q){function S(da,P,ma){var ra=document.createElement("li");ra.className="geCommentAction";
-var xa=document.createElement("a");xa.className="geCommentActionLnk";mxUtils.write(xa,da);ra.appendChild(xa);mxEvent.addListener(xa,"click",function(ta){P(ta,ja);ta.preventDefault();mxEvent.consume(ta)});R.appendChild(ra);ma&&(ra.style.display="none")}function ha(){function da(ra){P.push(ma);if(null!=ra.replies)for(var xa=0;xa<ra.replies.length;xa++)ma=ma.nextSibling,da(ra.replies[xa])}var P=[],ma=u;da(ja);return{pdiv:ma,replies:P}}function la(da,P,ma,ra,xa){function ta(){g(sa);ja.addReply(Ba,function(Oa){Ba.id=
-Oa;ja.replies.push(Ba);q(sa);ma&&ma()},function(Oa){Aa();m(sa);b.handleError(Oa,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},ra,xa)}function Aa(){d(Ba,sa,function(Oa){ta()},!0)}var Ca=ha().pdiv,Ba=b.newComment(da,b.getCurrentUser());Ba.pCommentId=ja.id;null==ja.replies&&(ja.replies=[]);var sa=y(Ba,ja.replies,Ca,W+1);P?Aa():ta()}if(Q||!ja.isResolved){ba.style.display="none";var u=document.createElement("div");u.className="geCommentContainer";u.setAttribute("data-commentId",
-ja.id);u.style.marginLeft=20*W+5+"px";ja.isResolved&&!Editor.isDarkMode()&&(u.style.backgroundColor="ghostWhite");var H=document.createElement("div");H.className="geCommentHeader";var O=document.createElement("img");O.className="geCommentUserImg";O.src=ja.user.pictureUrl||Editor.userImage;H.appendChild(O);O=document.createElement("div");O.className="geCommentHeaderTxt";H.appendChild(O);var T=document.createElement("div");T.className="geCommentUsername";mxUtils.write(T,ja.user.displayName||"");O.appendChild(T);
-T=document.createElement("div");T.className="geCommentDate";T.setAttribute("data-commentId",ja.id);f(ja,T);O.appendChild(T);u.appendChild(H);H=document.createElement("div");H.className="geCommentTxt";mxUtils.write(H,ja.content||"");u.appendChild(H);ja.isLocked&&(u.style.opacity="0.5");H=document.createElement("div");H.className="geCommentActions";var R=document.createElement("ul");R.className="geCommentActionsList";H.appendChild(R);F||ja.isLocked||0!=W&&!C||S(mxResources.get("reply"),function(){la("",
-!0)},ja.isResolved);O=b.getCurrentUser();null==O||O.id!=ja.user.id||F||ja.isLocked||(S(mxResources.get("edit"),function(){function da(){d(ja,u,function(){g(u);ja.editComment(ja.content,function(){q(u)},function(P){m(u);da();b.handleError(P,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}da()},ja.isResolved),S(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(u);ja.deleteComment(function(da){if(!0===da){da=u.querySelector(".geCommentTxt");
-da.innerText="";mxUtils.write(da,mxResources.get("msgDeleted"));var P=u.querySelectorAll(".geCommentAction");for(da=0;da<P.length;da++)P[da].parentNode.removeChild(P[da]);q(u);u.style.opacity="0.5"}else{P=ha(ja).replies;for(da=0;da<P.length;da++)ca.removeChild(P[da]);for(da=0;da<V.length;da++)if(V[da]==ja){V.splice(da,1);break}ba.style.display=0==ca.getElementsByTagName("div").length?"block":"none"}},function(da){m(u);b.handleError(da,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
-ja.isResolved));F||ja.isLocked||0!=W||S(ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(da){function P(){var ma=da.target;ma.innerText="";ja.isResolved=!ja.isResolved;mxUtils.write(ma,ja.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var ra=ja.isResolved?"none":"",xa=ha(ja).replies,ta=Editor.isDarkMode()?"transparent":ja.isResolved?"ghostWhite":"white",Aa=0;Aa<xa.length;Aa++){xa[Aa].style.backgroundColor=ta;for(var Ca=xa[Aa].querySelectorAll(".geCommentAction"),
-Ba=0;Ba<Ca.length;Ba++)Ca[Ba]!=ma.parentNode&&(Ca[Ba].style.display=ra);N||(xa[Aa].style.display="none")}E()}ja.isResolved?la(mxResources.get("reOpened")+": ",!0,P,!1,!0):la(mxResources.get("markedAsResolved"),!1,P,!0)});u.appendChild(H);null!=J?ca.insertBefore(u,J.nextSibling):ca.appendChild(u);for(J=0;null!=ja.replies&&J<ja.replies.length;J++)H=ja.replies[J],H.isResolved=ja.isResolved,y(H,ja.replies,null,W+1,Q);null!=I&&(I.comment.id==ja.id?(Q=ja.content,ja.content=I.comment.content,d(ja,u,I.saveCallback,
-I.deleteOnCancel),ja.content=Q):null==I.comment.id&&I.comment.pCommentId==ja.id&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel)));return u}}var F=!b.canComment(),C=b.canReplyToReplies(),I=null,G=document.createElement("div");G.className="geCommentsWin";G.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var aa=EditorUi.compactUi?"26px":"30px",ca=document.createElement("div");ca.className="geCommentsList";ca.style.backgroundColor=Editor.isDarkMode()?
-Dialog.backdropColor:"whiteSmoke";ca.style.bottom=parseInt(aa)+7+"px";G.appendChild(ca);var ba=document.createElement("span");ba.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(ba,mxResources.get("noCommentsFound"));var Z=document.createElement("div");Z.className="geToolbarContainer geCommentsToolbar";Z.style.height=aa;Z.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";Z.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";aa=document.createElement("a");
-aa.className="geButton";if(!F){var qa=aa.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ja){function V(){d(J,W,function(Q){g(W);b.addComment(Q,function(S){Q.id=S;Y.push(Q);q(W)},function(S){m(W);V();b.handleError(S,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var J=b.newComment("",b.getCurrentUser()),W=y(J,Y,null,0);
-V();ja.preventDefault();mxEvent.consume(ja)});Z.appendChild(qa)}qa=aa.cloneNode();qa.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';qa.setAttribute("title",mxResources.get("showResolved"));var N=!1;Editor.isDarkMode()&&(qa.style.filter="invert(100%)");mxEvent.addListener(qa,"click",function(ja){this.className=(N=!N)?"geButton geCheckedBtn":"geButton";ea();ja.preventDefault();mxEvent.consume(ja)});Z.appendChild(qa);b.commentsRefreshNeeded()&&(qa=aa.cloneNode(),
-qa.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',qa.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(qa.style.filter="invert(100%)"),mxEvent.addListener(qa,"click",function(ja){ea();ja.preventDefault();mxEvent.consume(ja)}),Z.appendChild(qa));b.commentsSaveNeeded()&&(aa=aa.cloneNode(),aa.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',aa.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&
-(aa.style.filter="invert(100%)"),mxEvent.addListener(aa,"click",function(ja){t();ja.preventDefault();mxEvent.consume(ja)}),Z.appendChild(aa));G.appendChild(Z);var Y=[],ea=mxUtils.bind(this,function(){this.hasError=!1;if(null!=I)try{I.div=I.div.cloneNode(!0);var ja=I.div.querySelector(".geCommentEditTxtArea"),V=I.div.querySelector(".geCommentEditBtns");I.comment.content=ja.value;ja.parentNode.removeChild(ja);V.parentNode.removeChild(V)}catch(J){b.handleError(J)}ca.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+
-IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(J){function W(Q){if(null!=Q){Q.sort(function(ha,la){return new Date(ha.modifiedDate)-new Date(la.modifiedDate)});for(var S=0;S<Q.length;S++)W(Q[S].replies)}}J.sort(function(Q,S){return new Date(Q.modifiedDate)-new Date(S.modifiedDate)});ca.innerText="";ca.appendChild(ba);ba.style.display="block";Y=J;for(J=0;J<Y.length;J++)W(Y[J].replies),
-y(Y[J],Y,null,0,N);null!=I&&null==I.comment.id&&null==I.comment.pCommentId&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel))},mxUtils.bind(this,function(J){ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(J&&J.message?": "+J.message:""));this.hasError=!0})):ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});ea();this.refreshComments=ea;Z=mxUtils.bind(this,function(){function ja(S){var ha=J[S.id];if(null!=ha)for(f(S,ha),ha=0;null!=S.replies&&ha<S.replies.length;ha++)ja(S.replies[ha])}
-if(this.window.isVisible()){for(var V=ca.querySelectorAll(".geCommentDate"),J={},W=0;W<V.length;W++){var Q=V[W];J[Q.getAttribute("data-commentId")]=Q}for(W=0;W<Y.length;W++)ja(Y[W])}});setInterval(Z,6E4);this.refreshCommentsTime=Z;this.window=new mxWindow(mxResources.get("comments"),G,e,k,n,D,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,
-mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(ja,V){var J=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;ja=Math.max(0,Math.min(ja,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));V=Math.max(0,Math.min(V,J-this.table.clientHeight-48));this.getX()==ja&&this.getY()==V||mxWindow.prototype.setLocation.apply(this,arguments)};var ka=mxUtils.bind(this,function(){var ja=
-this.window.getX(),V=this.window.getY();this.window.setLocation(ja,V)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,e);q.appendChild(y);null!=
-g&&(y=document.createElement("div"),y.style.padding="6px 0 6px 0",e=document.createElement("img"),e.setAttribute("src",g),y.appendChild(e),q.appendChild(y));g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";var F=document.createElement("input");F.setAttribute("type","checkbox");t=mxUtils.button(t||mxResources.get("cancel"),function(){b.hideDialog();null!=n&&n(F.checked)});t.className="geBtn";null!=d&&(t.innerHTML=d+"<br>"+t.innerHTML,t.style.paddingBottom="8px",
-t.style.paddingTop="8px",t.style.height="auto",t.style.width="40%");b.editor.cancelFirst&&g.appendChild(t);var C=mxUtils.button(D||mxResources.get("ok"),function(){b.hideDialog();null!=k&&k(F.checked)});g.appendChild(C);null!=E?(C.innerHTML=E+"<br>"+C.innerHTML+"<br>",C.style.paddingBottom="8px",C.style.paddingTop="8px",C.style.height="auto",C.className="geBtn",C.style.width="40%"):C.className="geBtn gePrimaryBtn";b.editor.cancelFirst||g.appendChild(t);q.appendChild(g);f?(g.style.marginTop="10px",
-y=document.createElement("p"),y.style.marginTop="20px",y.style.marginBottom="0px",y.appendChild(F),D=document.createElement("span"),mxUtils.write(D," "+mxResources.get("rememberThisSetting")),y.appendChild(D),q.appendChild(y),mxEvent.addListener(D,"click",function(I){F.checked=!F.checked;mxEvent.consume(I)})):g.style.marginTop="12px";this.init=function(){C.focus()};this.container=q};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")};
+G&&G<m.length&&(m=m.substring(G+1))}EditorUi.logEvent({category:C+"-MS-IMPORT-FILE",action:"filename_"+m,label:F?"remote":"local"})}catch(ca){}if(F)if(null==VSD_CONVERT_URL||this.isOffline())g({message:"draw.io"!=this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{F=new FormData;F.append("file1",d,m);var Z=new XMLHttpRequest;Z.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(m)?"?stencil=1":""));Z.responseType="blob";this.addRemoteServiceSecurityCheck(Z);
+null!=q&&Z.setRequestHeader("x-convert-custom",q);Z.onreadystatechange=mxUtils.bind(this,function(){if(4==Z.readyState)if(200<=Z.status&&299>=Z.status)try{var ca=Z.response;if("text/xml"==ca.type){var aa=new FileReader;aa.onload=mxUtils.bind(this,function(Y){try{f(Y.target.result)}catch(qa){g({message:mxResources.get("errorLoadingFile")})}});aa.readAsText(ca)}else this.doImportVisio(ca,f,g,m)}catch(Y){g(Y)}else try{""==Z.responseType||"text"==Z.responseType?g({message:Z.responseText}):(aa=new FileReader,
+aa.onload=function(){g({message:JSON.parse(aa.result).Message})},aa.readAsText(Z.response))}catch(Y){g({})}});Z.send(F)}else try{this.doImportVisio(d,f,g,m)}catch(ca){g(ca)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?y():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",y))};EditorUi.prototype.importGraphML=function(d,f,g){g=null!=g?g:mxUtils.bind(this,function(q){this.handleError(q)});
+var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(d,f,g)}catch(q){g(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?m():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",m))};EditorUi.prototype.exportVisio=function(d){var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(d)||
+this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.convertLucidChart=function(d,f,g){var m=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var q=
+JSON.parse(d);f(LucidImporter.importState(q));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+d.length}),null!=window.console&&"1"==urlParams.test){var y=[(new Date).toISOString(),"convertLucidChart",q];null!=q.state&&y.push(JSON.parse(q.state));if(null!=q.svgThumbs)for(var F=0;F<q.svgThumbs.length;F++)y.push(Editor.createSvgDataUri(q.svgThumbs[F]));null!=q.thumb&&y.push(q.thumb);console.log.apply(console,y)}}catch(C){}}catch(C){null!=window.console&&console.error(C),g(C)}else g({message:mxResources.get("serviceUnavailableOrBlocked")})});
+"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(m,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",function(){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",m)})})})}):mxscript("js/extensions.min.js",m))};EditorUi.prototype.generateMermaidImage=function(d,
+f,g,m){var q=this,y=function(){try{this.loadingMermaid=!1,f=null!=f?f:mxUtils.clone(EditorUi.defaultMermaidConfig),f.securityLevel="strict",f.startOnLoad=!1,Editor.isDarkMode()&&(f.theme="dark"),mermaid.mermaidAPI.initialize(f),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),d,function(F){try{if(mxClient.IS_IE||mxClient.IS_IE11)F=F.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var C=mxUtils.parseXml(F).getElementsByTagName("svg");
+if(0<C.length){var I=parseFloat(C[0].getAttribute("width")),G=parseFloat(C[0].getAttribute("height"));if(isNaN(I)||isNaN(G))try{var Z=C[0].getAttribute("viewBox").split(/\s+/);I=parseFloat(Z[2]);G=parseFloat(Z[3])}catch(ca){I=I||100,G=G||100}g(q.convertDataUri(Editor.createSvgDataUri(F)),I,G)}else m({message:mxResources.get("invalidInput")})}catch(ca){m(ca)}})}catch(F){m(F)}};"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?y():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",
+y):mxscript("js/extensions.min.js",y))};EditorUi.prototype.generatePlantUmlImage=function(d,f,g,m){function q(C,I,G){c1=C>>2;c2=(C&3)<<4|I>>4;c3=(I&15)<<2|G>>6;c4=G&63;r="";r+=y(c1&63);r+=y(c2&63);r+=y(c3&63);return r+=y(c4&63)}function y(C){if(10>C)return String.fromCharCode(48+C);C-=10;if(26>C)return String.fromCharCode(65+C);C-=26;if(26>C)return String.fromCharCode(97+C);C-=26;return 0==C?"-":1==C?"_":"?"}var F=new XMLHttpRequest;F.open("GET",("txt"==f?PLANT_URL+"/txt/":"png"==f?PLANT_URL+"/png/":
+PLANT_URL+"/svg/")+function(C){r="";for(i=0;i<C.length;i+=3)r=i+2==C.length?r+q(C.charCodeAt(i),C.charCodeAt(i+1),0):i+1==C.length?r+q(C.charCodeAt(i),0,0):r+q(C.charCodeAt(i),C.charCodeAt(i+1),C.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(d))),!0);"txt"!=f&&(F.responseType="blob");F.onload=function(C){if(200<=this.status&&300>this.status)if("txt"==f)g(this.response);else{var I=new FileReader;I.readAsDataURL(this.response);I.onloadend=function(G){var Z=new Image;Z.onload=
+function(){try{var ca=Z.width,aa=Z.height;if(0==ca&&0==aa){var Y=I.result,qa=Y.indexOf(","),Q=decodeURIComponent(escape(atob(Y.substring(qa+1)))),X=mxUtils.parseXml(Q).getElementsByTagName("svg");0<X.length&&(ca=parseFloat(X[0].getAttribute("width")),aa=parseFloat(X[0].getAttribute("height")))}g(I.result,ca,aa)}catch(fa){m(fa)}};Z.src=I.result};I.onerror=function(G){m(G)}}else m(C)};F.onerror=function(C){m(C)};F.send()};EditorUi.prototype.insertAsPreText=function(d,f,g){var m=this.editor.graph,q=
+null;m.getModel().beginUpdate();try{q=m.insertVertex(null,null,"<pre>"+d+"</pre>",f,g,1,1,"text;html=1;align=left;verticalAlign=top;"),m.updateCellSize(q,!0)}finally{m.getModel().endUpdate()}return q};EditorUi.prototype.insertTextAt=function(d,f,g,m,q,y,F,C){y=null!=y?y:!0;F=null!=F?F:!0;if(null!=d)if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d))this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(d.replace(/\s+/g,
+" "),mxUtils.bind(this,function(aa){4==aa.readyState&&200<=aa.status&&299>=aa.status&&this.editor.graph.setSelectionCells(this.insertTextAt(aa.responseText,f,g,!0))}));else if("data:"==d.substring(0,5)||!this.isOffline()&&(q||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d))){var I=this.editor.graph;if("data:application/pdf;base64,"==d.substring(0,28)){var G=Editor.extractGraphModelFromPdf(d);if(null!=G&&0<G.length)return this.importXml(G,f,g,y,!0,C)}if(Editor.isPngDataUrl(d)&&(G=Editor.extractGraphModelFromPng(d),
+null!=G&&0<G.length))return this.importXml(G,f,g,y,!0,C);if("data:image/svg+xml;"==d.substring(0,19))try{G=null;"data:image/svg+xml;base64,"==d.substring(0,26)?(G=d.substring(d.indexOf(",")+1),G=window.atob&&!mxClient.IS_SF?atob(G):Base64.decode(G,!0)):G=decodeURIComponent(d.substring(d.indexOf(",")+1));var Z=this.importXml(G,f,g,y,!0,C);if(0<Z.length)return Z}catch(aa){}this.loadImage(d,mxUtils.bind(this,function(aa){if("data:"==d.substring(0,5))this.resizeImage(aa,d,mxUtils.bind(this,function(Q,
+X,fa){I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),X,fa,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(Q)+";"))}),F,this.maxImageSize);else{var Y=Math.min(1,Math.min(this.maxImageSize/aa.width,this.maxImageSize/aa.height)),qa=Math.round(aa.width*Y);aa=Math.round(aa.height*Y);I.setSelectionCell(I.insertVertex(null,null,"",I.snap(f),I.snap(g),qa,aa,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
+d+";"))}}),mxUtils.bind(this,function(){var aa=null;I.getModel().beginUpdate();try{aa=I.insertVertex(I.getDefaultParent(),null,d,I.snap(f),I.snap(g),1,1,"text;"+(m?"html=1;":"")),I.updateCellSize(aa),I.fireEvent(new mxEventObject("textInserted","cells",[aa]))}finally{I.getModel().endUpdate()}I.setSelectionCell(aa)}))}else{d=Graph.zapGremlins(mxUtils.trim(d));if(this.isCompatibleString(d))return this.importXml(d,f,g,y,null,C);if(0<d.length)if(this.isLucidChartData(d))this.convertLucidChart(d,mxUtils.bind(this,
+function(aa){this.editor.graph.setSelectionCells(this.importXml(aa,f,g,y,null,C))}),mxUtils.bind(this,function(aa){this.handleError(aa)}));else{I=this.editor.graph;q=null;I.getModel().beginUpdate();try{q=I.insertVertex(I.getDefaultParent(),null,"",I.snap(f),I.snap(g),1,1,"text;whiteSpace=wrap;"+(m?"html=1;":""));I.fireEvent(new mxEventObject("textInserted","cells",[q]));"<"==d.charAt(0)&&d.indexOf(">")==d.length-1&&(d=mxUtils.htmlEntities(d));d.length>this.maxTextBytes&&(d=d.substring(0,this.maxTextBytes)+
+"...");q.value=d;I.updateCellSize(q);if(0<this.maxTextWidth&&q.geometry.width>this.maxTextWidth){var ca=I.getPreferredSizeForCell(q,this.maxTextWidth);q.geometry.width=ca.width;q.geometry.height=ca.height}Graph.isLink(q.value)&&I.setLinkForCell(q,q.value);q.geometry.width+=I.gridSize;q.geometry.height+=I.gridSize}finally{I.getModel().endUpdate()}return[q]}}return[]};EditorUi.prototype.formatFileSize=function(d){var f=-1;do d/=1024,f++;while(1024<d);return Math.max(d,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[f]};
+EditorUi.prototype.convertDataUri=function(d){if("data:"==d.substring(0,5)){var f=d.indexOf(";");0<f&&(d=d.substring(0,f)+d.substring(d.indexOf(",",f+1)))}return d};EditorUi.prototype.isRemoteFileFormat=function(d,f){return/("contentType":\s*"application\/gliffy\+json")/.test(d)};EditorUi.prototype.isLucidChartData=function(d){return null!=d&&('{"state":"{\\"Properties\\":'==d.substring(0,26)||'{"Properties":'==d.substring(0,14))};EditorUi.prototype.importLocalFile=function(d,f){if(d&&Graph.fileSupport){if(null==
+this.importFileInputElt){var g=document.createElement("input");g.setAttribute("type","file");mxEvent.addListener(g,"change",mxUtils.bind(this,function(){null!=g.files&&(this.importFiles(g.files,null,null,this.maxImageSize),g.type="",g.type="file",g.value="")}));g.style.display="none";document.body.appendChild(g);this.importFileInputElt=g}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";window.listBrowserFiles=mxUtils.bind(this,function(F,C){StorageFile.listFiles(this,
+"F",F,C)});window.openBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.getFileContent(this,F,C,I)});window.deleteBrowserFile=mxUtils.bind(this,function(F,C,I){StorageFile.deleteFile(this,F,C,I)});if(!f){var m=Editor.useLocalStorage;Editor.useLocalStorage=!d}window.openFile=new OpenFile(mxUtils.bind(this,function(F){this.hideDialog(F)}));window.openFile.setConsumer(mxUtils.bind(this,function(F,C){null!=C&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(C)?(F=new Blob([F],{type:"application/octet-stream"}),
+this.importVisio(F,mxUtils.bind(this,function(I){this.importXml(I,0,0,!0)}),null,C)):this.editor.graph.setSelectionCells(this.importXml(F,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!f){var q=this.dialog,y=q.close;this.dialog.close=mxUtils.bind(this,function(F){Editor.useLocalStorage=m;y.apply(q,arguments);F&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
+EditorUi.prototype.importZipFile=function(d,f,g){var m=this,q=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(d).then(function(y){if(mxUtils.isEmptyObject(y.files))g();else{var F=0,C,I=!1;y.forEach(function(G,Z){G=Z.name.toLowerCase();"diagram/diagram.xml"==G?(I=!0,Z.async("string").then(function(ca){0==ca.indexOf("<mxfile ")?f(ca):g()})):0==G.indexOf("versions/")&&(G=parseInt(G.substr(9)),G>F&&(F=G,C=Z))});0<F?C.async("string").then(function(G){(new XMLHttpRequest).upload&&
+m.isRemoteFileFormat(G,d.name)?m.isOffline()?m.showError(mxResources.get("error"),mxResources.get("notInOffline"),null,g):m.parseFileData(G,mxUtils.bind(this,function(Z){4==Z.readyState&&(200<=Z.status&&299>=Z.status?f(Z.responseText):g())}),d.name):g()}):I||g()}},function(y){g(y)}):g()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?q():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",q))};EditorUi.prototype.importFile=function(d,f,g,m,q,y,F,C,I,G,Z,ca){G=null!=
+G?G:!0;var aa=!1,Y=null,qa=mxUtils.bind(this,function(Q){var X=null;null!=Q&&"<mxlibrary"==Q.substring(0,10)?this.loadLibrary(new LocalLibrary(this,Q,F)):X=this.importXml(Q,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null);null!=C&&C(X)});"image"==f.substring(0,5)?(I=!1,"image/png"==f.substring(0,9)&&(f=Z?null:this.extractGraphModelFromPng(d),null!=f&&0<f.length&&(Y=this.importXml(f,g,m,G,null,null!=ca?mxEvent.isControlDown(ca):null),I=!0)),I||(f=this.editor.graph,I=d.indexOf(";"),0<I&&(d=d.substring(0,
+I)+d.substring(d.indexOf(",",I+1))),G&&f.isGridEnabled()&&(g=f.snap(g),m=f.snap(m)),Y=[f.insertVertex(null,null,"",g,m,q,y,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+d+";")])):/(\.*<graphml )/.test(d)?(aa=!0,this.importGraphML(d,qa)):null!=I&&null!=F&&(/(\.v(dx|sdx?))($|\?)/i.test(F)||/(\.vs(x|sx?))($|\?)/i.test(F))?(aa=!0,this.importVisio(I,qa)):(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,F)?this.isOffline()?
+this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(aa=!0,q=mxUtils.bind(this,function(Q){4==Q.readyState&&(200<=Q.status&&299>=Q.status?qa(Q.responseText):null!=C&&C(null))}),null!=d?this.parseFileData(d,q,F):this.parseFile(I,q,F)):0==d.indexOf("PK")&&null!=I?(aa=!0,this.importZipFile(I,qa,mxUtils.bind(this,function(){Y=this.insertTextAt(this.validateFileData(d),g,m,!0,null,G);C(Y)}))):/(\.v(sd|dx))($|\?)/i.test(F)||/(\.vs(s|x))($|\?)/i.test(F)||(Y=this.insertTextAt(this.validateFileData(d),
+g,m,!0,null,G,null,null!=ca?mxEvent.isControlDown(ca):null));aa||null==C||C(Y);return Y};EditorUi.prototype.importFiles=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa){m=null!=m?m:this.maxImageSize;G=null!=G?G:this.maxImageBytes;var Y=null!=f&&null!=g,qa=!0;f=null!=f?f:0;g=null!=g?g:0;var Q=!1;if(!mxClient.IS_CHROMEAPP&&null!=d)for(var X=Z||this.resampleThreshold,fa=0;fa<d.length;fa++)if("image/svg"!==d[fa].type.substring(0,9)&&"image/"===d[fa].type.substring(0,6)&&d[fa].size>X){Q=!0;break}var ka=mxUtils.bind(this,
+function(){var ia=this.editor.graph,V=ia.gridSize;q=null!=q?q:mxUtils.bind(this,function(la,u,H,P,T,S,da,R,ma){try{return null!=la&&"<mxlibrary"==la.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,la,da)),null):this.importFile(la,u,H,P,T,S,da,R,ma,Y,ca,aa)}catch(ra){return this.handleError(ra),null}});y=null!=y?y:mxUtils.bind(this,function(la){ia.setSelectionCells(la)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var L=d.length,ea=L,O=[],N=mxUtils.bind(this,
+function(la,u){O[la]=u;if(0==--ea){this.spinner.stop();if(null!=C)C(O);else{var H=[];ia.getModel().beginUpdate();try{for(la=0;la<O.length;la++){var P=O[la]();null!=P&&(H=H.concat(P))}}finally{ia.getModel().endUpdate()}}y(H)}}),ba=0;ba<L;ba++)mxUtils.bind(this,function(la){var u=d[la];if(null!=u){var H=new FileReader;H.onload=mxUtils.bind(this,function(P){if(null==F||F(u))if("image/"==u.type.substring(0,6))if("image/svg"==u.type.substring(0,9)){var T=Graph.clipSvgDataUri(P.target.result),S=T.indexOf(",");
+S=decodeURIComponent(escape(atob(T.substring(S+1))));var da=mxUtils.parseXml(S);S=da.getElementsByTagName("svg");if(0<S.length){S=S[0];var R=ca?null:S.getAttribute("content");null!=R&&"<"!=R.charAt(0)&&"%"!=R.charAt(0)&&(R=unescape(window.atob?atob(R):Base64.decode(R,!0)));null!=R&&"%"==R.charAt(0)&&(R=decodeURIComponent(R));null==R||"<mxfile "!==R.substring(0,8)&&"<mxGraphModel "!==R.substring(0,14)?N(la,mxUtils.bind(this,function(){try{if(null!=da){var xa=da.getElementsByTagName("svg");if(0<xa.length){var ta=
+xa[0],Aa=ta.getAttribute("width"),Ca=ta.getAttribute("height");Aa=null!=Aa&&"%"!=Aa.charAt(Aa.length-1)?parseFloat(Aa):NaN;Ca=null!=Ca&&"%"!=Ca.charAt(Ca.length-1)?parseFloat(Ca):NaN;var Ba=ta.getAttribute("viewBox");if(null==Ba||0==Ba.length)ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);else if(isNaN(Aa)||isNaN(Ca)){var sa=Ba.split(" ");3<sa.length&&(Aa=parseFloat(sa[2]),Ca=parseFloat(sa[3]))}T=Editor.createSvgDataUri(mxUtils.getXml(ta));var Pa=Math.min(1,Math.min(m/Math.max(1,Aa)),m/Math.max(1,Ca)),
+Ta=q(T,u.type,f+la*V,g+la*V,Math.max(1,Math.round(Aa*Pa)),Math.max(1,Math.round(Ca*Pa)),u.name);if(isNaN(Aa)||isNaN(Ca)){var Oa=new Image;Oa.onload=mxUtils.bind(this,function(){Aa=Math.max(1,Oa.width);Ca=Math.max(1,Oa.height);Ta[0].geometry.width=Aa;Ta[0].geometry.height=Ca;ta.setAttribute("viewBox","0 0 "+Aa+" "+Ca);T=Editor.createSvgDataUri(mxUtils.getXml(ta));var Xa=T.indexOf(";");0<Xa&&(T=T.substring(0,Xa)+T.substring(T.indexOf(",",Xa+1)));ia.setCellStyles("image",T,[Ta[0]])});Oa.src=Editor.createSvgDataUri(mxUtils.getXml(ta))}return Ta}}}catch(Xa){}return null})):
+N(la,mxUtils.bind(this,function(){return q(R,"text/xml",f+la*V,g+la*V,0,0,u.name)}))}else N(la,mxUtils.bind(this,function(){return null}))}else{S=!1;if("image/png"==u.type){var ma=ca?null:this.extractGraphModelFromPng(P.target.result);if(null!=ma&&0<ma.length){var ra=new Image;ra.src=P.target.result;N(la,mxUtils.bind(this,function(){return q(ma,"text/xml",f+la*V,g+la*V,ra.width,ra.height,u.name)}));S=!0}}S||(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(P.target.result,mxUtils.bind(this,function(xa){this.resizeImage(xa,P.target.result,mxUtils.bind(this,function(ta,Aa,Ca){N(la,mxUtils.bind(this,function(){if(null!=ta&&ta.length<G){var Ba=qa&&this.isResampleImageSize(u.size,Z)?Math.min(1,Math.min(m/Aa,m/Ca)):1;return q(ta,u.type,f+la*V,g+la*V,Math.round(Aa*Ba),Math.round(Ca*Ba),u.name)}this.handleError({message:mxResources.get("imageTooBig")});
+return null}))}),qa,m,Z,u.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else T=P.target.result,q(T,u.type,f+la*V,g+la*V,240,160,u.name,function(xa){N(la,function(){return xa})},u)});/(\.v(dx|sdx?))($|\?)/i.test(u.name)||/(\.vs(x|sx?))($|\?)/i.test(u.name)?q(null,u.type,f+la*V,g+la*V,240,160,u.name,function(P){N(la,function(){return P})},u):"image"==u.type.substring(0,5)||"application/pdf"==u.type?H.readAsDataURL(u):H.readAsText(u)}})(ba)});
+if(Q){Q=[];for(fa=0;fa<d.length;fa++)Q.push(d[fa]);d=Q;this.confirmImageResize(function(ia){qa=ia;ka()},I)}else ka()};EditorUi.prototype.isBlankFile=function(){return null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1])};EditorUi.prototype.confirmImageResize=function(d,f){f=null!=f?f:!1;var g=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():
+null,q=function(y,F){if(y||f)mxSettings.setResizeImages(y?F:null),mxSettings.save();g();d(F)};null==m||f?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(y){q(y,!0)},function(y){q(y,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,
+!0,!0):q(!1,m)};EditorUi.prototype.parseFile=function(d,f,g){g=null!=g?g:d.name;var m=new FileReader;m.onload=mxUtils.bind(this,function(){this.parseFileData(m.result,f,g)});m.readAsText(d)};EditorUi.prototype.parseFileData=function(d,f,g){var m=new XMLHttpRequest;m.open("POST",OPEN_URL);m.setRequestHeader("Content-Type","application/x-www-form-urlencoded");m.onreadystatechange=function(){f(m)};m.send("format=xml&filename="+encodeURIComponent(g)+"&data="+encodeURIComponent(d));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",
+action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(d,f){f=null!=f?f:this.resampleThreshold;return d>f};EditorUi.prototype.resizeImage=function(d,f,g,m,q,y,F){q=null!=q?q:this.maxImageSize;var C=Math.max(1,d.width),I=Math.max(1,d.height);if(m&&this.isResampleImageSize(null!=F?F:f.length,y))try{var G=Math.max(C/q,I/q);if(1<G){var Z=Math.round(C/G),ca=Math.round(I/G),aa=document.createElement("canvas");aa.width=Z;aa.height=ca;aa.getContext("2d").drawImage(d,0,0,Z,
+ca);var Y=aa.toDataURL();if(Y.length<f.length){var qa=document.createElement("canvas");qa.width=Z;qa.height=ca;var Q=qa.toDataURL();Y!==Q&&(f=Y,C=Z,I=ca)}}}catch(X){}g(f,C,I)};EditorUi.prototype.extractGraphModelFromPng=function(d){return Editor.extractGraphModelFromPng(d)};EditorUi.prototype.loadImage=function(d,f,g){try{var m=new Image;m.onload=function(){m.width=0<m.width?m.width:120;m.height=0<m.height?m.height:120;f(m)};null!=g&&(m.onerror=g);m.src=d}catch(q){if(null!=g)g(q);else throw q;}};
+EditorUi.prototype.getDefaultSketchMode=function(){var d="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?urlParams.rough:d)};var D=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&
+(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());var d=this,f=this.editor.graph;Editor.isDarkMode()&&(f.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(f.panningHandler.isPanningTrigger=function(X){var fa=X.getEvent();return null==X.getState()&&!mxEvent.isMouseEvent(fa)&&!f.freehand.isDrawing()||mxEvent.isPopupTrigger(fa)&&(null==X.getState()||mxEvent.isControlDown(fa)||mxEvent.isShiftDown(fa))});
+f.cellEditor.editPlantUmlData=function(X,fa,ka){var ia=JSON.parse(ka);fa=new TextareaDialog(d,mxResources.get("plantUml")+":",ia.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generatePlantUmlImage(V,ia.format,function(L,ea,O){d.spinner.stop();f.getModel().beginUpdate();try{if("txt"==ia.format)f.labelChanged(X,"<pre>"+L+"</pre>"),f.updateCellSize(X,!0);else{f.setCellStyles("image",d.convertDataUri(L),[X]);var N=f.model.getGeometry(X);null!=N&&(N=N.clone(),
+N.width=ea,N.height=O,f.cellsResized([X],[N],!1))}f.setAttributeForCell(X,"plantUmlData",JSON.stringify({data:V,format:ia.format}))}finally{f.getModel().endUpdate()}},function(L){d.handleError(L)})},null,null,400,220);d.showDialog(fa.container,420,300,!0,!0);fa.init()};f.cellEditor.editMermaidData=function(X,fa,ka){var ia=JSON.parse(ka);fa=new TextareaDialog(d,mxResources.get("mermaid")+":",ia.data,function(V){null!=V&&d.spinner.spin(document.body,mxResources.get("inserting"))&&d.generateMermaidImage(V,
+ia.config,function(L,ea,O){d.spinner.stop();f.getModel().beginUpdate();try{f.setCellStyles("image",L,[X]);var N=f.model.getGeometry(X);null!=N&&(N=N.clone(),N.width=Math.max(N.width,ea),N.height=Math.max(N.height,O),f.cellsResized([X],[N],!1));f.setAttributeForCell(X,"mermaidData",JSON.stringify({data:V,config:ia.config},null,2))}finally{f.getModel().endUpdate()}},function(L){d.handleError(L)})},null,null,400,220);d.showDialog(fa.container,420,300,!0,!0);fa.init()};var g=f.cellEditor.startEditing;
+f.cellEditor.startEditing=function(X,fa){try{var ka=this.graph.getAttributeForCell(X,"plantUmlData");if(null!=ka)this.editPlantUmlData(X,fa,ka);else if(ka=this.graph.getAttributeForCell(X,"mermaidData"),null!=ka)this.editMermaidData(X,fa,ka);else{var ia=f.getCellStyle(X);"1"==mxUtils.getValue(ia,"metaEdit","0")?d.showDataDialog(X):g.apply(this,arguments)}}catch(V){d.handleError(V)}};f.getLinkTitle=function(X){return d.getLinkTitle(X)};f.customLinkClicked=function(X){var fa=!1;try{d.handleCustomLink(X),
+fa=!0}catch(ka){d.handleError(ka)}return fa};var m=f.parseBackgroundImage;f.parseBackgroundImage=function(X){var fa=m.apply(this,arguments);null!=fa&&null!=fa.src&&Graph.isPageLink(fa.src)&&(fa={originalSrc:fa.src});return fa};var q=f.setBackgroundImage;f.setBackgroundImage=function(X){null!=X&&null!=X.originalSrc&&(X=d.createImageForPageLink(X.originalSrc,d.currentPage,this));q.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));
+this.editor.addListener("pageMoved",mxUtils.bind(this,function(){f.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(X,fa){X=null!=f.backgroundImage?f.backgroundImage.originalSrc:null;if(null!=X){var ka=X.indexOf(",");if(0<ka)for(X=X.substring(ka+1),fa=fa.getProperty("patches"),ka=0;ka<fa.length;ka++)if(null!=fa[ka][EditorUi.DIFF_UPDATE]&&null!=fa[ka][EditorUi.DIFF_UPDATE][X]||null!=fa[ka][EditorUi.DIFF_REMOVE]&&0<=mxUtils.indexOf(fa[ka][EditorUi.DIFF_REMOVE],
+X)){f.refreshBackgroundImage();break}}}));var y=f.getBackgroundImageObject;f.getBackgroundImageObject=function(X,fa){var ka=y.apply(this,arguments);if(null!=ka&&null!=ka.originalSrc)if(!fa)ka={src:ka.originalSrc};else if(fa&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var ia=this.stylesheet,V=this.shapeForegroundColor,L=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";ka=d.createImageForPageLink(ka.originalSrc);
+this.shapeBackgroundColor=L;this.shapeForegroundColor=V;this.stylesheet=ia}return ka};var F=this.clearDefaultStyle;this.clearDefaultStyle=function(){F.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var C=
+d.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(X){X=null!=X?X:"";"1"==urlParams.dev&&(X+=(0<X.length?"&":"?")+"dev=1");return C.apply(this,arguments)};var I=f.addClickHandler;f.addClickHandler=function(X,fa,ka){var ia=fa;fa=function(V,L){if(null==L){var ea=mxEvent.getSource(V);"a"==ea.nodeName.toLowerCase()&&(L=ea.getAttribute("href"))}null!=L&&f.isCustomLink(L)&&(mxEvent.isTouchEvent(V)||!mxEvent.isPopupTrigger(V))&&f.customLinkClicked(L)&&mxEvent.consume(V);null!=ia&&ia(V,L)};I.call(this,
+X,fa,ka)};D.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(f.view.canvas.ownerSVGElement,null,!0);if(null!=this.menus){var G=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(X,fa,ka){d.editor.graph.isSelectionEmpty()?G.apply(this,arguments):d.menus.addMenuItems(X,"delete - cut copy copyAsImage - duplicate".split(" "),null,ka)}}d.actions.get("print").funct=function(){d.showDialog((new PrintDialog(d)).container,360,null!=d.pages&&1<d.pages.length?
+470:390,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var Z=f.getExportVariables;f.getExportVariables=function(){var X=Z.apply(this,arguments),fa=d.getCurrentFile();null!=fa&&(X.filename=fa.getTitle());X.pagecount=null!=d.pages?d.pages.length:1;X.page=null!=d.currentPage?d.currentPage.getName():"";X.pagenumber=null!=d.pages&&null!=d.currentPage?mxUtils.indexOf(d.pages,d.currentPage)+1:1;return X};var ca=f.getGlobalVariable;f.getGlobalVariable=function(X){var fa=d.getCurrentFile();
+return"filename"==X&&null!=fa?fa.getTitle():"page"==X&&null!=d.currentPage?d.currentPage.getName():"pagenumber"==X?null!=d.currentPage&&null!=d.pages?mxUtils.indexOf(d.pages,d.currentPage)+1:1:"pagecount"==X?null!=d.pages?d.pages.length:1:ca.apply(this,arguments)};var aa=f.labelLinkClicked;f.labelLinkClicked=function(X,fa,ka){var ia=fa.getAttribute("href");if(null==ia||!f.isCustomLink(ia)||!mxEvent.isTouchEvent(ka)&&mxEvent.isPopupTrigger(ka))aa.apply(this,arguments);else{if(!f.isEnabled()||null!=
+X&&f.isCellLocked(X.cell))f.customLinkClicked(ia),f.getRubberband().reset();mxEvent.consume(ka)}};this.editor.getOrCreateFilename=function(){var X=d.defaultFilename,fa=d.getCurrentFile();null!=fa&&(X=null!=fa.getTitle()?fa.getTitle():X);return X};var Y=this.actions.get("print");Y.setEnabled(!mxClient.IS_IOS||!navigator.standalone);Y.visible=Y.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),
+this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.addListener("realtimeStateChanged",mxUtils.bind(this,function(){this.updateUserElement()}));this.spinner=this.createSpinner(null,null,
+24);Graph.fileSupport&&f.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(X){var fa=f.cellEditor.text2,ka=null;null!=fa&&(mxEvent.addListener(fa,"dragleave",function(ia){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);ia.stopPropagation();ia.preventDefault()}),mxEvent.addListener(fa,"dragover",mxUtils.bind(this,function(ia){null==ka&&(!mxClient.IS_IE||10<document.documentMode)&&(ka=this.highlightElement(fa));ia.stopPropagation();ia.preventDefault()})),mxEvent.addListener(fa,"drop",
+mxUtils.bind(this,function(ia){null!=ka&&(ka.parentNode.removeChild(ka),ka=null);if(0<ia.dataTransfer.files.length)this.importFiles(ia.dataTransfer.files,0,0,this.maxImageSize,function(L,ea,O,N,ba,la){f.insertImage(L,ba,la)},function(){},function(L){return"image/"==L.type.substring(0,6)},function(L){for(var ea=0;ea<L.length;ea++)L[ea]()},mxEvent.isControlDown(ia));else if(0<=mxUtils.indexOf(ia.dataTransfer.types,"text/uri-list")){var V=ia.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(V)?
+this.loadImage(decodeURIComponent(V),mxUtils.bind(this,function(L){var ea=Math.max(1,L.width);L=Math.max(1,L.height);var O=this.maxImageSize;O=Math.min(1,Math.min(O/Math.max(1,ea)),O/Math.max(1,L));f.insertImage(decodeURIComponent(V),ea*O,L*O)})):document.execCommand("insertHTML",!1,ia.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(ia.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,ia.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(ia.dataTransfer.types,"text/plain")&&
+document.execCommand("insertHTML",!1,ia.dataTransfer.getData("text/plain"));ia.stopPropagation();ia.preventDefault()})))}));this.isSettingsEnabled()&&(Y=this.editor.graph.view,Y.setUnit(mxSettings.getUnit()),Y.addListener("unitChanged",function(X,fa){mxSettings.setUnit(fa.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,
+Y.unit),this.refresh());if("1"==urlParams.styledev){Y=document.getElementById("geFooter");null!=Y&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left="2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),
+this.styleInput.value)})),Y.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(X,fa){0<this.editor.graph.getSelectionCount()?(X=this.editor.graph.getSelectionCell(),X=this.editor.graph.getModel().getStyle(X),this.styleInput.value=X||"",this.styleInput.style.visibility="visible"):this.styleInput.style.visibility="hidden"})));var qa=this.isSelectionAllowed;this.isSelectionAllowed=function(X){return mxEvent.getSource(X)==this.styleInput?
+!0:qa.apply(this,arguments)}}Y=document.getElementById("geInfo");null!=Y&&Y.parentNode.removeChild(Y);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var Q=null;mxEvent.addListener(f.container,"dragleave",function(X){f.isEnabled()&&(null!=Q&&(Q.parentNode.removeChild(Q),Q=null),X.stopPropagation(),X.preventDefault())});mxEvent.addListener(f.container,"dragover",mxUtils.bind(this,function(X){null==Q&&(!mxClient.IS_IE||10<document.documentMode)&&(Q=this.highlightElement(f.container));
+null!=this.sidebar&&this.sidebar.hideTooltip();X.stopPropagation();X.preventDefault()}));mxEvent.addListener(f.container,"drop",mxUtils.bind(this,function(X){null!=Q&&(Q.parentNode.removeChild(Q),Q=null);if(f.isEnabled()){var fa=mxUtils.convertPoint(f.container,mxEvent.getClientX(X),mxEvent.getClientY(X)),ka=X.dataTransfer.files,ia=f.view.translate,V=f.view.scale,L=fa.x/V-ia.x,ea=fa.y/V-ia.y;if(0<ka.length)fa=1==ka.length&&this.isBlankFile()&&!this.canUndo()&&("image/svg"===ka[0].type.substring(0,
+9)||"image/"!==ka[0].type.substring(0,6)||/(\.drawio.png)$/i.test(ka[0].name)),"1"!=urlParams.embed&&(mxEvent.isShiftDown(X)||fa)?(!mxEvent.isShiftDown(X)&&fa&&null!=this.getCurrentFile()&&this.fileLoaded(null),this.openFiles(ka,!0)):(mxEvent.isAltDown(X)&&(ea=L=null),this.importFiles(ka,L,ea,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(X),null,null,mxEvent.isShiftDown(X),X));else{mxEvent.isAltDown(X)&&(ea=L=0);var O=0<=mxUtils.indexOf(X.dataTransfer.types,"text/uri-list")?X.dataTransfer.getData("text/uri-list"):
+null;ka=this.extractGraphModelFromEvent(X,null!=this.pages);if(null!=ka)f.setSelectionCells(this.importXml(ka,L,ea,!0));else if(0<=mxUtils.indexOf(X.dataTransfer.types,"text/html")){var N=X.dataTransfer.getData("text/html");ka=document.createElement("div");ka.innerHTML=f.sanitizeHtml(N);var ba=null;fa=ka.getElementsByTagName("img");null!=fa&&1==fa.length?(N=fa[0].getAttribute("src"),null==N&&(N=fa[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(N)||(ba=!0)):(fa=ka.getElementsByTagName("a"),
+null!=fa&&1==fa.length?N=fa[0].getAttribute("href"):(ka=ka.getElementsByTagName("pre"),null!=ka&&1==ka.length&&(N=mxUtils.getTextContent(ka[0]))));var la=!0,u=mxUtils.bind(this,function(){f.setSelectionCells(this.insertTextAt(N,L,ea,!0,ba,null,la,mxEvent.isControlDown(X)))});ba&&null!=N&&N.length>this.resampleThreshold?this.confirmImageResize(function(H){la=H;u()},mxEvent.isControlDown(X)):u()}else null!=O&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(O)?this.loadImage(decodeURIComponent(O),mxUtils.bind(this,
+function(H){var P=Math.max(1,H.width);H=Math.max(1,H.height);var T=this.maxImageSize;T=Math.min(1,Math.min(T/Math.max(1,P)),T/Math.max(1,H));f.setSelectionCell(f.insertVertex(null,null,"",L,ea,P*T,H*T,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+O+";"))}),mxUtils.bind(this,function(H){f.setSelectionCells(this.insertTextAt(O,L,ea,!0))})):0<=mxUtils.indexOf(X.dataTransfer.types,"text/plain")&&f.setSelectionCells(this.insertTextAt(X.dataTransfer.getData("text/plain"),
+L,ea,!0))}}X.stopPropagation();X.preventDefault()}),!1)}f.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var d=this.editor.graph;d.container.addEventListener("paste",mxUtils.bind(this,function(f){if(!mxEvent.isConsumed(f))try{for(var g=f.clipboardData||f.originalEvent.clipboardData,m=!1,q=0;q<g.types.length;q++)if("text/"===g.types[q].substring(0,5)){m=!0;break}if(!m){var y=
+g.items;for(index in y){var F=y[index];if("file"===F.kind){if(d.isEditing())this.importFiles([F.getAsFile()],0,0,this.maxImageSize,function(I,G,Z,ca,aa,Y){d.insertImage(I,aa,Y)},function(){},function(I){return"image/"==I.type.substring(0,6)},function(I){for(var G=0;G<I.length;G++)I[G]()});else{var C=this.editor.graph.getInsertPoint();this.importFiles([F.getAsFile()],C.x,C.y,this.maxImageSize);mxEvent.consume(f)}break}}}}catch(I){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function d(){window.setTimeout(function(){g.innerHTML=
+"&nbsp;";g.focus();document.execCommand("selectAll",!1,null)},0)}var f=this.editor.graph,g=document.createElement("div");g.setAttribute("autocomplete","off");g.setAttribute("autocorrect","off");g.setAttribute("autocapitalize","off");g.setAttribute("spellcheck","false");g.style.textRendering="optimizeSpeed";g.style.fontFamily="monospace";g.style.wordBreak="break-all";g.style.background="transparent";g.style.color="transparent";g.style.position="absolute";g.style.whiteSpace="nowrap";g.style.overflow=
+"hidden";g.style.display="block";g.style.fontSize="1";g.style.zIndex="-1";g.style.resize="none";g.style.outline="none";g.style.width="1px";g.style.height="1px";mxUtils.setOpacity(g,0);g.contentEditable=!0;g.innerHTML="&nbsp;";var m=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(y){var F=mxEvent.getSource(y);null==f.container||!f.isEnabled()||f.isMouseDown||
+f.isEditing()||null!=this.dialog||"INPUT"==F.nodeName||"TEXTAREA"==F.nodeName||224!=y.keyCode&&(mxClient.IS_MAC||17!=y.keyCode)&&(!mxClient.IS_MAC||91!=y.keyCode&&93!=y.keyCode)||m||(g.style.left=f.container.scrollLeft+10+"px",g.style.top=f.container.scrollTop+10+"px",f.container.appendChild(g),m=!0,g.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(y){var F=y.keyCode;window.setTimeout(mxUtils.bind(this,function(){!m||224!=F&&17!=
+F&&91!=F&&93!=F||(m=!1,f.isEditing()||null!=this.dialog||null==f.container||f.container.focus(),g.parentNode.removeChild(g),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(g,"copy",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),this.copyCells(g),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,"cut",mxUtils.bind(this,function(y){if(f.isEnabled())try{mxClipboard.copy(f),this.copyCells(g,!0),d()}catch(F){this.handleError(F)}}));mxEvent.addListener(g,
+"paste",mxUtils.bind(this,function(y){f.isEnabled()&&!f.isCellLocked(f.getDefaultParent())&&(g.innerHTML="&nbsp;",g.focus(),null!=y.clipboardData&&this.pasteCells(y,g,!0,!0),mxEvent.isConsumed(y)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(y,g,!1,!0)}),0))}),!0);var q=this.isSelectionAllowed;this.isSelectionAllowed=function(y){return mxEvent.getSource(y)==g?!0:q.apply(this,arguments)}};EditorUi.prototype.setSketchMode=function(d){this.spinner.spin(document.body,mxResources.get("working")+
+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetSketchMode(d);null==urlParams.rough&&(mxSettings.settings.sketchMode=d,mxSettings.save());this.fireEvent(new mxEventObject("sketchModeChanged"))}),0)};EditorUi.prototype.setPagesVisible=function(d){Editor.pagesVisible!=d&&(Editor.pagesVisible=d,mxSettings.settings.pagesVisible=d,mxSettings.save(),this.fireEvent(new mxEventObject("pagesVisibleChanged")))};EditorUi.prototype.setSidebarTitles=function(d,f){this.sidebar.sidebarTitles!=
+d&&(this.sidebar.sidebarTitles=d,this.sidebar.refresh(),this.isSettingsEnabled()&&f&&(mxSettings.settings.sidebarTitles=d,mxSettings.save()),this.fireEvent(new mxEventObject("sidebarTitlesChanged")))};EditorUi.prototype.setInlineFullscreen=function(d){Editor.inlineFullscreen!=d&&(Editor.inlineFullscreen=d,this.fireEvent(new mxEventObject("inlineFullscreenChanged")),(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:this.diagramContainer.getBoundingClientRect()}),
+"*"),window.setTimeout(mxUtils.bind(this,function(){this.refresh();this.actions.get("resetView").funct()}),10))};EditorUi.prototype.doSetSketchMode=function(d){if(Editor.sketchMode!=d){var f=function(m,q,y){null==m[q]&&(m[q]=y)},g=this.editor.graph;Editor.sketchMode=d;this.menus.defaultFontSize=d?20:16;g.defaultVertexStyle=mxUtils.clone(Graph.prototype.defaultVertexStyle);f(g.defaultVertexStyle,"fontSize",this.menus.defaultFontSize);g.defaultEdgeStyle=mxUtils.clone(Graph.prototype.defaultEdgeStyle);
+f(g.defaultEdgeStyle,"fontSize",this.menus.defaultFontSize-4);f(g.defaultEdgeStyle,"edgeStyle","none");f(g.defaultEdgeStyle,"rounded","0");f(g.defaultEdgeStyle,"curved","1");f(g.defaultEdgeStyle,"jettySize","auto");f(g.defaultEdgeStyle,"orthogonalLoop","1");f(g.defaultEdgeStyle,"endArrow","open");f(g.defaultEdgeStyle,"endSize","14");f(g.defaultEdgeStyle,"startSize","14");d&&(f(g.defaultVertexStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultVertexStyle,"fontSource",Editor.sketchFontSource),f(g.defaultVertexStyle,
+"hachureGap","4"),f(g.defaultVertexStyle,"sketch","1"),f(g.defaultEdgeStyle,"fontFamily",Editor.sketchFontFamily),f(g.defaultEdgeStyle,"fontSource",Editor.sketchFontSource),f(g.defaultEdgeStyle,"sketch","1"),f(g.defaultEdgeStyle,"hachureGap","4"),f(g.defaultEdgeStyle,"sourcePerimeterSpacing","8"),f(g.defaultEdgeStyle,"targetPerimeterSpacing","8"));g.currentVertexStyle=mxUtils.clone(g.defaultVertexStyle);g.currentEdgeStyle=mxUtils.clone(g.defaultEdgeStyle);this.clearDefaultStyle()}};EditorUi.prototype.getLinkTitle=
+function(d){var f=Graph.prototype.getLinkTitle.apply(this,arguments);if(Graph.isPageLink(d)){var g=d.indexOf(",");0<g&&(f=this.getPageById(d.substring(g+1)),f=null!=f?f.getName():mxResources.get("pageNotFound"))}else"data:"==d.substring(0,5)&&(f=mxResources.get("action"));return f};EditorUi.prototype.handleCustomLink=function(d){if(Graph.isPageLink(d)){var f=d.indexOf(",");if(d=this.getPageById(d.substring(f+1)))this.selectPage(d);else throw Error(mxResources.get("pageNotFound")||"Page not found");
+}else this.editor.graph.handleCustomLink(d)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings=function(){if(this.isSettingsEnabled()){Editor.pagesVisible=mxSettings.settings.pagesVisible;ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(d){d.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=
+mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(d){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged",mxUtils.bind(this,function(d,f){"1"!=urlParams["ext-fonts"]?mxSettings.setCustomFonts(this.menus.customFonts):(d=f.getProperty("customFonts"),this.menus.customFonts=d,mxSettings.setCustomFonts(d));mxSettings.save()}));this.editor.graph.connectionHandler.setCreateTarget(mxSettings.isCreateTarget());
+this.fireEvent(new mxEventObject("copyConnectChanged"));this.addListener("copyConnectChanged",mxUtils.bind(this,function(d,f){mxSettings.setCreateTarget(this.editor.graph.connectionHandler.isCreateTarget());mxSettings.save()}));this.editor.graph.pageFormat=null!=this.editor.graph.defaultPageFormat?this.editor.graph.defaultPageFormat:mxSettings.getPageFormat();this.addListener("pageFormatChanged",mxUtils.bind(this,function(d,f){mxSettings.setPageFormat(this.editor.graph.pageFormat);mxSettings.save()}));
+this.editor.graph.view.gridColor=mxSettings.getGridColor(Editor.isDarkMode());this.editor.graph.view.defaultDarkGridColor=mxSettings.getGridColor(!0);this.editor.graph.view.defaultGridColor=mxSettings.getGridColor(!1);this.addListener("gridColorChanged",mxUtils.bind(this,function(d,f){mxSettings.setGridColor(this.editor.graph.view.gridColor,Editor.isDarkMode());mxSettings.save()}));if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(d,
+f){mxSettings.setAutosave(this.editor.autosave);mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&(null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes?(this.sidebar.searchShapes(decodeURIComponent(urlParams["search-shapes"])),this.sidebar.showEntries("search")):(this.sidebar.showPalette("search",mxSettings.settings.search),this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),
+mxSettings.save())));this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyImage=function(d,f,g){try{null!=navigator.clipboard&&this.spinner.spin(document.body,mxResources.get("exporting"))&&this.editor.exportToCanvas(mxUtils.bind(this,function(m,q){try{this.spinner.stop();var y=this.createImageDataUri(m,f,"png"),F=parseInt(q.getAttribute("width")),C=parseInt(q.getAttribute("height"));this.writeImageToClipboard(y,
+F,C,mxUtils.bind(this,function(I){this.handleError(I)}))}catch(I){this.handleError(I)}}),null,null,null,mxUtils.bind(this,function(m){this.spinner.stop();this.handleError(m)}),null,null,null!=g?g:4,null==this.editor.graph.background||this.editor.graph.background==mxConstants.NONE,null,null,null,10,null,null,!1,null,0<d.length?d:null)}catch(m){this.handleError(m)}};EditorUi.prototype.writeImageToClipboard=function(d,f,g,m){var q=this.base64ToBlob(d.substring(d.indexOf(",")+1),"image/png");d=new ClipboardItem({"image/png":q,
+"text/html":new Blob(['<img src="'+d+'" width="'+f+'" height="'+g+'">'],{type:"text/html"})});navigator.clipboard.write([d])["catch"](m)};EditorUi.prototype.copyCells=function(d,f){var g=this.editor.graph;if(g.isSelectionEmpty())d.innerText="";else{var m=mxUtils.sortCells(g.model.getTopmostCells(g.getSelectionCells())),q=mxUtils.getXml(g.encodeCells(m));mxUtils.setTextContent(d,encodeURIComponent(q));f?(g.removeCells(m,!1),g.lastPasteXml=null):(g.lastPasteXml=q,g.pasteCounter=0);d.focus();document.execCommand("selectAll",
+!1,null)}};EditorUi.prototype.copyXml=function(){var d=null;if(Editor.enableNativeCipboard){var f=this.editor.graph;f.isSelectionEmpty()||(d=mxUtils.sortCells(f.getExportableCells(f.model.getTopmostCells(f.getSelectionCells()))),f=mxUtils.getXml(f.encodeCells(d)),navigator.clipboard.writeText(f))}return d};EditorUi.prototype.pasteXml=function(d,f,g,m){var q=this.editor.graph,y=null;q.lastPasteXml==d?q.pasteCounter++:(q.lastPasteXml=d,q.pasteCounter=0);var F=q.pasteCounter*q.gridSize;if(g||this.isCompatibleString(d))y=
+this.importXml(d,F,F),q.setSelectionCells(y);else if(f&&1==q.getSelectionCount()){F=q.getStartEditingCell(q.getSelectionCell(),m);if(/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)&&"image"==q.getCurrentCellStyle(F)[mxConstants.STYLE_SHAPE])q.setCellStyles(mxConstants.STYLE_IMAGE,d,[F]);else{q.model.beginUpdate();try{q.labelChanged(F,d),Graph.isLink(d)&&q.setLinkForCell(F,d)}finally{q.model.endUpdate()}}q.setSelectionCell(F)}else y=q.getInsertPoint(),q.isMouseInsertPoint()&&(F=0,q.lastPasteXml==d&&0<q.pasteCounter&&
+q.pasteCounter--),y=this.insertTextAt(d,y.x+F,y.y+F,!0),q.setSelectionCells(y);q.isSelectionEmpty()||(q.scrollCellToVisible(q.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(q.view.getState(q.getSelectionCell())));return y};EditorUi.prototype.pasteCells=function(d,f,g,m){if(!mxEvent.isConsumed(d)){var q=f,y=!1;if(g&&null!=d.clipboardData&&d.clipboardData.getData){var F=d.clipboardData.getData("text/plain"),C=!1;if(null!=F&&0<F.length&&"%3CmxGraphModel%3E"==F.substring(0,18))try{var I=
+decodeURIComponent(F);this.isCompatibleString(I)&&(C=!0,F=I)}catch(ca){}C=C?null:d.clipboardData.getData("text/html");null!=C&&0<C.length?(q=this.parseHtmlData(C),y="text/plain"!=q.getAttribute("data-type")):null!=F&&0<F.length&&(q=document.createElement("div"),mxUtils.setTextContent(q,C))}F=q.getElementsByTagName("span");if(null!=F&&0<F.length&&"application/vnd.lucid.chart.objects"===F[0].getAttribute("data-lucid-type"))g=F[0].getAttribute("data-lucid-content"),null!=g&&0<g.length&&(this.convertLucidChart(g,
+mxUtils.bind(this,function(ca){var aa=this.editor.graph;aa.lastPasteXml==ca?aa.pasteCounter++:(aa.lastPasteXml=ca,aa.pasteCounter=0);var Y=aa.pasteCounter*aa.gridSize;aa.setSelectionCells(this.importXml(ca,Y,Y));aa.scrollCellToVisible(aa.getSelectionCell())}),mxUtils.bind(this,function(ca){this.handleError(ca)})),mxEvent.consume(d));else{y=y?q.innerHTML:mxUtils.trim(null==q.innerText?mxUtils.getTextContent(q):q.innerText);C=!1;try{var G=y.lastIndexOf("%3E");0<=G&&G<y.length-3&&(y=y.substring(0,G+
+3))}catch(ca){}try{F=q.getElementsByTagName("span"),(I=null!=F&&0<F.length?mxUtils.trim(decodeURIComponent(F[0].textContent)):decodeURIComponent(y))&&(this.isCompatibleString(I)||0==I.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))&&(C=!0,y=I)}catch(ca){}try{if(null!=y&&0<y.length){if(0==y.substring(0,20).replace(/\s/g,"").indexOf('{"isProtected":'))try{"undefined"!==typeof MiroImporter&&(y=(new MiroImporter).importMiroJson(JSON.parse(y)))}catch(ca){console.log("Miro import error:",
+ca)}this.pasteXml(y,m,C,d);try{mxEvent.consume(d)}catch(ca){}}else if(!g){var Z=this.editor.graph;Z.lastPasteXml=null;Z.pasteCounter=0}}catch(ca){this.handleError(ca)}}}f.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(d){if(Graph.fileSupport)for(var f=null,g=0;g<d.length;g++)mxEvent.addListener(d[g],"dragleave",function(m){null!=f&&(f.parentNode.removeChild(f),f=null);m.stopPropagation();m.preventDefault()}),mxEvent.addListener(d[g],"dragover",mxUtils.bind(this,function(m){(this.editor.graph.isEnabled()||
+"1"!=urlParams.embed)&&null==f&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(f=this.highlightElement());m.stopPropagation();m.preventDefault()})),mxEvent.addListener(d[g],"drop",mxUtils.bind(this,function(m){null!=f&&(f.parentNode.removeChild(f),f=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<m.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(m.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(m)&&
+!mxEvent.isShiftDown(m)):this.openFiles(m.dataTransfer.files,!0);else{var q=this.extractGraphModelFromEvent(m);if(null==q){var y=null!=m.dataTransfer?m.dataTransfer:m.clipboardData;null!=y&&(10==document.documentMode||11==document.documentMode?q=y.getData("Text"):(q=null,q=0<=mxUtils.indexOf(y.types,"text/uri-list")?m.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(y.types,"text/html")?y.getData("text/html"):null,null!=q&&0<q.length?(y=document.createElement("div"),y.innerHTML=this.editor.graph.sanitizeHtml(q),
+y=y.getElementsByTagName("img"),0<y.length&&(q=y[0].getAttribute("src"))):0<=mxUtils.indexOf(y.types,"text/plain")&&(q=y.getData("text/plain"))),null!=q&&(Editor.isPngDataUrl(q)?(q=Editor.extractGraphModelFromPng(q),null!=q&&0<q.length&&this.openLocalFile(q,null,!0)):this.isRemoteFileFormat(q)?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(q))).send(mxUtils.bind(this,function(F){200<=F.getStatus()&&
+299>=F.getStatus()&&this.openLocalFile(F.getText(),null,!0)})):/^https?:\/\//.test(q)&&(null==this.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(q):window.openWindow((mxClient.IS_CHROMEAPP?EditorUi.drawHost+"/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(q)))))}else this.openLocalFile(q,null,!0)}m.stopPropagation();m.preventDefault()}))};EditorUi.prototype.highlightElement=function(d){var f=0,g=0;if(null==d){var m=document.body;var q=document.documentElement;
+var y=(m.clientWidth||q.clientWidth)-3;m=Math.max(m.clientHeight||0,q.clientHeight)-3}else f=d.offsetTop,g=d.offsetLeft,y=d.clientWidth,m=d.clientHeight;q=document.createElement("div");q.style.zIndex=mxPopupMenu.prototype.zIndex+2;q.style.border="3px dotted rgb(254, 137, 12)";q.style.pointerEvents="none";q.style.position="absolute";q.style.top=f+"px";q.style.left=g+"px";q.style.width=Math.max(0,y-3)+"px";q.style.height=Math.max(0,m-3)+"px";null!=d&&d.parentNode==this.editor.graph.container?this.editor.graph.container.appendChild(q):
+document.body.appendChild(q);return q};EditorUi.prototype.stringToCells=function(d){d=mxUtils.parseXml(d);var f=this.editor.extractGraphModel(d.documentElement);d=[];if(null!=f){var g=new mxCodec(f.ownerDocument),m=new mxGraphModel;g.decode(f,m);f=m.getChildAt(m.getRoot(),0);for(g=0;g<m.getChildCount(f);g++)d.push(m.getChildAt(f,g))}return d};EditorUi.prototype.openFileHandle=function(d,f,g,m,q){if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":
+/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var y=mxUtils.bind(this,function(C){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==C.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,C,f))}catch(I){this.handleError(I,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(C,f,m)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||
+/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}));else if(Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.isOffline()?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))):this.parseFile(g,mxUtils.bind(this,function(C){4==C.readyState&&(this.spinner.stop(),
+200<=C.status&&299>=C.status?y(C.responseText):this.handleError({message:mxResources.get(413==C.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(C){this.spinner.stop();this.openLocalFile(C,f,m)}),mxUtils.bind(this,function(C){this.spinner.stop();this.handleError(C)}));else if("<mxlibrary"==d.substring(0,10)){this.spinner.stop();
+null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,m);try{this.loadLibrary(new LocalLibrary(this,d,g.name))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}else if(0==d.indexOf("PK"))this.importZipFile(g,mxUtils.bind(this,function(C){this.spinner.stop();y(C)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,m)}));else{if("image/png"==g.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==
+g.type){var F=Editor.extractGraphModelFromPdf(d);null!=F&&(q=null,m=!0,d=F)}this.spinner.stop();this.openLocalFile(d,f,m,q,null!=q?g:null)}}};EditorUi.prototype.openFiles=function(d,f){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var g=0;g<d.length;g++)mxUtils.bind(this,function(m){var q=new FileReader;q.onload=mxUtils.bind(this,function(y){try{this.openFileHandle(y.target.result,m.name,m,f)}catch(F){this.handleError(F)}});q.onerror=mxUtils.bind(this,function(y){this.spinner.stop();
+this.handleError(y);window.openFile=null});"image"!==m.type.substring(0,5)&&"application/pdf"!==m.type||"image/svg"===m.type.substring(0,9)?q.readAsText(m):q.readAsDataURL(m)})(d[g])};EditorUi.prototype.openLocalFile=function(d,f,g,m,q){var y=this.getCurrentFile(),F=mxUtils.bind(this,function(){window.openFile=null;if(null==f&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var C=mxUtils.parseXml(d);null!=C&&(this.editor.setGraphXml(C.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,
+d,f||this.defaultFilename,g,m,q))});if(null!=d&&0<d.length)null==y||!y.isModified()&&(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)?F():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null!=m)&&null!=y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(d,f),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=
+y&&y.isModified()?this.confirm(mxResources.get("allChangesLost"),null,F,mxResources.get("cancel"),mxResources.get("discardChanges")):F()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var d={};if(null!=this.pages)for(var f=0;f<this.pages.length;f++)this.updatePageRoot(this.pages[f]),this.addBasenamesForCell(this.pages[f].root,d);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),d);f=[];for(var g in d)f.push(g);return f};EditorUi.prototype.addBasenamesForCell=
+function(d,f){function g(F){if(null!=F){var C=F.lastIndexOf(".");0<C&&(F=F.substring(C+1,F.length));null==f[F]&&(f[F]=!0)}}var m=this.editor.graph,q=m.getCellStyle(d);g(mxStencilRegistry.getBasenameForStencil(q[mxConstants.STYLE_SHAPE]));m.model.isEdge(d)&&(g(mxMarker.getPackageForType(q[mxConstants.STYLE_STARTARROW])),g(mxMarker.getPackageForType(q[mxConstants.STYLE_ENDARROW])));q=m.model.getChildCount(d);for(var y=0;y<q;y++)this.addBasenamesForCell(m.model.getChildAt(d,y),f)};EditorUi.prototype.setGraphEnabled=
+function(d){this.diagramContainer.style.visibility=d?"":"hidden";this.formatContainer.style.visibility=d?"":"hidden";this.sidebarFooterContainer.style.display=d?"":"none";this.sidebarContainer.style.display=d?"":"none";this.hsplit.style.display=d?"":"none";this.editor.graph.setEnabled(d);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=d?"":"hidden",this.ruler.vRuler.container.style.visibility=d?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=d?"":"hidden");
+d||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=
+window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var d=!1;this.installMessageHandler(mxUtils.bind(this,function(f,g,m,q){d||(d=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));if(null==f||0==f.length)f=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,f,{}));this.mode=App.MODE_EMBED;this.setFileData(f);if(q)try{var y=this.editor.graph;y.setGridEnabled(!1);y.pageVisible=!1;var F=y.model.cells,C;for(C in F){var I=F[C];null!=
+I&&null!=I.style&&(I.style+=";sketch=1;"+(-1==I.style.indexOf("fontFamily=")||-1<I.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":""))}}catch(G){console.log(G)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();this.editor.modified=null!=m?m:!1;this.updateUi();
+window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(d,f){null!=d?d.getPublicUrl(f):f(null)};EditorUi.prototype.createLoadMessage=function(d){var f=this.editor.graph;return{event:d,
+pageVisible:f.pageVisible,translate:f.view.translate,bounds:f.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:f.view.scale,page:f.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(d){var f=this.editor.graph;f.isEditing()&&f.stopEditing(!f.isInvokesStopCellEditing());var g=window.opener||window.parent;if(this.editor.modified){var m=f.background;if(null==m||m==mxConstants.NONE)m=this.embedExportBackground;this.getEmbeddedSvg(this.getFileData(!0,null,null,
+null,null,null,null,null,null,!1),f,null,!0,mxUtils.bind(this,function(q){g.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=d?!d:!0,data:Editor.createSvgDataUri(q)}),"*")}),null,null,!0,m,1,this.embedExportBorder)}else d||g.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");d||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,f.model.clear(),this.editor.undoManager.clear(),this.setBackgroundImage(null),this.editor.modified=
+!1,"1"!=urlParams.embed&&this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(d){var f=null,g=!1,m=!1,q=null,y=mxUtils.bind(this,function(I,G){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,y);mxEvent.addListener(window,"message",mxUtils.bind(this,function(I){if(I.source==
+(window.opener||window.parent)){var G=I.data,Z=null,ca=mxUtils.bind(this,function(R){if(null!=R&&"function"===typeof R.charAt&&"<"!=R.charAt(0))try{Editor.isPngDataUrl(R)?R=Editor.extractGraphModelFromPng(R):"data:image/svg+xml;base64,"==R.substring(0,26)?R=atob(R.substring(26)):"data:image/svg+xml;utf8,"==R.substring(0,24)&&(R=R.substring(24)),null!=R&&("%"==R.charAt(0)?R=decodeURIComponent(R):"<"!=R.charAt(0)&&(R=Graph.decompress(R)))}catch(ma){}return R});if("json"==urlParams.proto){var aa=!1;
+try{G=JSON.parse(G),EditorUi.debug("EditorUi.installMessageHandler",[this],"evt",[I],"data",[G])}catch(R){G=null}try{if(null==G)return;if("dialog"==G.action){this.showError(null!=G.titleKey?mxResources.get(G.titleKey):G.title,null!=G.messageKey?mxResources.get(G.messageKey):G.message,null!=G.buttonKey?mxResources.get(G.buttonKey):G.button);null!=G.modified&&(this.editor.modified=G.modified);return}if("layout"==G.action){this.executeLayouts(this.editor.graph.createLayouts(G.layouts));return}if("prompt"==
+G.action){this.spinner.stop();var Y=new FilenameDialog(this,G.defaultValue||"",null!=G.okKey?mxResources.get(G.okKey):G.ok,function(R){null!=R?F.postMessage(JSON.stringify({event:"prompt",value:R,message:G}),"*"):F.postMessage(JSON.stringify({event:"prompt-cancel",message:G}),"*")},null!=G.titleKey?mxResources.get(G.titleKey):G.title);this.showDialog(Y.container,300,80,!0,!1);Y.init();return}if("draft"==G.action){var qa=ca(G.xml);this.spinner.stop();Y=new DraftDialog(this,mxResources.get("draftFound",
+[G.name||this.defaultFilename]),qa,mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"edit",message:G}),"*")}),mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"discard",message:G}),"*")}),G.editKey?mxResources.get(G.editKey):null,G.discardKey?mxResources.get(G.discardKey):null,G.ignore?mxUtils.bind(this,function(){this.hideDialog();F.postMessage(JSON.stringify({event:"draft",result:"ignore",message:G}),
+"*")}):null);this.showDialog(Y.container,640,480,!0,!1,mxUtils.bind(this,function(R){R&&this.actions.get("exit").funct()}));try{Y.init()}catch(R){F.postMessage(JSON.stringify({event:"draft",error:R.toString(),message:G}),"*")}return}if("template"==G.action){this.spinner.stop();var Q=1==G.enableRecent,X=1==G.enableSearch,fa=1==G.enableCustomTemp;if("1"==urlParams.newTempDlg&&!G.templatesOnly&&null!=G.callback){var ka=this.getCurrentUser(),ia=new TemplatesDialog(this,function(R,ma,ra){R=R||this.emptyDiagramXml;
+F.postMessage(JSON.stringify({event:"template",xml:R,blank:R==this.emptyDiagramXml,name:ma,tempUrl:ra.url,libs:ra.libs,builtIn:null!=ra.info&&null!=ra.info.custContentId,message:G}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=ka?ka.id:null,Q?mxUtils.bind(this,function(R,ma,ra){this.remoteInvoke("getRecentDiagrams",[ra],null,R,ma)}):null,X?mxUtils.bind(this,function(R,ma,ra,xa){this.remoteInvoke("searchDiagrams",[R,xa],null,ma,ra)}):null,mxUtils.bind(this,
+function(R,ma,ra){this.remoteInvoke("getFileContent",[R.url],null,ma,ra)}),null,fa?mxUtils.bind(this,function(R){this.remoteInvoke("getCustomTemplates",null,null,R,function(){R({},0)})}):null,!1,!1,!0,!0);this.showDialog(ia.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}Y=new NewDialog(this,!1,G.templatesOnly?!1:null!=G.callback,mxUtils.bind(this,function(R,ma,ra,xa){R=R||this.emptyDiagramXml;null!=G.callback?F.postMessage(JSON.stringify({event:"template",xml:R,blank:R==this.emptyDiagramXml,
+name:ma,tempUrl:ra,libs:xa,builtIn:!0,message:G}),"*"):(d(R,I,R!=this.emptyDiagramXml,G.toSketch),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,Q?mxUtils.bind(this,function(R){this.remoteInvoke("getRecentDiagrams",[null],null,R,function(){R(null,"Network Error!")})}):null,X?mxUtils.bind(this,function(R,ma){this.remoteInvoke("searchDiagrams",[R,null],null,ma,function(){ma(null,"Network Error!")})}):null,mxUtils.bind(this,function(R,ma,ra){F.postMessage(JSON.stringify({event:"template",
+docUrl:R,info:ma,name:ra}),"*")}),null,null,fa?mxUtils.bind(this,function(R){this.remoteInvoke("getCustomTemplates",null,null,R,function(){R({},0)})}):null,1==G.withoutType);this.showDialog(Y.container,620,460,!0,!1,mxUtils.bind(this,function(R){this.sidebar.hideTooltip();R&&this.actions.get("exit").funct()}));Y.init();return}if("textContent"==G.action){var V=this.getDiagramTextContent();F.postMessage(JSON.stringify({event:"textContent",data:V,message:G}),"*");return}if("status"==G.action){null!=
+G.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(G.messageKey))):null!=G.message&&this.editor.setStatus(mxUtils.htmlEntities(G.message));null!=G.modified&&(this.editor.modified=G.modified);return}if("spinner"==G.action){var L=null!=G.messageKey?mxResources.get(G.messageKey):G.message;null==G.show||G.show?this.spinner.spin(document.body,L):this.spinner.stop();return}if("exit"==G.action){this.actions.get("exit").funct();return}if("viewport"==G.action){null!=G.viewport&&(this.embedViewport=
+G.viewport);return}if("snapshot"==G.action){this.sendEmbeddedSvgExport(!0);return}if("export"==G.action){if("png"==G.format||"xmlpng"==G.format){if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin)){var ea=null!=G.xml?G.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var O=this.editor.graph,N=mxUtils.bind(this,function(R){this.editor.graph.setEnabled(!0);this.spinner.stop();var ma=this.createLoadMessage("export");ma.format=
+G.format;ma.message=G;ma.data=R;ma.xml=ea;F.postMessage(JSON.stringify(ma),"*")}),ba=mxUtils.bind(this,function(R){null==R&&(R=Editor.blankImage);"xmlpng"==G.format&&(R=Editor.writeGraphModelToPng(R,"tEXt","mxfile",encodeURIComponent(ea)));O!=this.editor.graph&&O.container.parentNode.removeChild(O.container);N(R)}),la=G.pageId||(null!=this.pages?G.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var u=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=
+la){var R=O.getGlobalVariable;O=this.createTemporaryGraph(O.getStylesheet());for(var ma,ra=0;ra<this.pages.length;ra++)if(this.pages[ra].getId()==la){ma=this.updatePageRoot(this.pages[ra]);break}null==ma&&(ma=this.currentPage);O.getGlobalVariable=function(Ca){return"page"==Ca?ma.getName():"pagenumber"==Ca?1:R.apply(this,arguments)};document.body.appendChild(O.container);O.model.setRoot(ma.root)}if(null!=G.layerIds){var xa=O.model,ta=xa.getChildCells(xa.getRoot()),Aa={};for(ra=0;ra<G.layerIds.length;ra++)Aa[G.layerIds[ra]]=
+!0;for(ra=0;ra<ta.length;ra++)xa.setVisible(ta[ra],Aa[ta[ra].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(Ca){ba(Ca.toDataURL("image/png"))}),G.width,null,G.background,mxUtils.bind(this,function(){ba(null)}),null,null,G.scale,G.transparent,G.shadow,null,O,G.border,null,G.grid,G.keepTheme)});null!=G.xml&&0<G.xml.length&&(g=!0,this.setFileData(ea),g=!1);u()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==G.format?"1":"0")+(null!=la?"&pageId="+la:"")+(null!=G.layerIds&&
+0<G.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:G.layerIds})):"")+(null!=G.scale?"&scale="+G.scale:"")+"&base64=1&xml="+encodeURIComponent(ea))).send(mxUtils.bind(this,function(R){200<=R.getStatus()&&299>=R.getStatus()?N("data:image/png;base64,"+R.getText()):ba(null)}),mxUtils.bind(this,function(){ba(null)}))}}else u=mxUtils.bind(this,function(){var R=this.createLoadMessage("export");R.message=G;if("html2"==G.format||"html"==G.format&&("0"!=urlParams.pages||null!=this.pages&&
+1<this.pages.length)){var ma=this.getXmlFileData();R.xml=mxUtils.getXml(ma);R.data=this.getFileData(null,null,!0,null,null,null,ma);R.format=G.format}else if("html"==G.format)ma=this.editor.getGraphXml(),R.data=this.getHtml(ma,this.editor.graph),R.xml=mxUtils.getXml(ma),R.format=G.format;else{mxSvgCanvas2D.prototype.foAltText=null;ma=null!=G.background?G.background:this.editor.graph.background;ma==mxConstants.NONE&&(ma=null);R.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);R.format=
+"svg";var ra=mxUtils.bind(this,function(xa){this.editor.graph.setEnabled(!0);this.spinner.stop();R.data=Editor.createSvgDataUri(xa);F.postMessage(JSON.stringify(R),"*")});if("xmlsvg"==G.format)(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,null!=G.spinKey?mxResources.get(G.spinKey):G.spin))&&this.getEmbeddedSvg(R.xml,this.editor.graph,null,!0,ra,null,null,G.embedImages,ma,G.scale,G.border,G.shadow,G.keepTheme);else if(null==G.spin&&null==G.spinKey||this.spinner.spin(document.body,
+null!=G.spinKey?mxResources.get(G.spinKey):G.spin))this.editor.graph.setEnabled(!1),ma=this.editor.graph.getSvg(ma,G.scale,G.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||G.shadow,null,G.keepTheme),(this.editor.graph.shadowVisible||G.shadow)&&this.editor.graph.addSvgShadow(ma),this.embedFonts(ma,mxUtils.bind(this,function(xa){G.embedImages||null==G.embedImages?this.editor.convertImages(xa,mxUtils.bind(this,function(ta){ra(mxUtils.getXml(ta))})):ra(mxUtils.getXml(xa))}));return}F.postMessage(JSON.stringify(R),
+"*")}),null!=G.xml&&0<G.xml.length?(g=!0,this.setFileData(G.xml),g=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(u)},0):u()):u();return}if("load"==G.action){aa=G.toSketch;m=1==G.autosave;this.hideDialog();null!=G.modified&&null==urlParams.modified&&(urlParams.modified=G.modified);null!=G.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=G.saveAndExit);null!=G.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=G.noSaveBtn);if(null!=G.rough){var H=
+Editor.sketchMode;this.doSetSketchMode(G.rough);H!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=G.dark&&(H=Editor.darkMode,this.doSetDarkMode(G.dark),H!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=G.border&&(this.embedExportBorder=G.border);null!=G.background&&(this.embedExportBackground=G.background);null!=G.viewport&&(this.embedViewport=G.viewport);this.embedExitPoint=null;if(null!=G.rect){var P=this.embedExportBorder;this.diagramContainer.style.border=
+"2px solid #295fcc";this.diagramContainer.style.top=G.rect.top+"px";this.diagramContainer.style.left=G.rect.left+"px";this.diagramContainer.style.height=G.rect.height+"px";this.diagramContainer.style.width=G.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";Z=mxUtils.bind(this,function(){var R=this.editor.graph,ma=R.maxFitScale;R.maxFitScale=G.maxFitScale;R.fit(2*P);R.maxFitScale=ma;R.container.scrollTop-=2*P;R.container.scrollLeft-=2*P;this.fireEvent(new mxEventObject("editInlineStart",
+"data",[G]))})}null!=G.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=G.noExitBtn);null!=G.title&&null!=this.buttonContainer&&(qa=document.createElement("span"),mxUtils.write(qa,G.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(qa),this.embedFilenameSpan=qa);try{G.libs&&this.sidebar.showEntries(G.libs)}catch(R){}G=null!=G.xmlpng?this.extractGraphModelFromPng(G.xmlpng):null!=G.descriptor?G.descriptor:
+G.xml}else{if("merge"==G.action){var T=this.getCurrentFile();null!=T&&(qa=ca(G.xml),null!=qa&&""!=qa&&T.mergeFile(new LocalFile(this,qa),function(){F.postMessage(JSON.stringify({event:"merge",message:G}),"*")},function(R){F.postMessage(JSON.stringify({event:"merge",message:G,error:R}),"*")}))}else"remoteInvokeReady"==G.action?this.handleRemoteInvokeReady(F):"remoteInvoke"==G.action?this.handleRemoteInvoke(G,I.origin):"remoteInvokeResponse"==G.action?this.handleRemoteInvokeResponse(G):F.postMessage(JSON.stringify({error:"unknownMessage",
+data:JSON.stringify(G)}),"*");return}}catch(R){this.handleError(R)}}var S=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),da=mxUtils.bind(this,function(R,ma){g=!0;try{d(R,ma,null,aa)}catch(ra){this.handleError(ra)}g=!1;null!=urlParams.modified&&this.editor.setStatus("");q=S();m&&null==f&&(f=mxUtils.bind(this,function(ra,xa){ra=S();ra==q||g||(xa=this.createLoadMessage("autosave"),xa.xml=
+ra,(window.opener||window.parent).postMessage(JSON.stringify(xa),"*"));q=ra}),this.editor.graph.model.addListener(mxEvent.CHANGE,f),this.editor.graph.addListener("gridSizeChanged",f),this.editor.graph.addListener("shadowVisibleChanged",f),this.addListener("pageFormatChanged",f),this.addListener("pageScaleChanged",f),this.addListener("backgroundColorChanged",f),this.addListener("backgroundImageChanged",f),this.addListener("foldingEnabledChanged",f),this.addListener("mathEnabledChanged",f),this.addListener("gridEnabledChanged",
+f),this.addListener("guidesEnabledChanged",f),this.addListener("pageViewChanged",f));if("1"==urlParams.returnbounds||"json"==urlParams.proto)ma=this.createLoadMessage("load"),ma.xml=R,F.postMessage(JSON.stringify(ma),"*");null!=Z&&Z()});null!=G&&"function"===typeof G.substring&&"data:application/vnd.visio;base64,"==G.substring(0,34)?(ca="0M8R4KGxGuE"==G.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(G.substring(G.indexOf(",")+1)),function(R){da(R,I)},mxUtils.bind(this,function(R){this.handleError(R)}),
+ca)):null!=G&&"function"===typeof G.substring&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(G,"")?this.isOffline()?this.showError(mxResources.get("error"),mxResources.get("notInOffline")):this.parseFileData(G,mxUtils.bind(this,function(R){4==R.readyState&&200<=R.status&&299>=R.status&&"<mxGraphModel"==R.responseText.substring(0,13)&&da(R.responseText,I)}),""):null!=G&&"function"===typeof G.substring&&this.isLucidChartData(G)?this.convertLucidChart(G,mxUtils.bind(this,function(R){da(R)}),mxUtils.bind(this,
+function(R){this.handleError(R)})):null==G||"object"!==typeof G||null==G.format||null==G.data&&null==G.url?(G=ca(G),da(G,I)):this.loadDescriptor(G,mxUtils.bind(this,function(R){da(S(),I)}),mxUtils.bind(this,function(R){this.handleError(R,mxResources.get("errorLoadingFile"))}))}}));var F=window.opener||window.parent;y="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";F.postMessage(y,"*");if("json"==urlParams.proto){var C=this.editor.graph.openLink;this.editor.graph.openLink=
+function(I,G,Z){C.apply(this,arguments);F.postMessage(JSON.stringify({event:"openLink",href:I,target:G,allowOpener:Z}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var d=document.createElement("div");d.style.display="inline-block";d.style.position="absolute";d.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";d.style.paddingLeft="8px";d.style.paddingBottom="2px";var f=document.createElement("button");f.className="geBigButton";
+var g=f;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var m="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(f,m);f.setAttribute("title",m);mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));d.appendChild(f)}}else mxUtils.write(f,mxResources.get("save")),f.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),
+d.appendChild(f),"1"==urlParams.saveAndExit&&(f=document.createElement("a"),mxUtils.write(f,mxResources.get("saveAndExit")),f.setAttribute("title",mxResources.get("saveAndExit")),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),d.appendChild(f),g=f);"1"!=urlParams.noExitBtn&&(f=document.createElement("a"),g="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),
+mxUtils.write(f,g),f.setAttribute("title",g),f.className="geBigButton geBigStandardButton",f.style.marginLeft="6px",mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),d.appendChild(f),g=f);g.style.marginRight="20px";this.toolbar.container.appendChild(d);this.toolbar.staticElements.push(d);d.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=
+new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(d){this.importCsv(d)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.loadOrgChartLayouts=function(d){var f=mxUtils.bind(this,function(){this.loadingOrgChart=!1;this.spinner.stop();d()});
+"undefined"!==typeof mxOrgChartLayout||this.loadingOrgChart||this.isOffline(!0)?f():this.spinner.spin(document.body,mxResources.get("loading"))&&(this.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})}):mxscript("js/extensions.min.js",f))};EditorUi.prototype.importCsv=function(d,f){this.loadOrgChartLayouts(mxUtils.bind(this,
+function(){this.doImportCsv(d,f)}))};EditorUi.prototype.doImportCsv=function(d,f){try{var g=d.split("\n"),m=[],q=[],y=[],F={};if(0<g.length){var C={},I=this.editor.graph,G=null,Z=null,ca=null,aa=null,Y=null,qa=null,Q=null,X="whiteSpace=wrap;html=1;",fa=null,ka=null,ia="",V="auto",L="auto",ea=!1,O=null,N=null,ba=40,la=40,u=100,H=0,P=function(){null!=f?f(ua):(I.setSelectionCells(ua),I.scrollCellToVisible(I.getSelectionCell()))},T=I.getFreeInsertPoint(),S=T.x,da=T.y;T=da;var R=null,ma="auto";ka=null;
+for(var ra=[],xa=null,ta=null,Aa=0;Aa<g.length&&"#"==g[Aa].charAt(0);){d=g[Aa].replace(/\r$/,"");for(Aa++;Aa<g.length&&"\\"==d.charAt(d.length-1)&&"#"==g[Aa].charAt(0);)d=d.substring(0,d.length-1)+mxUtils.trim(g[Aa].substring(1)),Aa++;if("#"!=d.charAt(1)){var Ca=d.indexOf(":");if(0<Ca){var Ba=mxUtils.trim(d.substring(1,Ca)),sa=mxUtils.trim(d.substring(Ca+1));"label"==Ba?R=I.sanitizeHtml(sa):"labelname"==Ba&&0<sa.length&&"-"!=sa?Y=sa:"labels"==Ba&&0<sa.length&&"-"!=sa?Q=JSON.parse(sa):"style"==Ba?
+Z=sa:"parentstyle"==Ba?X=sa:"unknownStyle"==Ba&&"-"!=sa?qa=sa:"stylename"==Ba&&0<sa.length&&"-"!=sa?aa=sa:"styles"==Ba&&0<sa.length&&"-"!=sa?ca=JSON.parse(sa):"vars"==Ba&&0<sa.length&&"-"!=sa?G=JSON.parse(sa):"identity"==Ba&&0<sa.length&&"-"!=sa?fa=sa:"parent"==Ba&&0<sa.length&&"-"!=sa?ka=sa:"namespace"==Ba&&0<sa.length&&"-"!=sa?ia=sa:"width"==Ba?V=sa:"height"==Ba?L=sa:"collapsed"==Ba&&"-"!=sa?ea="true"==sa:"left"==Ba&&0<sa.length?O=sa:"top"==Ba&&0<sa.length?N=sa:"ignore"==Ba?ta=sa.split(","):"connect"==
+Ba?ra.push(JSON.parse(sa)):"link"==Ba?xa=sa:"padding"==Ba?H=parseFloat(sa):"edgespacing"==Ba?ba=parseFloat(sa):"nodespacing"==Ba?la=parseFloat(sa):"levelspacing"==Ba?u=parseFloat(sa):"layout"==Ba&&(ma=sa)}}}if(null==g[Aa])throw Error(mxResources.get("invalidOrMissingFile"));var Pa=this.editor.csvToArray(g[Aa].replace(/\r$/,""));Ca=d=null;Ba=[];for(sa=0;sa<Pa.length;sa++)fa==Pa[sa]&&(d=sa),ka==Pa[sa]&&(Ca=sa),Ba.push(mxUtils.trim(Pa[sa]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,
+""));null==R&&(R="%"+Ba[0]+"%");if(null!=ra)for(var Ta=0;Ta<ra.length;Ta++)null==C[ra[Ta].to]&&(C[ra[Ta].to]={});fa=[];for(sa=Aa+1;sa<g.length;sa++){var Oa=this.editor.csvToArray(g[sa].replace(/\r$/,""));if(null==Oa){var Xa=40<g[sa].length?g[sa].substring(0,40)+"...":g[sa];throw Error(Xa+" ("+sa+"):\n"+mxResources.get("containsValidationErrors"));}0<Oa.length&&fa.push(Oa)}I.model.beginUpdate();try{for(sa=0;sa<fa.length;sa++){Oa=fa[sa];var Ga=null,eb=null!=d?ia+Oa[d]:null;g=!1;null!=eb&&(Ga=I.model.getCell(eb),
+g=null==Ga||0<=mxUtils.indexOf(m,Ga));var bb=new mxCell(R,new mxGeometry(S,T,0,0),Z||"whiteSpace=wrap;html=1;");bb.collapsed=ea;bb.vertex=!0;bb.id=eb;null==Ga||g||I.model.setCollapsed(Ga,ea);for(var z=0;z<Oa.length;z++)I.setAttributeForCell(bb,Ba[z],Oa[z]),null==Ga||g||I.setAttributeForCell(Ga,Ba[z],Oa[z]);if(null!=Y&&null!=Q){var K=Q[bb.getAttribute(Y)];null!=K&&(I.labelChanged(bb,K),null==Ga||g||I.cellLabelChanged(Ga,K))}if(null!=aa&&null!=ca){var M=ca[bb.getAttribute(aa)];null!=M&&(bb.style=M)}I.setAttributeForCell(bb,
+"placeholders","1");bb.style=I.replacePlaceholders(bb,bb.style,G);null==Ga||g?I.fireEvent(new mxEventObject("cellsInserted","cells",[bb])):(I.model.setStyle(Ga,bb.style),0>mxUtils.indexOf(y,Ga)&&y.push(Ga),I.fireEvent(new mxEventObject("cellsInserted","cells",[Ga])));g=null!=Ga;Ga=bb;if(!g)for(Ta=0;Ta<ra.length;Ta++)C[ra[Ta].to][Ga.getAttribute(ra[Ta].to)]=Ga;null!=xa&&"link"!=xa&&(I.setLinkForCell(Ga,Ga.getAttribute(xa)),I.setAttributeForCell(Ga,xa,null));var U=this.editor.graph.getPreferredSizeForCell(Ga);
+ka=null!=Ca?I.model.getCell(ia+Oa[Ca]):null;if(Ga.vertex){Xa=null!=ka?0:S;Aa=null!=ka?0:da;null!=O&&null!=Ga.getAttribute(O)&&(Ga.geometry.x=Xa+parseFloat(Ga.getAttribute(O)));null!=N&&null!=Ga.getAttribute(N)&&(Ga.geometry.y=Aa+parseFloat(Ga.getAttribute(N)));var W="@"==V.charAt(0)?Ga.getAttribute(V.substring(1)):null;Ga.geometry.width=null!=W&&"auto"!=W?parseFloat(Ga.getAttribute(V.substring(1))):"auto"==V||"auto"==W?U.width+H:parseFloat(V);var ha="@"==L.charAt(0)?Ga.getAttribute(L.substring(1)):
+null;Ga.geometry.height=null!=ha&&"auto"!=ha?parseFloat(ha):"auto"==L||"auto"==ha?U.height+H:parseFloat(L);T+=Ga.geometry.height+la}g?(null==F[eb]&&(F[eb]=[]),F[eb].push(Ga)):(m.push(Ga),null!=ka?(ka.style=I.replacePlaceholders(ka,X,G),I.addCell(Ga,ka),q.push(ka)):y.push(I.addCell(Ga)))}for(sa=0;sa<q.length;sa++)W="@"==V.charAt(0)?q[sa].getAttribute(V.substring(1)):null,ha="@"==L.charAt(0)?q[sa].getAttribute(L.substring(1)):null,"auto"!=V&&"auto"!=W||"auto"!=L&&"auto"!=ha||I.updateGroupBounds([q[sa]],
+H,!0);var na=y.slice(),ua=y.slice();for(Ta=0;Ta<ra.length;Ta++){var pa=ra[Ta];for(sa=0;sa<m.length;sa++){Ga=m[sa];var za=mxUtils.bind(this,function(Za,cb,fb){var qb=cb.getAttribute(fb.from);if(null!=qb&&""!=qb){qb=qb.split(",");for(var ub=0;ub<qb.length;ub++){var ab=C[fb.to][qb[ub]];if(null==ab&&null!=qa){ab=new mxCell(qb[ub],new mxGeometry(S,da,0,0),qa);ab.style=I.replacePlaceholders(cb,ab.style,G);var db=this.editor.graph.getPreferredSizeForCell(ab);ab.geometry.width=db.width+H;ab.geometry.height=
+db.height+H;C[fb.to][qb[ub]]=ab;ab.vertex=!0;ab.id=qb[ub];y.push(I.addCell(ab))}if(null!=ab){db=fb.label;null!=fb.fromlabel&&(db=(cb.getAttribute(fb.fromlabel)||"")+(db||""));null!=fb.sourcelabel&&(db=I.replacePlaceholders(cb,fb.sourcelabel,G)+(db||""));null!=fb.tolabel&&(db=(db||"")+(ab.getAttribute(fb.tolabel)||""));null!=fb.targetlabel&&(db=(db||"")+I.replacePlaceholders(ab,fb.targetlabel,G));var kb="target"==fb.placeholders==!fb.invert?ab:Za;kb=null!=fb.style?I.replacePlaceholders(kb,fb.style,
+G):I.createCurrentEdgeStyle();db=I.insertEdge(null,null,db||"",fb.invert?ab:Za,fb.invert?Za:ab,kb);if(null!=fb.labels)for(kb=0;kb<fb.labels.length;kb++){var ib=fb.labels[kb],ob=new mxCell(ib.label||kb,new mxGeometry(null!=ib.x?ib.x:0,null!=ib.y?ib.y:0,0,0),"resizable=0;html=1;");ob.vertex=!0;ob.connectable=!1;ob.geometry.relative=!0;null!=ib.placeholders&&(ob.value=I.replacePlaceholders("target"==ib.placeholders==!fb.invert?ab:Za,ob.value,G));if(null!=ib.dx||null!=ib.dy)ob.geometry.offset=new mxPoint(null!=
+ib.dx?ib.dx:0,null!=ib.dy?ib.dy:0);db.insert(ob)}ua.push(db);mxUtils.remove(fb.invert?Za:ab,na)}}}});za(Ga,Ga,pa);if(null!=F[Ga.id])for(z=0;z<F[Ga.id].length;z++)za(Ga,F[Ga.id][z],pa)}}if(null!=ta)for(sa=0;sa<m.length;sa++)for(Ga=m[sa],z=0;z<ta.length;z++)I.setAttributeForCell(Ga,mxUtils.trim(ta[z]),null);if(0<y.length){var Da=new mxParallelEdgeLayout(I);Da.spacing=ba;Da.checkOverlap=!0;var Ma=function(){0<Da.spacing&&Da.execute(I.getDefaultParent());for(var Za=0;Za<y.length;Za++){var cb=I.getCellGeometry(y[Za]);
+cb.x=Math.round(I.snap(cb.x));cb.y=Math.round(I.snap(cb.y));"auto"==V&&(cb.width=Math.round(I.snap(cb.width)));"auto"==L&&(cb.height=Math.round(I.snap(cb.height)))}};if("["==ma.charAt(0)){var La=P;I.view.validate();this.executeLayouts(I.createLayouts(JSON.parse(ma)),function(){Ma();La()});P=null}else if("circle"==ma){var Ua=new mxCircleLayout(I);Ua.disableEdgeStyle=!1;Ua.resetEdges=!1;var Sa=Ua.isVertexIgnored;Ua.isVertexIgnored=function(Za){return Sa.apply(this,arguments)||0>mxUtils.indexOf(y,Za)};
+this.executeLayout(function(){Ua.execute(I.getDefaultParent());Ma()},!0,P);P=null}else if("horizontaltree"==ma||"verticaltree"==ma||"auto"==ma&&ua.length==2*y.length-1&&1==na.length){I.view.validate();var Fa=new mxCompactTreeLayout(I,"horizontaltree"==ma);Fa.levelDistance=la;Fa.edgeRouting=!1;Fa.resetEdges=!1;this.executeLayout(function(){Fa.execute(I.getDefaultParent(),0<na.length?na[0]:null)},!0,P);P=null}else if("horizontalflow"==ma||"verticalflow"==ma||"auto"==ma&&1==na.length){I.view.validate();
+var va=new mxHierarchicalLayout(I,"horizontalflow"==ma?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);va.intraCellSpacing=la;va.parallelEdgeSpacing=ba;va.interRankCellSpacing=u;va.disableEdgeStyle=!1;this.executeLayout(function(){va.execute(I.getDefaultParent(),ua);I.moveCells(ua,S,da)},!0,P);P=null}else if("orgchart"==ma){I.view.validate();var ya=new mxOrgChartLayout(I,2,u,la),Na=ya.isVertexIgnored;ya.isVertexIgnored=function(Za){return Na.apply(this,arguments)||0>mxUtils.indexOf(y,Za)};
+this.executeLayout(function(){ya.execute(I.getDefaultParent());Ma()},!0,P);P=null}else if("organic"==ma||"auto"==ma&&ua.length>y.length){I.view.validate();var Ja=new mxFastOrganicLayout(I);Ja.forceConstant=3*la;Ja.disableEdgeStyle=!1;Ja.resetEdges=!1;var Qa=Ja.isVertexIgnored;Ja.isVertexIgnored=function(Za){return Qa.apply(this,arguments)||0>mxUtils.indexOf(y,Za)};this.executeLayout(function(){Ja.execute(I.getDefaultParent());Ma()},!0,P);P=null}}this.hideDialog()}finally{I.model.endUpdate()}null!=
+P&&P()}}catch(Za){this.handleError(Za)}};EditorUi.prototype.getSearch=function(d){var f="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=d&&0<window.location.search.length){var g="?",m;for(m in urlParams)0>mxUtils.indexOf(d,m)&&null!=urlParams[m]&&(f+=g+m+"="+urlParams[m],g="&")}else f=window.location.search;return f};EditorUi.prototype.getUrl=function(d){d=null!=d?d:window.location.pathname;var f=0<d.indexOf("?")?1:0;if("1"==urlParams.offline)d+=window.location.search;else{var g="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),
+m;for(m in urlParams)0>mxUtils.indexOf(g,m)&&(d=0==f?d+"?":d+"&",null!=urlParams[m]&&(d+=m+"="+urlParams[m],f++))}return d};EditorUi.prototype.showLinkDialog=function(d,f,g,m,q){d=new LinkDialog(this,d,f,g,!0,m,q);this.showDialog(d.container,560,130,!0,!0);d.init()};EditorUi.prototype.getServiceCount=function(d){var f=1;null==this.drive&&"function"!==typeof window.DriveClient||f++;null==this.dropbox&&"function"!==typeof window.DropboxClient||f++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||
+f++;null!=this.gitHub&&f++;null!=this.gitLab&&f++;d&&isLocalStorage&&"1"==urlParams.browser&&f++;return f};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var d=this.getCurrentFile(),f=null!=d||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(f);this.menus.get("viewZoom").setEnabled(f);var g=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==d||d.isRestricted());this.actions.get("makeCopy").setEnabled(!g);
+this.actions.get("print").setEnabled(!g);this.menus.get("exportAs").setEnabled(!g);this.menus.get("embed").setEnabled(!g);g="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(g);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(g),this.menus.get("newLibrary").setEnabled(g));d="1"==urlParams.embed&&this.editor.graph.isEnabled()||null!=d&&d.isEditable();this.actions.get("image").setEnabled(f);this.actions.get("zoomIn").setEnabled(f);this.actions.get("zoomOut").setEnabled(f);
+this.actions.get("resetView").setEnabled(f);this.actions.get("undo").setEnabled(this.canUndo()&&d);this.actions.get("redo").setEnabled(this.canRedo()&&d);this.menus.get("edit").setEnabled(f);this.menus.get("view").setEnabled(f);this.menus.get("importFrom").setEnabled(d);this.menus.get("arrange").setEnabled(d);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&this.toolbar.edgeShapeMenu.setEnabled(d),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(d));this.updateUserElement()};
+EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var d=this.getCurrentFile();return null!=d&&d.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};var t=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){t.apply(this,arguments);var d=this.editor.graph,
+f=this.getCurrentFile(),g=this.getSelectionState(),m=this.isDiagramActive();this.actions.get("pageSetup").setEnabled(m);this.actions.get("autosave").setEnabled(null!=f&&f.isEditable()&&f.isAutosaveOptional());this.actions.get("guides").setEnabled(m);this.actions.get("editData").setEnabled(d.isEnabled());this.actions.get("shadowVisible").setEnabled(m);this.actions.get("connectionArrows").setEnabled(m);this.actions.get("connectionPoints").setEnabled(m);this.actions.get("copyStyle").setEnabled(m&&!d.isSelectionEmpty());
+this.actions.get("pasteStyle").setEnabled(m&&0<g.cells.length);this.actions.get("editGeometry").setEnabled(0<g.vertices.length);this.actions.get("createShape").setEnabled(m);this.actions.get("createRevision").setEnabled(m);this.actions.get("moveToFolder").setEnabled(null!=f);this.actions.get("makeCopy").setEnabled(null!=f&&!f.isRestricted());this.actions.get("editDiagram").setEnabled(m&&(null==f||!f.isRestricted()));this.actions.get("publishLink").setEnabled(null!=f&&!f.isRestricted());this.actions.get("tags").setEnabled("hidden"!=
+this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=f&&f.isRenamable()||"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=f);this.menus.get("publish").setEnabled(null!=f&&!f.isRestricted());f=this.actions.get("findReplace");f.setEnabled("hidden"!=this.diagramContainer.style.visibility);
+f.label=mxResources.get("find")+(d.isEnabled()?"/"+mxResources.get("replace"):"")+"...";d=d.view.getState(d.getSelectionCell());this.actions.get("editShape").setEnabled(m&&null!=d&&null!=d.shape&&null!=d.shape.stencil)};var E=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);E.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=!1,ExportDialog.showGifOption=
+!1,ExportDialog.exportFile=function(d,f,g,m,q,y,F,C){var I=d.editor.graph;if("xml"==g)d.hideDialog(),d.saveData(f,"xml",mxUtils.getXml(d.editor.getGraphXml()),"text/xml");else if("svg"==g)d.hideDialog(),d.saveData(f,"svg",mxUtils.getXml(I.getSvg(m,q,y)),"image/svg+xml");else{var G=d.getFileData(!0,null,null,null,null,!0),Z=I.getGraphBounds(),ca=Math.floor(Z.width*q/I.view.scale),aa=Math.floor(Z.height*q/I.view.scale);if(G.length<=MAX_REQUEST_SIZE&&ca*aa<MAX_AREA)if(d.hideDialog(),"png"!=g&&"jpg"!=
+g&&"jpeg"!=g||!d.isExportToCanvas()){var Y={globalVars:I.getExportVariables()};C&&(Y.grid={size:I.gridSize,steps:I.view.gridSteps,color:I.view.gridColor});d.saveRequest(f,g,function(qa,Q){return new mxXmlRequest(EXPORT_URL,"format="+g+"&base64="+(Q||"0")+(null!=qa?"&filename="+encodeURIComponent(qa):"")+"&extras="+encodeURIComponent(JSON.stringify(Y))+(0<F?"&dpi="+F:"")+"&bg="+(null!=m?m:"none")+"&w="+ca+"&h="+aa+"&border="+y+"&xml="+encodeURIComponent(G))})}else"png"==g?d.exportImage(q,null==m||
+"none"==m,!0,!1,!1,y,!0,!1,null,C,F):d.exportImage(q,!1,!0,!1,!1,y,!0,!1,"jpeg",C);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var d=this.editor.graph,f="";if(null!=this.pages)for(var g=0;g<this.pages.length;g++){var m=d;this.currentPage!=this.pages[g]&&(m=this.createTemporaryGraph(d.getStylesheet()),this.updatePageRoot(this.pages[g]),m.model.setRoot(this.pages[g].root));f+=this.pages[g].getName()+" "+
+m.getIndexableText()+" "}else f=d.getIndexableText();this.editor.graph.setEnabled(!0);return f};EditorUi.prototype.showRemotelyStoredLibrary=function(d){var f={},g=document.createElement("div");g.style.whiteSpace="nowrap";var m=document.createElement("h3");mxUtils.write(m,mxUtils.htmlEntities(d));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(m);var q=document.createElement("div");q.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";
+q.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var y={};try{var F=mxSettings.getCustomLibraries();for(d=0;d<F.length;d++){var C=F[d];if("R"==C.substring(0,1)){var I=JSON.parse(decodeURIComponent(C.substring(1)));y[I[0]]={id:I[0],title:I[1],downloadUrl:I[2]}}}}catch(G){}this.remoteInvoke("getCustomLibraries",null,null,function(G){q.innerText="";if(0==G.length)q.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+
+"</div>";else for(var Z=0;Z<G.length;Z++){var ca=G[Z];y[ca.id]&&(f[ca.id]=ca);var aa=this.addCheckbox(q,ca.title,y[ca.id]);(function(Y,qa){mxEvent.addListener(qa,"change",function(){this.checked?f[Y.id]=Y:delete f[Y.id]})})(ca,aa)}},mxUtils.bind(this,function(G){q.innerText="";var Z=document.createElement("div");Z.style.padding="8px";Z.style.textAlign="center";mxUtils.write(Z,mxResources.get("error")+": ");mxUtils.write(Z,null!=G&&null!=G.message?G.message:mxResources.get("unknownError"));q.appendChild(Z)}));
+g.appendChild(q);g=new CustomDialog(this,g,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var G=0,Z;for(Z in f)null==y[Z]&&(G++,mxUtils.bind(this,function(ca){this.remoteInvoke("getFileContent",[ca.downloadUrl],null,mxUtils.bind(this,function(aa){G--;0==G&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,aa,ca))}catch(Y){this.handleError(Y,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){G--;0==G&&this.spinner.stop();this.handleError(null,
+mxResources.get("errorLoadingFile"))}))})(f[Z]));for(Z in y)f[Z]||this.closeLibrary(new RemoteLibrary(this,null,y[Z]));0==G&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(g.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},
+setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(d){this.remoteWin=d;for(var f=0;f<this.remoteInvokeQueue.length;f++)d.postMessage(this.remoteInvokeQueue[f],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(d){var f=d.msgMarkers,g=this.remoteInvokeCallbacks[f.callbackId];if(null==g)throw Error("No callback for "+
+(null!=f?f.callbackId:"null"));d.error?g.error&&g.error(d.error.errResp):g.callback&&g.callback.apply(this,d.resp);this.remoteInvokeCallbacks[f.callbackId]=null};EditorUi.prototype.remoteInvoke=function(d,f,g,m,q){var y=!0,F=window.setTimeout(mxUtils.bind(this,function(){y=!1;q({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),C=mxUtils.bind(this,function(){window.clearTimeout(F);y&&m.apply(this,arguments)}),I=mxUtils.bind(this,function(){window.clearTimeout(F);y&&q.apply(this,
+arguments)});g=g||{};g.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:C,error:I});d=JSON.stringify({event:"remoteInvoke",funtionName:d,functionArgs:f,msgMarkers:g});null!=this.remoteWin?this.remoteWin.postMessage(d,"*"):this.remoteInvokeQueue.push(d)};EditorUi.prototype.handleRemoteInvoke=function(d,f){var g=mxUtils.bind(this,function(G,Z){var ca={event:"remoteInvokeResponse",msgMarkers:d.msgMarkers};null!=Z?ca.error={errResp:Z}:null!=G&&(ca.resp=G);this.remoteWin.postMessage(JSON.stringify(ca),
+"*")});try{var m=d.funtionName,q=this.remoteInvokableFns[m];if(null!=q&&"function"===typeof this[m]){if(q.allowedDomains){for(var y=!1,F=0;F<q.allowedDomains.length;F++)if(f=="https://"+q.allowedDomains[F]){y=!0;break}if(!y){g(null,"Invalid Call: "+m+" is not allowed.");return}}var C=d.functionArgs;Array.isArray(C)||(C=[]);if(q.isAsync)C.push(function(){g(Array.prototype.slice.apply(arguments))}),C.push(function(G){g(null,G||"Unkown Error")}),this[m].apply(this,C);else{var I=this[m].apply(this,C);
+g([I])}}else g(null,"Invalid Call: "+m+" is not found.")}catch(G){g(null,"Invalid Call: An error occurred, "+G.message)}};EditorUi.prototype.openDatabase=function(d,f){if(null==this.database){var g=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=g)try{var m=g.open("database",2);m.onupgradeneeded=function(q){try{var y=m.result;1>q.oldVersion&&y.createObjectStore("objects",{keyPath:"key"});2>q.oldVersion&&(y.createObjectStore("files",{keyPath:"title"}),y.createObjectStore("filesInfo",
+{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(F){null!=f&&f(F)}};m.onsuccess=mxUtils.bind(this,function(q){var y=m.result;this.database=y;EditorUi.migrateStorageFiles&&(StorageFile.migrate(y),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(F){if(!F||"1"==urlParams.forceMigration){var C=document.createElement("iframe");C.style.display=
+"none";C.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(C);var I=!0,G=!1,Z,ca=0,aa=mxUtils.bind(this,function(){G=!0;this.setDatabaseItem(".drawioMigrated3",!0);C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),Y=mxUtils.bind(this,function(){ca++;qa()}),qa=mxUtils.bind(this,function(){try{if(ca>=Z.length)aa();else{var X=Z[ca];StorageFile.getFileContent(this,X,mxUtils.bind(this,
+function(fa){null==fa||".scratchpad"==X&&fa==this.emptyLibraryXml?C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[X]}),"*"):Y()}),Y)}}catch(fa){console.log(fa)}}),Q=mxUtils.bind(this,function(X){try{this.setDatabaseItem(null,[{title:X.title,size:X.data.length,lastModified:Date.now(),type:X.isLib?"L":"F"},{title:X.title,data:X.data}],Y,Y,["filesInfo","files"])}catch(fa){console.log(fa)}});F=mxUtils.bind(this,function(X){try{if(X.source==
+C.contentWindow){var fa={};try{fa=JSON.parse(X.data)}catch(ka){}"init"==fa.event?(C.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),C.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=fa.event||G||(I?null!=fa.resp&&0<fa.resp.length&&null!=fa.resp[0]?(Z=fa.resp[0],I=!1,qa()):aa():null!=fa.resp&&0<fa.resp.length&&null!=fa.resp[0]?Q(fa.resp[0]):Y())}}catch(ka){console.log(ka)}});window.addEventListener("message",
+F)}})));d(y);y.onversionchange=function(){y.close()}});m.onerror=f;m.onblocked=function(){}}catch(q){null!=f&&f(q)}else null!=f&&f()}else d(this.database)};EditorUi.prototype.setDatabaseItem=function(d,f,g,m,q){this.openDatabase(mxUtils.bind(this,function(y){try{q=q||"objects";Array.isArray(q)||(q=[q],d=[d],f=[f]);var F=y.transaction(q,"readwrite");F.oncomplete=g;F.onerror=m;for(y=0;y<q.length;y++)F.objectStore(q[y]).put(null!=d&&null!=d[y]?{key:d[y],data:f[y]}:f[y])}catch(C){null!=m&&m(C)}}),m)};
+EditorUi.prototype.removeDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){m=m||"objects";Array.isArray(m)||(m=[m],d=[d]);q=q.transaction(m,"readwrite");q.oncomplete=f;q.onerror=g;for(var y=0;y<m.length;y++)q.objectStore(m[y]).delete(d[y])}),g)};EditorUi.prototype.getDatabaseItem=function(d,f,g,m){this.openDatabase(mxUtils.bind(this,function(q){try{m=m||"objects";var y=q.transaction([m],"readonly").objectStore(m).get(d);y.onsuccess=function(){f(y.result)};y.onerror=g}catch(F){null!=
+g&&g(F)}}),g)};EditorUi.prototype.getDatabaseItems=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";var q=m.transaction([g],"readonly").objectStore(g).openCursor(IDBKeyRange.lowerBound(0)),y=[];q.onsuccess=function(F){null==F.target.result?d(y):(y.push(F.target.result.value),F.target.result.continue())};q.onerror=f}catch(F){null!=f&&f(F)}}),f)};EditorUi.prototype.getDatabaseItemKeys=function(d,f,g){this.openDatabase(mxUtils.bind(this,function(m){try{g=g||"objects";
+var q=m.transaction([g],"readonly").objectStore(g).getAllKeys();q.onsuccess=function(){d(q.result)};q.onerror=f}catch(y){null!=f&&f(y)}}),f)};EditorUi.prototype.commentsSupported=function(){var d=this.getCurrentFile();return null!=d?d.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var d=this.getCurrentFile();return null!=d?d.commentsSaveNeeded():!1};
+EditorUi.prototype.getComments=function(d,f){var g=this.getCurrentFile();null!=g?g.getComments(d,f):d([])};EditorUi.prototype.addComment=function(d,f,g){var m=this.getCurrentFile();null!=m?m.addComment(d,f,g):f(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var d=this.getCurrentFile();return null!=d?d.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var d=this.getCurrentFile();return null!=d?d.canComment():!0};EditorUi.prototype.newComment=function(d,f){var g=this.getCurrentFile();
+return null!=g?g.newComment(d,f):new DrawioComment(this,null,d,Date.now(),Date.now(),!1,f)};EditorUi.prototype.isRevisionHistorySupported=function(){var d=this.getCurrentFile();return null!=d&&d.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(d,f){var g=this.getCurrentFile();null!=g&&g.getRevisions?g.getRevisions(d,f):f({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var d=this.getCurrentFile();return null!=d&&(d.constructor==
+DriveFile&&d.isEditable()||d.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(d){d.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(d,f,g,m,q,y,F,C){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(d,f,g,m,q,y,F,C)};EditorUi.prototype.loadFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(d)};
+EditorUi.prototype.createSvgDataUri=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(d)};EditorUi.prototype.embedCssFonts=function(d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(d,f)};EditorUi.prototype.embedExtFonts=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(d)};EditorUi.prototype.exportToCanvas=function(d,f,g,m,q,y,F,C,I,G,Z,ca,aa,Y,qa,
+Q){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(d,f,g,m,q,y,F,C,I,G,Z,ca,aa,Y,qa,Q)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(d,f,g,m)};EditorUi.prototype.convertImageToDataUri=function(d,
+f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(d,f)};EditorUi.prototype.base64Encode=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(d)};EditorUi.prototype.updateCRC=function(d,f,g,m){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(d,f,g,m)};EditorUi.prototype.crc32=function(d){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(d)};EditorUi.prototype.writeGraphModelToPng=
+function(d,f,g,m,q){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(d,f,g,m,q)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var d=[],f=0;f<localStorage.length;f++){var g=localStorage.key(f),m=localStorage.getItem(g);if(0<g.length&&(".scratchpad"==g||"."!=g.charAt(0))&&0<m.length){var q="<mxfile "===m.substring(0,8)||"<?xml"===m.substring(0,
+5)||"\x3c!--[if IE]>"===m.substring(0,12);m="<mxlibrary>"===m.substring(0,11);(q||m)&&d.push(g)}}return d};EditorUi.prototype.getLocalStorageFile=function(d){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var f=localStorage.getItem(d);return{title:d,data:f,isLib:"<mxlibrary>"===f.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
+var CommentsWindow=function(b,e,k,n,D,t){function E(){for(var ia=ca.getElementsByTagName("div"),V=0,L=0;L<ia.length;L++)"none"!=ia[L].style.display&&ia[L].parentNode==ca&&V++;aa.style.display=0==V?"block":"none"}function d(ia,V,L,ea){function O(){V.removeChild(la);V.removeChild(u);ba.style.display="block";N.style.display="block"}I={div:V,comment:ia,saveCallback:L,deleteOnCancel:ea};var N=V.querySelector(".geCommentTxt"),ba=V.querySelector(".geCommentActionsList"),la=document.createElement("textarea");
+la.className="geCommentEditTxtArea";la.style.minHeight=N.offsetHeight+"px";la.value=ia.content;V.insertBefore(la,N);var u=document.createElement("div");u.className="geCommentEditBtns";var H=mxUtils.button(mxResources.get("cancel"),function(){ea?(V.parentNode.removeChild(V),E()):O();I=null});H.className="geCommentEditBtn";u.appendChild(H);var P=mxUtils.button(mxResources.get("save"),function(){N.innerText="";ia.content=la.value;mxUtils.write(N,ia.content);O();L(ia);I=null});mxEvent.addListener(la,
+"keydown",mxUtils.bind(this,function(T){mxEvent.isConsumed(T)||((mxEvent.isControlDown(T)||mxClient.IS_MAC&&mxEvent.isMetaDown(T))&&13==T.keyCode?(P.click(),mxEvent.consume(T)):27==T.keyCode&&(H.click(),mxEvent.consume(T)))}));P.focus();P.className="geCommentEditBtn gePrimaryBtn";u.appendChild(P);V.insertBefore(u,N);ba.style.display="none";N.style.display="none";la.focus()}function f(ia,V){V.innerText="";ia=new Date(ia.modifiedDate);var L=b.timeSince(ia);null==L&&(L=mxResources.get("lessThanAMinute"));
+mxUtils.write(V,mxResources.get("timeAgo",[L],"{1} ago"));V.setAttribute("title",ia.toLocaleDateString()+" "+ia.toLocaleTimeString())}function g(ia){var V=document.createElement("img");V.className="geCommentBusyImg";V.src=IMAGE_PATH+"/spin.gif";ia.appendChild(V);ia.busyImg=V}function m(ia){ia.style.border="1px solid red";ia.removeChild(ia.busyImg)}function q(ia){ia.style.border="";ia.removeChild(ia.busyImg)}function y(ia,V,L,ea,O){function N(da,R,ma){var ra=document.createElement("li");ra.className=
+"geCommentAction";var xa=document.createElement("a");xa.className="geCommentActionLnk";mxUtils.write(xa,da);ra.appendChild(xa);mxEvent.addListener(xa,"click",function(ta){R(ta,ia);ta.preventDefault();mxEvent.consume(ta)});S.appendChild(ra);ma&&(ra.style.display="none")}function ba(){function da(ra){R.push(ma);if(null!=ra.replies)for(var xa=0;xa<ra.replies.length;xa++)ma=ma.nextSibling,da(ra.replies[xa])}var R=[],ma=u;da(ia);return{pdiv:ma,replies:R}}function la(da,R,ma,ra,xa){function ta(){g(sa);
+ia.addReply(Ba,function(Pa){Ba.id=Pa;ia.replies.push(Ba);q(sa);ma&&ma()},function(Pa){Aa();m(sa);b.handleError(Pa,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},ra,xa)}function Aa(){d(Ba,sa,function(Pa){ta()},!0)}var Ca=ba().pdiv,Ba=b.newComment(da,b.getCurrentUser());Ba.pCommentId=ia.id;null==ia.replies&&(ia.replies=[]);var sa=y(Ba,ia.replies,Ca,ea+1);R?Aa():ta()}if(O||!ia.isResolved){aa.style.display="none";var u=document.createElement("div");u.className="geCommentContainer";
+u.setAttribute("data-commentId",ia.id);u.style.marginLeft=20*ea+5+"px";ia.isResolved&&!Editor.isDarkMode()&&(u.style.backgroundColor="ghostWhite");var H=document.createElement("div");H.className="geCommentHeader";var P=document.createElement("img");P.className="geCommentUserImg";P.src=ia.user.pictureUrl||Editor.userImage;H.appendChild(P);P=document.createElement("div");P.className="geCommentHeaderTxt";H.appendChild(P);var T=document.createElement("div");T.className="geCommentUsername";mxUtils.write(T,
+ia.user.displayName||"");P.appendChild(T);T=document.createElement("div");T.className="geCommentDate";T.setAttribute("data-commentId",ia.id);f(ia,T);P.appendChild(T);u.appendChild(H);H=document.createElement("div");H.className="geCommentTxt";mxUtils.write(H,ia.content||"");u.appendChild(H);ia.isLocked&&(u.style.opacity="0.5");H=document.createElement("div");H.className="geCommentActions";var S=document.createElement("ul");S.className="geCommentActionsList";H.appendChild(S);F||ia.isLocked||0!=ea&&
+!C||N(mxResources.get("reply"),function(){la("",!0)},ia.isResolved);P=b.getCurrentUser();null==P||P.id!=ia.user.id||F||ia.isLocked||(N(mxResources.get("edit"),function(){function da(){d(ia,u,function(){g(u);ia.editComment(ia.content,function(){q(u)},function(R){m(u);da();b.handleError(R,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}da()},ia.isResolved),N(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(u);ia.deleteComment(function(da){if(!0===
+da){da=u.querySelector(".geCommentTxt");da.innerText="";mxUtils.write(da,mxResources.get("msgDeleted"));var R=u.querySelectorAll(".geCommentAction");for(da=0;da<R.length;da++)R[da].parentNode.removeChild(R[da]);q(u);u.style.opacity="0.5"}else{R=ba(ia).replies;for(da=0;da<R.length;da++)ca.removeChild(R[da]);for(da=0;da<V.length;da++)if(V[da]==ia){V.splice(da,1);break}aa.style.display=0==ca.getElementsByTagName("div").length?"block":"none"}},function(da){m(u);b.handleError(da,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},
+ia.isResolved));F||ia.isLocked||0!=ea||N(ia.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(da){function R(){var ma=da.target;ma.innerText="";ia.isResolved=!ia.isResolved;mxUtils.write(ma,ia.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var ra=ia.isResolved?"none":"",xa=ba(ia).replies,ta=Editor.isDarkMode()?"transparent":ia.isResolved?"ghostWhite":"white",Aa=0;Aa<xa.length;Aa++){xa[Aa].style.backgroundColor=ta;for(var Ca=xa[Aa].querySelectorAll(".geCommentAction"),
+Ba=0;Ba<Ca.length;Ba++)Ca[Ba]!=ma.parentNode&&(Ca[Ba].style.display=ra);Q||(xa[Aa].style.display="none")}E()}ia.isResolved?la(mxResources.get("reOpened")+": ",!0,R,!1,!0):la(mxResources.get("markedAsResolved"),!1,R,!0)});u.appendChild(H);null!=L?ca.insertBefore(u,L.nextSibling):ca.appendChild(u);for(L=0;null!=ia.replies&&L<ia.replies.length;L++)H=ia.replies[L],H.isResolved=ia.isResolved,y(H,ia.replies,null,ea+1,O);null!=I&&(I.comment.id==ia.id?(O=ia.content,ia.content=I.comment.content,d(ia,u,I.saveCallback,
+I.deleteOnCancel),ia.content=O):null==I.comment.id&&I.comment.pCommentId==ia.id&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel)));return u}}var F=!b.canComment(),C=b.canReplyToReplies(),I=null,G=document.createElement("div");G.className="geCommentsWin";G.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var Z=EditorUi.compactUi?"26px":"30px",ca=document.createElement("div");ca.className="geCommentsList";ca.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:
+"whiteSmoke";ca.style.bottom=parseInt(Z)+7+"px";G.appendChild(ca);var aa=document.createElement("span");aa.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(aa,mxResources.get("noCommentsFound"));var Y=document.createElement("div");Y.className="geToolbarContainer geCommentsToolbar";Y.style.height=Z;Y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";Y.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";Z=document.createElement("a");Z.className=
+"geButton";if(!F){var qa=Z.cloneNode();qa.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';qa.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(qa,"click",function(ia){function V(){d(L,ea,function(O){g(ea);b.addComment(O,function(N){O.id=N;X.push(O);q(ea)},function(N){m(ea);V();b.handleError(N,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var L=b.newComment("",b.getCurrentUser()),ea=y(L,X,null,0);V();ia.preventDefault();
+mxEvent.consume(ia)});Y.appendChild(qa)}qa=Z.cloneNode();qa.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';qa.setAttribute("title",mxResources.get("showResolved"));var Q=!1;Editor.isDarkMode()&&(qa.style.filter="invert(100%)");mxEvent.addListener(qa,"click",function(ia){this.className=(Q=!Q)?"geButton geCheckedBtn":"geButton";fa();ia.preventDefault();mxEvent.consume(ia)});Y.appendChild(qa);b.commentsRefreshNeeded()&&(qa=Z.cloneNode(),qa.innerHTML='<img src="'+
+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',qa.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(qa.style.filter="invert(100%)"),mxEvent.addListener(qa,"click",function(ia){fa();ia.preventDefault();mxEvent.consume(ia)}),Y.appendChild(qa));b.commentsSaveNeeded()&&(Z=Z.cloneNode(),Z.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',Z.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(Z.style.filter="invert(100%)"),
+mxEvent.addListener(Z,"click",function(ia){t();ia.preventDefault();mxEvent.consume(ia)}),Y.appendChild(Z));G.appendChild(Y);var X=[],fa=mxUtils.bind(this,function(){this.hasError=!1;if(null!=I)try{I.div=I.div.cloneNode(!0);var ia=I.div.querySelector(".geCommentEditTxtArea"),V=I.div.querySelector(".geCommentEditBtns");I.comment.content=ia.value;ia.parentNode.removeChild(ia);V.parentNode.removeChild(V)}catch(L){b.handleError(L)}ca.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+
+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";C=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(L){function ea(O){if(null!=O){O.sort(function(ba,la){return new Date(ba.modifiedDate)-new Date(la.modifiedDate)});for(var N=0;N<O.length;N++)ea(O[N].replies)}}L.sort(function(O,N){return new Date(O.modifiedDate)-new Date(N.modifiedDate)});ca.innerText="";ca.appendChild(aa);aa.style.display="block";X=L;for(L=0;L<X.length;L++)ea(X[L].replies),
+y(X[L],X,null,0,Q);null!=I&&null==I.comment.id&&null==I.comment.pCommentId&&(ca.appendChild(I.div),d(I.comment,I.div,I.saveCallback,I.deleteOnCancel))},mxUtils.bind(this,function(L){ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(L&&L.message?": "+L.message:""));this.hasError=!0})):ca.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});fa();this.refreshComments=fa;Y=mxUtils.bind(this,function(){function ia(N){var ba=L[N.id];if(null!=ba)for(f(N,ba),ba=0;null!=N.replies&&ba<N.replies.length;ba++)ia(N.replies[ba])}
+if(this.window.isVisible()){for(var V=ca.querySelectorAll(".geCommentDate"),L={},ea=0;ea<V.length;ea++){var O=V[ea];L[O.getAttribute("data-commentId")]=O}for(ea=0;ea<X.length;ea++)ia(X[ea])}});setInterval(Y,6E4);this.refreshCommentsTime=Y;this.window=new mxWindow(mxResources.get("comments"),G,e,k,n,D,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);
+this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(ia,V){var L=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;ia=Math.max(0,Math.min(ia,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));V=Math.max(0,Math.min(V,L-this.table.clientHeight-48));this.getX()==ia&&this.getY()==V||mxWindow.prototype.setLocation.apply(this,arguments)};var ka=
+mxUtils.bind(this,function(){var ia=this.window.getX(),V=this.window.getY();this.window.setLocation(ia,V)});mxEvent.addListener(window,"resize",ka);this.destroy=function(){mxEvent.removeListener(window,"resize",ka);this.window.destroy()}},ConfirmDialog=function(b,e,k,n,D,t,E,d,f,g,m){var q=document.createElement("div");q.style.textAlign="center";m=null!=m?m:44;var y=document.createElement("div");y.style.padding="6px";y.style.overflow="auto";y.style.maxHeight=m+"px";y.style.lineHeight="1.2em";mxUtils.write(y,
+e);q.appendChild(y);null!=g&&(y=document.createElement("div"),y.style.padding="6px 0 6px 0",e=document.createElement("img"),e.setAttribute("src",g),y.appendChild(e),q.appendChild(y));g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";var F=document.createElement("input");F.setAttribute("type","checkbox");t=mxUtils.button(t||mxResources.get("cancel"),function(){b.hideDialog();null!=n&&n(F.checked)});t.className="geBtn";null!=d&&(t.innerHTML=d+"<br>"+t.innerHTML,
+t.style.paddingBottom="8px",t.style.paddingTop="8px",t.style.height="auto",t.style.width="40%");b.editor.cancelFirst&&g.appendChild(t);var C=mxUtils.button(D||mxResources.get("ok"),function(){b.hideDialog();null!=k&&k(F.checked)});g.appendChild(C);null!=E?(C.innerHTML=E+"<br>"+C.innerHTML+"<br>",C.style.paddingBottom="8px",C.style.paddingTop="8px",C.style.height="auto",C.className="geBtn",C.style.width="40%"):C.className="geBtn gePrimaryBtn";b.editor.cancelFirst||g.appendChild(t);q.appendChild(g);
+f?(g.style.marginTop="10px",y=document.createElement("p"),y.style.marginTop="20px",y.style.marginBottom="0px",y.appendChild(F),D=document.createElement("span"),mxUtils.write(D," "+mxResources.get("rememberThisSetting")),y.appendChild(D),q.appendChild(y),mxEvent.addListener(D,"click",function(I){F.checked=!F.checked;mxEvent.consume(I)})):g.style.marginTop="12px";this.init=function(){C.focus()};this.container=q};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,k){this.ui=b;this.page=e;this.previous=this.name=k}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,k){this.ui=b;this.oldIndex=e;this.newIndex=k}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,k){this.ui=b;this.previousPage=this.page=e;this.neverShown=!0;null!=e&&(this.neverShown=null==e.viewState,this.ui.updatePageRoot(e),null!=k&&(e.viewState=k,this.neverShown=!1))}
@@ -3870,40 +3870,40 @@ f=new EmbedDialog(this,this.getLinkForPage(b,t,f));this.showDialog(f.container,4
n));return n};b.beforeDecode=function(e,k,n){n.ui=e.ui;n.relatedPage=n.ui.getPageById(k.getAttribute("relatedPage"));if(null==n.relatedPage){var D=k.ownerDocument.createElement("diagram");D.setAttribute("id",k.getAttribute("relatedPage"));D.setAttribute("name",k.getAttribute("name"));n.relatedPage=new DiagramPage(D);D=k.getAttribute("viewState");null!=D&&(n.relatedPage.viewState=JSON.parse(D),k.removeAttribute("viewState"));k=k.cloneNode(!0);D=k.firstChild;if(null!=D)for(n.relatedPage.root=e.decodeCell(D,
!1),n=D.nextSibling,D.parentNode.removeChild(D),D=n;null!=D;){n=D.nextSibling;if(D.nodeType==mxConstants.NODETYPE_ELEMENT){var t=D.getAttribute("id");null==e.lookup(t)&&e.decodeCell(D)}D.parentNode.removeChild(D);D=n}}return k};b.afterDecode=function(e,k,n){n.index=n.previousIndex;return n};mxCodecRegistry.register(b)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(n,D,t,E,d){D=null!=D?D:!1;null==t&&(t=this.getFoldableCells(this.getSelectionCells(),n));this.stopEditing();this.model.beginUpdate();try{for(var f=t.slice(),g=0;g<t.length;g++)"1"==mxUtils.getValue(this.getCurrentCellStyle(t[g]),"treeFolding","0")&&this.foldTreeCell(n,t[g]);t=f;t=b.apply(this,arguments)}finally{this.model.endUpdate()}return t};Graph.prototype.foldTreeCell=
function(n,D){this.model.beginUpdate();try{var t=[];this.traverse(D,!0,mxUtils.bind(this,function(d,f){var g=null!=f&&this.isTreeEdge(f);g&&t.push(f);d==D||null!=f&&!g||t.push(d);return(null==f||g)&&(d==D||!this.model.isCollapsed(d))}));this.model.setCollapsed(D,n);for(var E=0;E<t.length;E++)this.model.setVisible(t[E],!n)}finally{this.model.endUpdate()}};Graph.prototype.isTreeEdge=function(n){return!this.isEdgeIgnored(n)};Graph.prototype.getTreeEdges=function(n,D,t,E,d,f){return this.model.filterCells(this.getEdges(n,
-D,t,E,d,f),mxUtils.bind(this,function(g){return this.isTreeEdge(g)}))};Graph.prototype.getIncomingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!1,!0,!1)};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function n(J){return I.isVertex(J)&&t(J)}function D(J){var W=
-!1;null!=J&&(W="1"==C.getCurrentCellStyle(J).treeMoving);return W}function t(J){var W=!1;null!=J&&(J=I.getParent(J),W=C.view.getState(J),W="tree"==(null!=W?W.style:C.getCellStyle(J)).containerType);return W}function E(J){var W=!1;null!=J&&(J=I.getParent(J),W=C.view.getState(J),C.view.getState(J),W=null!=(null!=W?W.style:C.getCellStyle(J)).childLayout);return W}function d(J){J=C.view.getState(J);if(null!=J){var W=C.getIncomingTreeEdges(J.cell);if(0<W.length&&(W=C.view.getState(W[0]),null!=W&&(W=W.absolutePoints,
-null!=W&&0<W.length&&(W=W[W.length-1],null!=W)))){if(W.y==J.y&&Math.abs(W.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_SOUTH;if(W.y==J.y+J.height&&Math.abs(W.x-J.getCenterX())<J.width/2)return mxConstants.DIRECTION_NORTH;if(W.x>J.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(J,W){W=null!=W?W:!0;C.model.beginUpdate();try{var Q=C.model.getParent(J),S=C.getIncomingTreeEdges(J),ha=C.cloneCells([S[0],J]);C.model.setTerminal(ha[0],C.model.getTerminal(S[0],
-!0),!0);var la=d(J),u=Q.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ha[1].geometry.x+=W?J.geometry.width+10:-ha[1].geometry.width-10:ha[1].geometry.y+=W?J.geometry.height+10:-ha[1].geometry.height-10;C.view.currentRoot!=Q&&(ha[1].geometry.x-=u.x,ha[1].geometry.y-=u.y);var H=C.view.getState(J),O=C.view.scale;if(null!=H){var T=mxRectangle.fromRectangle(H);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?T.x+=(W?J.geometry.width+10:-ha[1].geometry.width-
-10)*O:T.y+=(W?J.geometry.height+10:-ha[1].geometry.height-10)*O;var R=C.getOutgoingTreeEdges(C.model.getTerminal(S[0],!0));if(null!=R){for(var da=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,P=u=S=0;P<R.length;P++){var ma=C.model.getTerminal(R[P],!1);if(la==d(ma)){var ra=C.view.getState(ma);ma!=J&&null!=ra&&(da&&W!=ra.getCenterX()<H.getCenterX()||!da&&W!=ra.getCenterY()<H.getCenterY())&&mxUtils.intersects(T,ra)&&(S=10+Math.max(S,(Math.min(T.x+T.width,ra.x+ra.width)-Math.max(T.x,
-ra.x))/O),u=10+Math.max(u,(Math.min(T.y+T.height,ra.y+ra.height)-Math.max(T.y,ra.y))/O))}}da?u=0:S=0;for(P=0;P<R.length;P++)if(ma=C.model.getTerminal(R[P],!1),la==d(ma)&&(ra=C.view.getState(ma),ma!=J&&null!=ra&&(da&&W!=ra.getCenterX()<H.getCenterX()||!da&&W!=ra.getCenterY()<H.getCenterY()))){var xa=[];C.traverse(ra.cell,!0,function(ta,Aa){var Ca=null!=Aa&&C.isTreeEdge(Aa);Ca&&xa.push(Aa);(null==Aa||Ca)&&xa.push(ta);return null==Aa||Ca});C.moveCells(xa,(W?1:-1)*S,(W?1:-1)*u)}}}return C.addCells(ha,
-Q)}finally{C.model.endUpdate()}}function g(J){C.model.beginUpdate();try{var W=d(J),Q=C.getIncomingTreeEdges(J),S=C.cloneCells([Q[0],J]);C.model.setTerminal(Q[0],S[1],!1);C.model.setTerminal(S[0],S[1],!0);C.model.setTerminal(S[0],J,!1);var ha=C.model.getParent(J),la=ha.geometry,u=[];C.view.currentRoot!=ha&&(S[1].geometry.x-=la.x,S[1].geometry.y-=la.y);C.traverse(J,!0,function(T,R){var da=null!=R&&C.isTreeEdge(R);da&&u.push(R);(null==R||da)&&u.push(T);return null==R||da});var H=J.geometry.width+40,
-O=J.geometry.height+40;W==mxConstants.DIRECTION_SOUTH?H=0:W==mxConstants.DIRECTION_NORTH?(H=0,O=-O):W==mxConstants.DIRECTION_WEST?(H=-H,O=0):W==mxConstants.DIRECTION_EAST&&(O=0);C.moveCells(u,H,O);return C.addCells(S,ha)}finally{C.model.endUpdate()}}function m(J,W){C.model.beginUpdate();try{var Q=C.model.getParent(J),S=C.getIncomingTreeEdges(J),ha=d(J);0==S.length&&(S=[C.createEdge(Q,null,"",null,null,C.createCurrentEdgeStyle())],ha=W);var la=C.cloneCells([S[0],J]);C.model.setTerminal(la[0],J,!0);
-if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],la[1],!1);var u=C.getCellStyle(la[1]).newEdgeStyle;if(null!=u)try{var H=JSON.parse(u),O;for(O in H)C.setCellStyles(O,H[O],[la[0]]),"edgeStyle"==O&&"elbowEdgeStyle"==H[O]&&C.setCellStyles("elbow",ha==mxConstants.DIRECTION_SOUTH||ha==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(ra){}}S=C.getOutgoingTreeEdges(J);var T=Q.geometry;W=[];C.view.currentRoot==Q&&(T=new mxRectangle);for(u=0;u<S.length;u++){var R=C.model.getTerminal(S[u],
-!1);null!=R&&W.push(R)}var da=C.view.getBounds(W),P=C.view.translate,ma=C.view.scale;ha==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==da?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-P.x-T.x+10,la[1].geometry.y+=la[1].geometry.height-T.y+40):ha==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==da?J.geometry.x+(J.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-P.x+-T.x+10,la[1].geometry.y-=la[1].geometry.height+T.y+40):(la[1].geometry.x=ha==mxConstants.DIRECTION_WEST?
-la[1].geometry.x-(la[1].geometry.width+T.x+40):la[1].geometry.x+(la[1].geometry.width-T.x+40),la[1].geometry.y=null==da?J.geometry.y+(J.geometry.height-la[1].geometry.height)/2:(da.y+da.height)/ma-P.y+-T.y+10);return C.addCells(la,Q)}finally{C.model.endUpdate()}}function q(J,W,Q){J=C.getOutgoingTreeEdges(J);Q=C.view.getState(Q);var S=[];if(null!=Q&&null!=J){for(var ha=0;ha<J.length;ha++){var la=C.view.getState(C.model.getTerminal(J[ha],!1));null!=la&&(!W&&Math.min(la.x+la.width,Q.x+Q.width)>=Math.max(la.x,
-Q.x)||W&&Math.min(la.y+la.height,Q.y+Q.height)>=Math.max(la.y,Q.y))&&S.push(la)}S.sort(function(u,H){return W?u.x+u.width-H.x-H.width:u.y+u.height-H.y-H.height})}return S}function y(J,W){var Q=d(J),S=W==mxConstants.DIRECTION_EAST||W==mxConstants.DIRECTION_WEST;(Q==mxConstants.DIRECTION_EAST||Q==mxConstants.DIRECTION_WEST)==S&&Q!=W?F.actions.get("selectParent").funct():Q==W?(W=C.getOutgoingTreeEdges(J),null!=W&&0<W.length&&C.setSelectionCell(C.model.getTerminal(W[0],!1))):(Q=C.getIncomingTreeEdges(J),
-null!=Q&&0<Q.length&&(S=q(C.model.getTerminal(Q[0],!0),S,J),J=C.view.getState(J),null!=J&&(J=mxUtils.indexOf(S,J),0<=J&&(J+=W==mxConstants.DIRECTION_NORTH||W==mxConstants.DIRECTION_WEST?-1:1,0<=J&&J<=S.length-1&&C.setSelectionCell(S[J].cell)))))}var F=this,C=F.editor.graph,I=C.getModel(),G=F.menus.createPopupMenu;F.menus.createPopupMenu=function(J,W,Q){G.apply(this,arguments);if(1==C.getSelectionCount()){W=C.getSelectionCell();var S=C.getOutgoingTreeEdges(W);J.addSeparator();0<S.length&&(n(C.getSelectionCell())&&
-this.addMenuItems(J,["selectChildren"],null,Q),this.addMenuItems(J,["selectDescendants"],null,Q));n(C.getSelectionCell())?(J.addSeparator(),0<C.getIncomingTreeEdges(W).length&&this.addMenuItems(J,["selectSiblings","selectParent"],null,Q)):0<C.model.getEdgeCount(W)&&this.addMenuItems(J,["selectConnections"],null,Q)}};F.actions.addAction("selectChildren",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getOutgoingTreeEdges(J);if(null!=J){for(var W=[],Q=0;Q<J.length;Q++)W.push(C.model.getTerminal(J[Q],
-!1));C.setSelectionCells(W)}}},null,null,"Alt+Shift+X");F.actions.addAction("selectSiblings",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=C.getSelectionCell();J=C.getIncomingTreeEdges(J);if(null!=J&&0<J.length&&(J=C.getOutgoingTreeEdges(C.model.getTerminal(J[0],!0)),null!=J)){for(var W=[],Q=0;Q<J.length;Q++)W.push(C.model.getTerminal(J[Q],!1));C.setSelectionCells(W)}}},null,null,"Alt+Shift+S");F.actions.addAction("selectParent",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var J=
-C.getSelectionCell();J=C.getIncomingTreeEdges(J);null!=J&&0<J.length&&C.setSelectionCell(C.model.getTerminal(J[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(J,W){J=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(J)){if(null!=W&&mxEvent.isAltDown(W))C.setSelectionCells(C.model.getTreeEdges(J,null==W||!mxEvent.isShiftDown(W),null==W||!mxEvent.isControlDown(W)));else{var Q=[];C.traverse(J,!0,function(S,ha){var la=null!=ha&&C.isTreeEdge(ha);la&&Q.push(ha);
-null!=ha&&!la||null!=W&&mxEvent.isShiftDown(W)||Q.push(S);return null==ha||la})}C.setSelectionCells(Q)}},null,null,"Alt+Shift+D");var aa=C.removeCells;C.removeCells=function(J,W){W=null!=W?W:!0;null==J&&(J=this.getDeletableCells(this.getSelectionCells()));W&&(J=this.getDeletableCells(this.addAllEdges(J)));for(var Q=[],S=0;S<J.length;S++){var ha=J[S];I.isEdge(ha)&&t(ha)&&(Q.push(ha),ha=I.getTerminal(ha,!1));if(n(ha)){var la=[];C.traverse(ha,!0,function(u,H){var O=null!=H&&C.isTreeEdge(H);O&&la.push(H);
-(null==H||O)&&la.push(u);return null==H||O});0<la.length&&(Q=Q.concat(la),ha=C.getIncomingTreeEdges(J[S]),J=J.concat(ha))}else null!=ha&&Q.push(J[S])}J=Q;return aa.apply(this,arguments)};F.hoverIcons.getStateAt=function(J,W,Q){return n(J.cell)?null:this.graph.view.getState(this.graph.getCellAt(W,Q))};var ca=C.duplicateCells;C.duplicateCells=function(J,W){J=null!=J?J:this.getSelectionCells();for(var Q=J.slice(0),S=0;S<Q.length;S++){var ha=C.view.getState(Q[S]);if(null!=ha&&n(ha.cell)){var la=C.getIncomingTreeEdges(ha.cell);
-for(ha=0;ha<la.length;ha++)mxUtils.remove(la[ha],J)}}this.model.beginUpdate();try{var u=ca.call(this,J,W);if(u.length==J.length)for(S=0;S<J.length;S++)if(n(J[S])){var H=C.getIncomingTreeEdges(u[S]);la=C.getIncomingTreeEdges(J[S]);if(0==H.length&&0<la.length){var O=this.cloneCell(la[0]);this.addEdge(O,C.getDefaultParent(),this.model.getTerminal(la[0],!0),u[S])}}}finally{this.model.endUpdate()}return u};var ba=C.moveCells;C.moveCells=function(J,W,Q,S,ha,la,u){var H=null;this.model.beginUpdate();try{var O=
-ha,T=this.getCurrentCellStyle(ha);if(null!=J&&n(ha)&&"1"==mxUtils.getValue(T,"treeFolding","0")){for(var R=0;R<J.length;R++)if(n(J[R])||C.model.isEdge(J[R])&&null==C.model.getTerminal(J[R],!0)){ha=C.model.getParent(J[R]);break}if(null!=O&&ha!=O&&null!=this.view.getState(J[0])){var da=C.getIncomingTreeEdges(J[0]);if(0<da.length){var P=C.view.getState(C.model.getTerminal(da[0],!0));if(null!=P){var ma=C.view.getState(O);null!=ma&&(W=(ma.getCenterX()-P.getCenterX())/C.view.scale,Q=(ma.getCenterY()-P.getCenterY())/
-C.view.scale)}}}}H=ba.apply(this,arguments);if(null!=H&&null!=J&&H.length==J.length)for(R=0;R<H.length;R++)if(this.model.isEdge(H[R]))n(O)&&0>mxUtils.indexOf(H,this.model.getTerminal(H[R],!0))&&this.model.setTerminal(H[R],O,!0);else if(n(J[R])&&(da=C.getIncomingTreeEdges(J[R]),0<da.length))if(!S)n(O)&&0>mxUtils.indexOf(J,this.model.getTerminal(da[0],!0))&&this.model.setTerminal(da[0],O,!0);else if(0==C.getIncomingTreeEdges(H[R]).length){T=O;if(null==T||T==C.model.getParent(J[R]))T=C.model.getTerminal(da[0],
-!0);S=this.cloneCell(da[0]);this.addEdge(S,C.getDefaultParent(),T,H[R])}}finally{this.model.endUpdate()}return H};if(null!=F.sidebar){var Z=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(J,W,Q,S){var ha=C.model,la=null;ha.beginUpdate();try{if(la=Z.apply(this,arguments),n(J))for(var u=0;u<la.length;u++)if(ha.isEdge(la[u])&&null==ha.getTerminal(la[u],!0)){ha.setTerminal(la[u],J,!0);var H=C.getCellGeometry(la[u]);H.points=null;null!=H.getTerminalPoint(!0)&&H.setTerminalPoint(null,!0)}}finally{ha.endUpdate()}return la}}var qa=
-{88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},N=F.onKeyDown;F.onKeyDown=function(J){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var W=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==J.which?W=mxEvent.isShiftDown(J)?g(C.getSelectionCell()):m(C.getSelectionCell()):13==J.which&&(W=f(C.getSelectionCell(),!mxEvent.isShiftDown(J))));if(null!=W&&0<W.length)1==
-W.length&&C.model.isEdge(W[0])?C.setSelectionCell(C.model.getTerminal(W[0],!1)):C.setSelectionCell(W[W.length-1]),null!=F.hoverIcons&&F.hoverIcons.update(C.view.getState(C.getSelectionCell())),C.startEditingAtCell(C.getSelectionCell()),mxEvent.consume(J);else if(mxEvent.isAltDown(J)&&mxEvent.isShiftDown(J)){var Q=qa[J.keyCode];null!=Q&&(Q.funct(J),mxEvent.consume(J))}else 37==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(J)):38==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_NORTH),
-mxEvent.consume(J)):39==J.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(J)):40==J.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(J))}}catch(S){F.handleError(S)}mxEvent.isConsumed(J)||N.apply(this,arguments)};var Y=C.connectVertex;C.connectVertex=function(J,W,Q,S,ha,la,u){var H=C.getIncomingTreeEdges(J);if(n(J)){var O=d(J),T=O==mxConstants.DIRECTION_EAST||O==mxConstants.DIRECTION_WEST,R=W==mxConstants.DIRECTION_EAST||W==mxConstants.DIRECTION_WEST;
-return O==W||0==H.length?m(J,W):T==R?g(J):f(J,W!=mxConstants.DIRECTION_NORTH&&W!=mxConstants.DIRECTION_WEST)}return Y.apply(this,arguments)};C.getSubtree=function(J){var W=[J];!D(J)&&!n(J)||E(J)||C.traverse(J,!0,function(Q,S){var ha=null!=S&&C.isTreeEdge(S);ha&&0>mxUtils.indexOf(W,S)&&W.push(S);(null==S||ha)&&0>mxUtils.indexOf(W,Q)&&W.push(Q);return null==S||ha});return W};var ea=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ea.apply(this,arguments);(D(this.state.cell)||
-n(this.state.cell))&&!E(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(J){this.graph.graphHandler.start(this.state.cell,
-mxEvent.getClientX(J),mxEvent.getClientY(J),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(J);this.graph.isMouseDown=!0;F.hoverIcons.reset();mxEvent.consume(J)})))};var ka=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){ka.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=
-this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var ja=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(J){ja.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=J?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(J,W){V.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==
-typeof Sidebar){var k=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var n=k.apply(this,arguments),D=this.graph;return n.concat([this.addEntry("tree container",function(){var t=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=!0;var E=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
-E.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);t.insert(f);t.insert(E);t.insert(d);return sb.createVertexTemplateFromCells([t],t.geometry.width,
-t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var t=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=!0;var E=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');E.vertex=!0;var d=new mxCell("Topic",
-new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);
-var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
+D,t,E,d,f),mxUtils.bind(this,function(g){return this.isTreeEdge(g)}))};Graph.prototype.getIncomingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!0,!1,!1)};Graph.prototype.getOutgoingTreeEdges=function(n,D){return this.getTreeEdges(n,D,!1,!0,!1)};var e=EditorUi.prototype.init;EditorUi.prototype.init=function(){e.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function n(L){return I.isVertex(L)&&t(L)}function D(L){var ea=
+!1;null!=L&&(ea="1"==C.getCurrentCellStyle(L).treeMoving);return ea}function t(L){var ea=!1;null!=L&&(L=I.getParent(L),ea=C.view.getState(L),ea="tree"==(null!=ea?ea.style:C.getCellStyle(L)).containerType);return ea}function E(L){var ea=!1;null!=L&&(L=I.getParent(L),ea=C.view.getState(L),C.view.getState(L),ea=null!=(null!=ea?ea.style:C.getCellStyle(L)).childLayout);return ea}function d(L){L=C.view.getState(L);if(null!=L){var ea=C.getIncomingTreeEdges(L.cell);if(0<ea.length&&(ea=C.view.getState(ea[0]),
+null!=ea&&(ea=ea.absolutePoints,null!=ea&&0<ea.length&&(ea=ea[ea.length-1],null!=ea)))){if(ea.y==L.y&&Math.abs(ea.x-L.getCenterX())<L.width/2)return mxConstants.DIRECTION_SOUTH;if(ea.y==L.y+L.height&&Math.abs(ea.x-L.getCenterX())<L.width/2)return mxConstants.DIRECTION_NORTH;if(ea.x>L.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function f(L,ea){ea=null!=ea?ea:!0;C.model.beginUpdate();try{var O=C.model.getParent(L),N=C.getIncomingTreeEdges(L),ba=C.cloneCells([N[0],
+L]);C.model.setTerminal(ba[0],C.model.getTerminal(N[0],!0),!0);var la=d(L),u=O.geometry;la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?ba[1].geometry.x+=ea?L.geometry.width+10:-ba[1].geometry.width-10:ba[1].geometry.y+=ea?L.geometry.height+10:-ba[1].geometry.height-10;C.view.currentRoot!=O&&(ba[1].geometry.x-=u.x,ba[1].geometry.y-=u.y);var H=C.view.getState(L),P=C.view.scale;if(null!=H){var T=mxRectangle.fromRectangle(H);la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH?
+T.x+=(ea?L.geometry.width+10:-ba[1].geometry.width-10)*P:T.y+=(ea?L.geometry.height+10:-ba[1].geometry.height-10)*P;var S=C.getOutgoingTreeEdges(C.model.getTerminal(N[0],!0));if(null!=S){for(var da=la==mxConstants.DIRECTION_SOUTH||la==mxConstants.DIRECTION_NORTH,R=u=N=0;R<S.length;R++){var ma=C.model.getTerminal(S[R],!1);if(la==d(ma)){var ra=C.view.getState(ma);ma!=L&&null!=ra&&(da&&ea!=ra.getCenterX()<H.getCenterX()||!da&&ea!=ra.getCenterY()<H.getCenterY())&&mxUtils.intersects(T,ra)&&(N=10+Math.max(N,
+(Math.min(T.x+T.width,ra.x+ra.width)-Math.max(T.x,ra.x))/P),u=10+Math.max(u,(Math.min(T.y+T.height,ra.y+ra.height)-Math.max(T.y,ra.y))/P))}}da?u=0:N=0;for(R=0;R<S.length;R++)if(ma=C.model.getTerminal(S[R],!1),la==d(ma)&&(ra=C.view.getState(ma),ma!=L&&null!=ra&&(da&&ea!=ra.getCenterX()<H.getCenterX()||!da&&ea!=ra.getCenterY()<H.getCenterY()))){var xa=[];C.traverse(ra.cell,!0,function(ta,Aa){var Ca=null!=Aa&&C.isTreeEdge(Aa);Ca&&xa.push(Aa);(null==Aa||Ca)&&xa.push(ta);return null==Aa||Ca});C.moveCells(xa,
+(ea?1:-1)*N,(ea?1:-1)*u)}}}return C.addCells(ba,O)}finally{C.model.endUpdate()}}function g(L){C.model.beginUpdate();try{var ea=d(L),O=C.getIncomingTreeEdges(L),N=C.cloneCells([O[0],L]);C.model.setTerminal(O[0],N[1],!1);C.model.setTerminal(N[0],N[1],!0);C.model.setTerminal(N[0],L,!1);var ba=C.model.getParent(L),la=ba.geometry,u=[];C.view.currentRoot!=ba&&(N[1].geometry.x-=la.x,N[1].geometry.y-=la.y);C.traverse(L,!0,function(T,S){var da=null!=S&&C.isTreeEdge(S);da&&u.push(S);(null==S||da)&&u.push(T);
+return null==S||da});var H=L.geometry.width+40,P=L.geometry.height+40;ea==mxConstants.DIRECTION_SOUTH?H=0:ea==mxConstants.DIRECTION_NORTH?(H=0,P=-P):ea==mxConstants.DIRECTION_WEST?(H=-H,P=0):ea==mxConstants.DIRECTION_EAST&&(P=0);C.moveCells(u,H,P);return C.addCells(N,ba)}finally{C.model.endUpdate()}}function m(L,ea){C.model.beginUpdate();try{var O=C.model.getParent(L),N=C.getIncomingTreeEdges(L),ba=d(L);0==N.length&&(N=[C.createEdge(O,null,"",null,null,C.createCurrentEdgeStyle())],ba=ea);var la=C.cloneCells([N[0],
+L]);C.model.setTerminal(la[0],L,!0);if(null==C.model.getTerminal(la[0],!1)){C.model.setTerminal(la[0],la[1],!1);var u=C.getCellStyle(la[1]).newEdgeStyle;if(null!=u)try{var H=JSON.parse(u),P;for(P in H)C.setCellStyles(P,H[P],[la[0]]),"edgeStyle"==P&&"elbowEdgeStyle"==H[P]&&C.setCellStyles("elbow",ba==mxConstants.DIRECTION_SOUTH||ba==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[la[0]])}catch(ra){}}N=C.getOutgoingTreeEdges(L);var T=O.geometry;ea=[];C.view.currentRoot==O&&(T=new mxRectangle);for(u=
+0;u<N.length;u++){var S=C.model.getTerminal(N[u],!1);null!=S&&ea.push(S)}var da=C.view.getBounds(ea),R=C.view.translate,ma=C.view.scale;ba==mxConstants.DIRECTION_SOUTH?(la[1].geometry.x=null==da?L.geometry.x+(L.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-R.x-T.x+10,la[1].geometry.y+=la[1].geometry.height-T.y+40):ba==mxConstants.DIRECTION_NORTH?(la[1].geometry.x=null==da?L.geometry.x+(L.geometry.width-la[1].geometry.width)/2:(da.x+da.width)/ma-R.x+-T.x+10,la[1].geometry.y-=la[1].geometry.height+
+T.y+40):(la[1].geometry.x=ba==mxConstants.DIRECTION_WEST?la[1].geometry.x-(la[1].geometry.width+T.x+40):la[1].geometry.x+(la[1].geometry.width-T.x+40),la[1].geometry.y=null==da?L.geometry.y+(L.geometry.height-la[1].geometry.height)/2:(da.y+da.height)/ma-R.y+-T.y+10);return C.addCells(la,O)}finally{C.model.endUpdate()}}function q(L,ea,O){L=C.getOutgoingTreeEdges(L);O=C.view.getState(O);var N=[];if(null!=O&&null!=L){for(var ba=0;ba<L.length;ba++){var la=C.view.getState(C.model.getTerminal(L[ba],!1));
+null!=la&&(!ea&&Math.min(la.x+la.width,O.x+O.width)>=Math.max(la.x,O.x)||ea&&Math.min(la.y+la.height,O.y+O.height)>=Math.max(la.y,O.y))&&N.push(la)}N.sort(function(u,H){return ea?u.x+u.width-H.x-H.width:u.y+u.height-H.y-H.height})}return N}function y(L,ea){var O=d(L),N=ea==mxConstants.DIRECTION_EAST||ea==mxConstants.DIRECTION_WEST;(O==mxConstants.DIRECTION_EAST||O==mxConstants.DIRECTION_WEST)==N&&O!=ea?F.actions.get("selectParent").funct():O==ea?(ea=C.getOutgoingTreeEdges(L),null!=ea&&0<ea.length&&
+C.setSelectionCell(C.model.getTerminal(ea[0],!1))):(O=C.getIncomingTreeEdges(L),null!=O&&0<O.length&&(N=q(C.model.getTerminal(O[0],!0),N,L),L=C.view.getState(L),null!=L&&(L=mxUtils.indexOf(N,L),0<=L&&(L+=ea==mxConstants.DIRECTION_NORTH||ea==mxConstants.DIRECTION_WEST?-1:1,0<=L&&L<=N.length-1&&C.setSelectionCell(N[L].cell)))))}var F=this,C=F.editor.graph,I=C.getModel(),G=F.menus.createPopupMenu;F.menus.createPopupMenu=function(L,ea,O){G.apply(this,arguments);if(1==C.getSelectionCount()){ea=C.getSelectionCell();
+var N=C.getOutgoingTreeEdges(ea);L.addSeparator();0<N.length&&(n(C.getSelectionCell())&&this.addMenuItems(L,["selectChildren"],null,O),this.addMenuItems(L,["selectDescendants"],null,O));n(C.getSelectionCell())?(L.addSeparator(),0<C.getIncomingTreeEdges(ea).length&&this.addMenuItems(L,["selectSiblings","selectParent"],null,O)):0<C.model.getEdgeCount(ea)&&this.addMenuItems(L,["selectConnections"],null,O)}};F.actions.addAction("selectChildren",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var L=
+C.getSelectionCell();L=C.getOutgoingTreeEdges(L);if(null!=L){for(var ea=[],O=0;O<L.length;O++)ea.push(C.model.getTerminal(L[O],!1));C.setSelectionCells(ea)}}},null,null,"Alt+Shift+X");F.actions.addAction("selectSiblings",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var L=C.getSelectionCell();L=C.getIncomingTreeEdges(L);if(null!=L&&0<L.length&&(L=C.getOutgoingTreeEdges(C.model.getTerminal(L[0],!0)),null!=L)){for(var ea=[],O=0;O<L.length;O++)ea.push(C.model.getTerminal(L[O],!1));C.setSelectionCells(ea)}}},
+null,null,"Alt+Shift+S");F.actions.addAction("selectParent",function(){if(C.isEnabled()&&1==C.getSelectionCount()){var L=C.getSelectionCell();L=C.getIncomingTreeEdges(L);null!=L&&0<L.length&&C.setSelectionCell(C.model.getTerminal(L[0],!0))}},null,null,"Alt+Shift+P");F.actions.addAction("selectDescendants",function(L,ea){L=C.getSelectionCell();if(C.isEnabled()&&C.model.isVertex(L)){if(null!=ea&&mxEvent.isAltDown(ea))C.setSelectionCells(C.model.getTreeEdges(L,null==ea||!mxEvent.isShiftDown(ea),null==
+ea||!mxEvent.isControlDown(ea)));else{var O=[];C.traverse(L,!0,function(N,ba){var la=null!=ba&&C.isTreeEdge(ba);la&&O.push(ba);null!=ba&&!la||null!=ea&&mxEvent.isShiftDown(ea)||O.push(N);return null==ba||la})}C.setSelectionCells(O)}},null,null,"Alt+Shift+D");var Z=C.removeCells;C.removeCells=function(L,ea){ea=null!=ea?ea:!0;null==L&&(L=this.getDeletableCells(this.getSelectionCells()));ea&&(L=this.getDeletableCells(this.addAllEdges(L)));for(var O=[],N=0;N<L.length;N++){var ba=L[N];I.isEdge(ba)&&t(ba)&&
+(O.push(ba),ba=I.getTerminal(ba,!1));if(n(ba)){var la=[];C.traverse(ba,!0,function(u,H){var P=null!=H&&C.isTreeEdge(H);P&&la.push(H);(null==H||P)&&la.push(u);return null==H||P});0<la.length&&(O=O.concat(la),ba=C.getIncomingTreeEdges(L[N]),L=L.concat(ba))}else null!=ba&&O.push(L[N])}L=O;return Z.apply(this,arguments)};F.hoverIcons.getStateAt=function(L,ea,O){return n(L.cell)?null:this.graph.view.getState(this.graph.getCellAt(ea,O))};var ca=C.duplicateCells;C.duplicateCells=function(L,ea){L=null!=L?
+L:this.getSelectionCells();for(var O=L.slice(0),N=0;N<O.length;N++){var ba=C.view.getState(O[N]);if(null!=ba&&n(ba.cell)){var la=C.getIncomingTreeEdges(ba.cell);for(ba=0;ba<la.length;ba++)mxUtils.remove(la[ba],L)}}this.model.beginUpdate();try{var u=ca.call(this,L,ea);if(u.length==L.length)for(N=0;N<L.length;N++)if(n(L[N])){var H=C.getIncomingTreeEdges(u[N]);la=C.getIncomingTreeEdges(L[N]);if(0==H.length&&0<la.length){var P=this.cloneCell(la[0]);this.addEdge(P,C.getDefaultParent(),this.model.getTerminal(la[0],
+!0),u[N])}}}finally{this.model.endUpdate()}return u};var aa=C.moveCells;C.moveCells=function(L,ea,O,N,ba,la,u){var H=null;this.model.beginUpdate();try{var P=ba,T=this.getCurrentCellStyle(ba);if(null!=L&&n(ba)&&"1"==mxUtils.getValue(T,"treeFolding","0")){for(var S=0;S<L.length;S++)if(n(L[S])||C.model.isEdge(L[S])&&null==C.model.getTerminal(L[S],!0)){ba=C.model.getParent(L[S]);break}if(null!=P&&ba!=P&&null!=this.view.getState(L[0])){var da=C.getIncomingTreeEdges(L[0]);if(0<da.length){var R=C.view.getState(C.model.getTerminal(da[0],
+!0));if(null!=R){var ma=C.view.getState(P);null!=ma&&(ea=(ma.getCenterX()-R.getCenterX())/C.view.scale,O=(ma.getCenterY()-R.getCenterY())/C.view.scale)}}}}H=aa.apply(this,arguments);if(null!=H&&null!=L&&H.length==L.length)for(S=0;S<H.length;S++)if(this.model.isEdge(H[S]))n(P)&&0>mxUtils.indexOf(H,this.model.getTerminal(H[S],!0))&&this.model.setTerminal(H[S],P,!0);else if(n(L[S])&&(da=C.getIncomingTreeEdges(L[S]),0<da.length))if(!N)n(P)&&0>mxUtils.indexOf(L,this.model.getTerminal(da[0],!0))&&this.model.setTerminal(da[0],
+P,!0);else if(0==C.getIncomingTreeEdges(H[S]).length){T=P;if(null==T||T==C.model.getParent(L[S]))T=C.model.getTerminal(da[0],!0);N=this.cloneCell(da[0]);this.addEdge(N,C.getDefaultParent(),T,H[S])}}finally{this.model.endUpdate()}return H};if(null!=F.sidebar){var Y=F.sidebar.dropAndConnect;F.sidebar.dropAndConnect=function(L,ea,O,N){var ba=C.model,la=null;ba.beginUpdate();try{if(la=Y.apply(this,arguments),n(L))for(var u=0;u<la.length;u++)if(ba.isEdge(la[u])&&null==ba.getTerminal(la[u],!0)){ba.setTerminal(la[u],
+L,!0);var H=C.getCellGeometry(la[u]);H.points=null;null!=H.getTerminalPoint(!0)&&H.setTerminalPoint(null,!0)}}finally{ba.endUpdate()}return la}}var qa={88:F.actions.get("selectChildren"),84:F.actions.get("selectSubtree"),80:F.actions.get("selectParent"),83:F.actions.get("selectSiblings")},Q=F.onKeyDown;F.onKeyDown=function(L){try{if(C.isEnabled()&&!C.isEditing()&&n(C.getSelectionCell())&&1==C.getSelectionCount()){var ea=null;0<C.getIncomingTreeEdges(C.getSelectionCell()).length&&(9==L.which?ea=mxEvent.isShiftDown(L)?
+g(C.getSelectionCell()):m(C.getSelectionCell()):13==L.which&&(ea=f(C.getSelectionCell(),!mxEvent.isShiftDown(L))));if(null!=ea&&0<ea.length)1==ea.length&&C.model.isEdge(ea[0])?C.setSelectionCell(C.model.getTerminal(ea[0],!1)):C.setSelectionCell(ea[ea.length-1]),null!=F.hoverIcons&&F.hoverIcons.update(C.view.getState(C.getSelectionCell())),C.startEditingAtCell(C.getSelectionCell()),mxEvent.consume(L);else if(mxEvent.isAltDown(L)&&mxEvent.isShiftDown(L)){var O=qa[L.keyCode];null!=O&&(O.funct(L),mxEvent.consume(L))}else 37==
+L.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(L)):38==L.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(L)):39==L.keyCode?(y(C.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(L)):40==L.keyCode&&(y(C.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(L))}}catch(N){F.handleError(N)}mxEvent.isConsumed(L)||Q.apply(this,arguments)};var X=C.connectVertex;C.connectVertex=function(L,ea,O,N,ba,la,u){var H=C.getIncomingTreeEdges(L);
+if(n(L)){var P=d(L),T=P==mxConstants.DIRECTION_EAST||P==mxConstants.DIRECTION_WEST,S=ea==mxConstants.DIRECTION_EAST||ea==mxConstants.DIRECTION_WEST;return P==ea||0==H.length?m(L,ea):T==S?g(L):f(L,ea!=mxConstants.DIRECTION_NORTH&&ea!=mxConstants.DIRECTION_WEST)}return X.apply(this,arguments)};C.getSubtree=function(L){var ea=[L];!D(L)&&!n(L)||E(L)||C.traverse(L,!0,function(O,N){var ba=null!=N&&C.isTreeEdge(N);ba&&0>mxUtils.indexOf(ea,N)&&ea.push(N);(null==N||ba)&&0>mxUtils.indexOf(ea,O)&&ea.push(O);
+return null==N||ba});return ea};var fa=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){fa.apply(this,arguments);(D(this.state.cell)||n(this.state.cell))&&!E(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height=
+"24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(L){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(L),mxEvent.getClientY(L),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(L);this.graph.isMouseDown=!0;F.hoverIcons.reset();mxEvent.consume(L)})))};var ka=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=
+function(){ka.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var ia=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(L){ia.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=L?"":"none")};var V=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=
+function(L,ea){V.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var k=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var n=k.apply(this,arguments),D=this.graph;return n.concat([this.addEntry("tree container",function(){var t=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=
+!0;var E=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');E.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
+f.geometry.relative=!0;f.edge=!0;E.insertEdge(f,!0);d.insertEdge(f,!1);t.insert(f);t.insert(E);t.insert(d);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var t=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");t.vertex=!0;var E=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
+E.vertex=!0;var d=new mxCell("Topic",new mxGeometry(320,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;
+E.insertEdge(f,!0);d.insertEdge(f,!1);var g=new mxCell("Branch",new mxGeometry(320,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');g.vertex=!0;var m=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);var q=new mxCell("Topic",new mxGeometry(20,40,80,20),'whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');q.vertex=!0;var y=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");
y.geometry.relative=!0;y.edge=!0;E.insertEdge(y,!0);q.insertEdge(y,!1);var F=new mxCell("Branch",new mxGeometry(20,80,72,26),'whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');F.vertex=!0;var C=new mxCell("",new mxGeometry(0,
0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");C.geometry.relative=!0;C.edge=!0;E.insertEdge(C,!0);F.insertEdge(C,!1);t.insert(f);t.insert(m);t.insert(y);t.insert(C);t.insert(E);t.insert(d);t.insert(g);t.insert(q);t.insert(F);return sb.createVertexTemplateFromCells([t],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var t=new mxCell("Central Idea",new mxGeometry(0,0,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};treeFolding=1;treeMoving=1;');
@@ -3917,27 +3917,27 @@ m.geometry.relative=!0;m.edge=!0;E.insertEdge(m,!0);g.insertEdge(m,!1);t.insert(
E.geometry.setTerminalPoint(new mxPoint(0,0),!0);E.geometry.relative=!0;E.edge=!0;t.insertEdge(E,!1);return sb.createVertexTemplateFromCells([t,E],t.geometry.width,t.geometry.height,t.value)}),this.addEntry("tree sub sections",function(){var t=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");t.vertex=!0;var E=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");
E.geometry.setTerminalPoint(new mxPoint(110,-40),!0);E.geometry.relative=!0;E.edge=!0;t.insertEdge(E,!1);var d=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");f.geometry.setTerminalPoint(new mxPoint(110,-40),!0);f.geometry.relative=
!0;f.edge=!0;d.insertEdge(f,!1);return sb.createVertexTemplateFromCells([E,f,t,d],220,60,"Sub Sections")})])}}})();EditorUi.windowed="0"!=urlParams.windows;
-EditorUi.initMinimalTheme=function(){function b(N,Y){if(EditorUi.windowed){var ea=N.editor.graph;ea.popupMenuHandler.hideMenu();if(null==N.formatWindow){Y="1"==urlParams.sketch?Math.max(10,N.diagramContainer.clientWidth-241):Math.max(10,N.diagramContainer.clientWidth-248);var ka="1"==urlParams.winCtrls&&"1"==urlParams.sketch?80:60;ea="1"==urlParams.embedInline?580:"1"==urlParams.sketch?580:Math.min(566,ea.container.clientHeight-10);N.formatWindow=new t(N,mxResources.get("format"),Y,ka,240,ea,function(V){var J=
-N.createFormat(V);J.init();N.addListener("darkModeChanged",mxUtils.bind(this,function(){J.refresh()}));return J});N.formatWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){N.formatWindow.window.fit()}));N.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80)}else N.formatWindow.window.setVisible(null!=Y?Y:!N.formatWindow.window.isVisible())}else{if(null==N.formatElt){N.formatElt=D();var ja=N.createFormat(N.formatElt);ja.init();N.formatElt.style.border="none";N.formatElt.style.width=
-"240px";N.formatElt.style.borderLeft="1px solid gray";N.formatElt.style.right="0px";N.addListener("darkModeChanged",mxUtils.bind(this,function(){ja.refresh()}))}ea=N.diagramContainer.parentNode;null!=N.formatElt.parentNode?(N.formatElt.parentNode.removeChild(N.formatElt),ea.style.right="0px"):(ea.parentNode.appendChild(N.formatElt),ea.style.right=N.formatElt.style.width)}}function e(N,Y){function ea(J,W){var Q=N.menus.get(J);J=V.addMenu(W,mxUtils.bind(this,function(){Q.funct.apply(this,arguments)}));
-J.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;";J.className="geTitle";Y.appendChild(J);return J}var ka=document.createElement("div");ka.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";ka.className="geTitle";var ja=document.createElement("span");ja.style.fontSize="18px";ja.style.marginRight=
-"5px";ja.innerHTML="+";ka.appendChild(ja);mxUtils.write(ka,mxResources.get("moreShapes"));Y.appendChild(ka);mxEvent.addListener(ka,"click",function(){N.actions.get("shapes").funct()});var V=new Menubar(N,Y);!Editor.enableCustomLibraries||"1"==urlParams.embed&&"1"!=urlParams.libraries?ka.style.bottom="0":null!=N.actions.get("newLibrary")?(ka=document.createElement("div"),ka.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;",
-ka.className="geTitle",ja=document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("newLibrary")),ka.appendChild(ja),Y.appendChild(ka),mxEvent.addListener(ka,"click",N.actions.get("newLibrary").funct),ka=document.createElement("div"),ka.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",ka.className="geTitle",ja=
-document.createElement("span"),ja.style.cssText="position:relative;top:6px;",mxUtils.write(ja,mxResources.get("openLibrary")),ka.appendChild(ja),Y.appendChild(ka),mxEvent.addListener(ka,"click",N.actions.get("openLibrary").funct)):(ka=ea("newLibrary",mxResources.get("newLibrary")),ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="0",ka=ea("openLibraryFrom",mxResources.get("openLibraryFrom")),ka.style.borderLeft="1px solid lightgray",
-ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="50%");Y.appendChild(N.sidebar.container);Y.style.overflow="hidden"}function k(N,Y){if(EditorUi.windowed){var ea=N.editor.graph;ea.popupMenuHandler.hideMenu();if(null==N.sidebarWindow){Y=Math.min(ea.container.clientWidth-10,218);var ka="1"==urlParams.embedInline?650:Math.min(ea.container.clientHeight-40,650);N.sidebarWindow=new t(N,mxResources.get("shapes"),"1"==urlParams.sketch&&
-"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(ea.container.clientHeight-ka)/2):56,Y-6,ka-6,function(ja){e(N,ja)});N.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){N.sidebarWindow.window.fit()}));N.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);N.sidebarWindow.window.setVisible(!0);isLocalStorage&&N.getLocalData("sidebar",function(ja){N.sidebar.showEntries(ja,null,!0)});N.restoreLibraries()}else N.sidebarWindow.window.setVisible(null!=
-Y?Y:!N.sidebarWindow.window.isVisible())}else null==N.sidebarElt&&(N.sidebarElt=D(),e(N,N.sidebarElt),N.sidebarElt.style.border="none",N.sidebarElt.style.width="210px",N.sidebarElt.style.borderRight="1px solid gray"),ea=N.diagramContainer.parentNode,null!=N.sidebarElt.parentNode?(N.sidebarElt.parentNode.removeChild(N.sidebarElt),ea.style.left="0px"):(ea.parentNode.appendChild(N.sidebarElt),ea.style.left=N.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||
-"undefined"===typeof window.Menus)window.uiTheme=null;else{var n=0;try{n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(N){}var D=function(){var N=document.createElement("div");N.className="geSidebarContainer";N.style.position="absolute";N.style.width="100%";N.style.height="100%";N.style.border="1px solid whiteSmoke";N.style.overflowX="hidden";N.style.overflowY="auto";return N},t=function(N,Y,ea,ka,ja,V,J){var W=D();J(W);this.window=new mxWindow(Y,W,ea,ka,
-ja,V,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(Q,S){var ha=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;Q=Math.max(0,Math.min(Q,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));S=Math.max(0,Math.min(S,ha-la.clientHeight-
-2));this.getX()==Q&&this.getY()==S||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&(this.window.div.onselectstart=mxUtils.bind(this,function(Q){null==Q&&(Q=window.event);return null!=Q&&N.isSelectionAllowed(Q)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=
+EditorUi.initMinimalTheme=function(){function b(Q,X){if(EditorUi.windowed){var fa=Q.editor.graph;fa.popupMenuHandler.hideMenu();if(null==Q.formatWindow){X="1"==urlParams.sketch?Math.max(10,Q.diagramContainer.clientWidth-241):Math.max(10,Q.diagramContainer.clientWidth-248);var ka="1"==urlParams.winCtrls&&"1"==urlParams.sketch?80:60;fa="1"==urlParams.embedInline?580:"1"==urlParams.sketch?580:Math.min(566,fa.container.clientHeight-10);Q.formatWindow=new t(Q,mxResources.get("format"),X,ka,240,fa,function(V){var L=
+Q.createFormat(V);L.init();Q.addListener("darkModeChanged",mxUtils.bind(this,function(){L.refresh()}));return L});Q.formatWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){Q.formatWindow.window.fit()}));Q.formatWindow.window.minimumSize=new mxRectangle(0,0,240,80)}else Q.formatWindow.window.setVisible(null!=X?X:!Q.formatWindow.window.isVisible())}else{if(null==Q.formatElt){Q.formatElt=D();var ia=Q.createFormat(Q.formatElt);ia.init();Q.formatElt.style.border="none";Q.formatElt.style.width=
+"240px";Q.formatElt.style.borderLeft="1px solid gray";Q.formatElt.style.right="0px";Q.addListener("darkModeChanged",mxUtils.bind(this,function(){ia.refresh()}))}fa=Q.diagramContainer.parentNode;null!=Q.formatElt.parentNode?(Q.formatElt.parentNode.removeChild(Q.formatElt),fa.style.right="0px"):(fa.parentNode.appendChild(Q.formatElt),fa.style.right=Q.formatElt.style.width)}}function e(Q,X){function fa(L,ea){var O=Q.menus.get(L);L=V.addMenu(ea,mxUtils.bind(this,function(){O.funct.apply(this,arguments)}));
+L.style.cssText="position:absolute;border-top:1px solid lightgray;width:50%;height:24px;bottom:0px;text-align:center;cursor:pointer;padding:6px 0 0 0;cusor:pointer;";L.className="geTitle";X.appendChild(L);return L}var ka=document.createElement("div");ka.style.cssText="position:absolute;left:0;right:0;border-top:1px solid lightgray;height:24px;bottom:31px;text-align:center;cursor:pointer;padding:6px 0 0 0;";ka.className="geTitle";var ia=document.createElement("span");ia.style.fontSize="18px";ia.style.marginRight=
+"5px";ia.innerHTML="+";ka.appendChild(ia);mxUtils.write(ka,mxResources.get("moreShapes"));X.appendChild(ka);mxEvent.addListener(ka,"click",function(){Q.actions.get("shapes").funct()});var V=new Menubar(Q,X);!Editor.enableCustomLibraries||"1"==urlParams.embed&&"1"!=urlParams.libraries?ka.style.bottom="0":null!=Q.actions.get("newLibrary")?(ka=document.createElement("div"),ka.style.cssText="position:absolute;left:0px;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;",
+ka.className="geTitle",ia=document.createElement("span"),ia.style.cssText="position:relative;top:6px;",mxUtils.write(ia,mxResources.get("newLibrary")),ka.appendChild(ia),X.appendChild(ka),mxEvent.addListener(ka,"click",Q.actions.get("newLibrary").funct),ka=document.createElement("div"),ka.style.cssText="position:absolute;left:50%;width:50%;border-top:1px solid lightgray;height:30px;bottom:0px;text-align:center;cursor:pointer;padding:0px;border-left: 1px solid lightgray;",ka.className="geTitle",ia=
+document.createElement("span"),ia.style.cssText="position:relative;top:6px;",mxUtils.write(ia,mxResources.get("openLibrary")),ka.appendChild(ia),X.appendChild(ka),mxEvent.addListener(ka,"click",Q.actions.get("openLibrary").funct)):(ka=fa("newLibrary",mxResources.get("newLibrary")),ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="0",ka=fa("openLibraryFrom",mxResources.get("openLibraryFrom")),ka.style.borderLeft="1px solid lightgray",
+ka.style.boxSizing="border-box",ka.style.paddingRight="6px",ka.style.paddingLeft="6px",ka.style.height="32px",ka.style.left="50%");X.appendChild(Q.sidebar.container);X.style.overflow="hidden"}function k(Q,X){if(EditorUi.windowed){var fa=Q.editor.graph;fa.popupMenuHandler.hideMenu();if(null==Q.sidebarWindow){X=Math.min(fa.container.clientWidth-10,218);var ka="1"==urlParams.embedInline?650:Math.min(fa.container.clientHeight-40,650);Q.sidebarWindow=new t(Q,mxResources.get("shapes"),"1"==urlParams.sketch&&
+"1"!=urlParams.embedInline?66:10,"1"==urlParams.sketch&&"1"!=urlParams.embedInline?Math.max(30,(fa.container.clientHeight-ka)/2):56,X-6,ka-6,function(ia){e(Q,ia)});Q.sidebarWindow.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){Q.sidebarWindow.window.fit()}));Q.sidebarWindow.window.minimumSize=new mxRectangle(0,0,90,90);Q.sidebarWindow.window.setVisible(!0);isLocalStorage&&Q.getLocalData("sidebar",function(ia){Q.sidebar.showEntries(ia,null,!0)});Q.restoreLibraries()}else Q.sidebarWindow.window.setVisible(null!=
+X?X:!Q.sidebarWindow.window.isVisible())}else null==Q.sidebarElt&&(Q.sidebarElt=D(),e(Q,Q.sidebarElt),Q.sidebarElt.style.border="none",Q.sidebarElt.style.width="210px",Q.sidebarElt.style.borderRight="1px solid gray"),fa=Q.diagramContainer.parentNode,null!=Q.sidebarElt.parentNode?(Q.sidebarElt.parentNode.removeChild(Q.sidebarElt),fa.style.left="0px"):(fa.parentNode.appendChild(Q.sidebarElt),fa.style.left=Q.sidebarElt.style.width)}if("1"==urlParams.lightbox||"0"==urlParams.chrome||"undefined"===typeof window.Format||
+"undefined"===typeof window.Menus)window.uiTheme=null;else{var n=0;try{n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}catch(Q){}var D=function(){var Q=document.createElement("div");Q.className="geSidebarContainer";Q.style.position="absolute";Q.style.width="100%";Q.style.height="100%";Q.style.border="1px solid whiteSmoke";Q.style.overflowX="hidden";Q.style.overflowY="auto";return Q},t=function(Q,X,fa,ka,ia,V,L){var ea=D();L(ea);this.window=new mxWindow(X,ea,fa,
+ka,ia,V,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.setLocation=function(O,N){var ba=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,la=this.table.firstChild.firstChild.firstChild;O=Math.max(0,Math.min(O,(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-la.clientWidth-2));N=Math.max(0,Math.min(N,ba-la.clientHeight-
+2));this.getX()==O&&this.getY()==N||mxWindow.prototype.setLocation.apply(this,arguments)};mxClient.IS_SF&&(this.window.div.onselectstart=mxUtils.bind(this,function(O){null==O&&(O=window.event);return null!=O&&Q.isSelectionAllowed(O)}))};Editor.checkmarkImage=Graph.createSvgImage(22,18,'<path transform="translate(4 0)" d="M7.181,15.007a1,1,0,0,1-.793-0.391L3.222,10.5A1,1,0,1,1,4.808,9.274L7.132,12.3l6.044-8.86A1,1,0,1,1,14.83,4.569l-6.823,10a1,1,0,0,1-.8.437H7.181Z" fill="#29b6f2"/>').src;mxWindow.prototype.closeImage=
Graph.createSvgImage(18,10,'<path d="M 5 1 L 13 9 M 13 1 L 5 9" stroke="#C0C0C0" stroke-width="2"/>').src;mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="none"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke-width="2" style="stroke-opacity:0.4" stroke="#ffffff"/><path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');
mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR="#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity=
"0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.inactiveTabBackgroundColor="#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight="1"==urlParams.sketch?1:46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert="1"!=urlParams.sketch&&!mxClient.IS_IOS&&!mxClient.IS_ANDROID;
-EditorUi.prototype.setDarkMode=function(N){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(N);null==urlParams.dark&&(mxSettings.settings.darkMode=N,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var E=document.createElement("link");E.setAttribute("rel","stylesheet");E.setAttribute("href",STYLE_PATH+"/dark.css");E.setAttribute("charset","UTF-8");E.setAttribute("type",
-"text/css");EditorUi.prototype.doSetDarkMode=function(N){if(Editor.darkMode!=N){var Y=this.editor.graph;Editor.darkMode=N;this.spinner.opts.color=Editor.isDarkMode()?"#c0c0c0":"#000";Y.view.gridColor=Editor.isDarkMode()?Y.view.defaultDarkGridColor:Y.view.defaultGridColor;Y.defaultPageBackgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";Y.defaultPageBorderColor=Editor.isDarkMode()?"#505759":"#ffffff";Y.shapeBackgroundColor=Editor.isDarkMode()?Editor.darkColor:
-"#ffffff";Y.shapeForegroundColor=Editor.isDarkMode()?Editor.lightColor:"#000000";Y.defaultThemeName=Editor.isDarkMode()?"darkTheme":"default-style2";Y.graphHandler.previewColor=Editor.isDarkMode()?"#cccccc":"black";document.body.style.backgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";Y.loadStylesheet();null!=this.actions.layersWindow&&(N=this.actions.layersWindow.window.isVisible(),this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),
-this.actions.layersWindow=null,N&&window.setTimeout(this.actions.get("layers").funct,0));null!=this.menus.commentsWindow&&(this.menus.commentsWindow.window.setVisible(!1),this.menus.commentsWindow.destroy(),this.menus.commentsWindow=null);null!=this.ruler&&this.ruler.updateStyle();Graph.prototype.defaultPageBackgroundColor=Y.defaultPageBackgroundColor;Graph.prototype.defaultPageBorderColor=Y.defaultPageBorderColor;Graph.prototype.shapeBackgroundColor=Y.shapeBackgroundColor;Graph.prototype.shapeForegroundColor=
-Y.shapeForegroundColor;Graph.prototype.defaultThemeName=Y.defaultThemeName;StyleFormatPanel.prototype.defaultStrokeColor=Editor.isDarkMode()?"#cccccc":"black";BaseFormatPanel.prototype.buttonBackgroundColor=Editor.isDarkMode()?Editor.darkColor:"white";Format.inactiveTabBackgroundColor=Editor.isDarkMode()?"black":"#f0f0f0";Dialog.backdropColor=Editor.isDarkMode()?Editor.darkColor:"white";mxConstants.DROP_TARGET_COLOR=Editor.isDarkMode()?"#00ff00":"#0000FF";Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?
+EditorUi.prototype.setDarkMode=function(Q){this.spinner.spin(document.body,mxResources.get("working")+"...")&&window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();this.doSetDarkMode(Q);null==urlParams.dark&&(mxSettings.settings.darkMode=Q,mxSettings.save());this.fireEvent(new mxEventObject("darkModeChanged"))}),0)};var E=document.createElement("link");E.setAttribute("rel","stylesheet");E.setAttribute("href",STYLE_PATH+"/dark.css");E.setAttribute("charset","UTF-8");E.setAttribute("type",
+"text/css");EditorUi.prototype.doSetDarkMode=function(Q){if(Editor.darkMode!=Q){var X=this.editor.graph;Editor.darkMode=Q;this.spinner.opts.color=Editor.isDarkMode()?"#c0c0c0":"#000";X.view.gridColor=Editor.isDarkMode()?X.view.defaultDarkGridColor:X.view.defaultGridColor;X.defaultPageBackgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";X.defaultPageBorderColor=Editor.isDarkMode()?"#505759":"#ffffff";X.shapeBackgroundColor=Editor.isDarkMode()?Editor.darkColor:
+"#ffffff";X.shapeForegroundColor=Editor.isDarkMode()?Editor.lightColor:"#000000";X.defaultThemeName=Editor.isDarkMode()?"darkTheme":"default-style2";X.graphHandler.previewColor=Editor.isDarkMode()?"#cccccc":"black";document.body.style.backgroundColor="1"==urlParams.embedInline?"transparent":Editor.isDarkMode()?Editor.darkColor:"#ffffff";X.loadStylesheet();null!=this.actions.layersWindow&&(Q=this.actions.layersWindow.window.isVisible(),this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),
+this.actions.layersWindow=null,Q&&window.setTimeout(this.actions.get("layers").funct,0));null!=this.menus.commentsWindow&&(this.menus.commentsWindow.window.setVisible(!1),this.menus.commentsWindow.destroy(),this.menus.commentsWindow=null);null!=this.ruler&&this.ruler.updateStyle();Graph.prototype.defaultPageBackgroundColor=X.defaultPageBackgroundColor;Graph.prototype.defaultPageBorderColor=X.defaultPageBorderColor;Graph.prototype.shapeBackgroundColor=X.shapeBackgroundColor;Graph.prototype.shapeForegroundColor=
+X.shapeForegroundColor;Graph.prototype.defaultThemeName=X.defaultThemeName;StyleFormatPanel.prototype.defaultStrokeColor=Editor.isDarkMode()?"#cccccc":"black";BaseFormatPanel.prototype.buttonBackgroundColor=Editor.isDarkMode()?Editor.darkColor:"white";Format.inactiveTabBackgroundColor=Editor.isDarkMode()?"black":"#f0f0f0";Dialog.backdropColor=Editor.isDarkMode()?Editor.darkColor:"white";mxConstants.DROP_TARGET_COLOR=Editor.isDarkMode()?"#00ff00":"#0000FF";Editor.helpImage=Editor.isDarkMode()&&mxClient.IS_SVG?
Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMode()&&mxClient.IS_SVG?Editor.darkCheckmarkImage:Editor.lightCheckmarkImage;d.innerHTML=Editor.createMinimalCss();Editor.darkMode?null==E.parentNode&&document.getElementsByTagName("head")[0].appendChild(E):null!=E.parentNode&&E.parentNode.removeChild(E)}};Editor.createMinimalCss=function(){return"* { -webkit-font-smoothing: antialiased; }html body td.mxWindowTitle > div > img { padding: 8px 4px; }"+(Editor.isDarkMode()?
"html body td.mxWindowTitle > div > img { margin: -4px; }html body .geToolbarContainer .geMenuItem, html body .geToolbarContainer .geToolbarButton, html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem,html body .geMenubarContainer .geToolbarButton { filter: invert(1); }html body div.geToolbarContainer a.geInverted { filter: none; }html body .geMenubarContainer .geMenuItem .geMenuItem, html body .geMenubarContainer a.geMenuItem { color: #353535; }html > body > div > .geToolbarContainer { border: 1px solid #c0c0c0 !important; box-shadow: none !important; }html > body.geEditor > div > a.geItem { background-color: #2a2a2a; color: #cccccc; border-color: #505759; }html body .geTabContainer, html body .geTabContainer div, html body .geMenubarContainer { border-color: #505759 !important; }html body .mxCellEditor { color: #f0f0f0; }":
"html body div.geToolbarContainer a.geInverted { filter: invert(1); }html body.geEditor .geTabContainer div { border-color: #e5e5e5 !important; }")+'html > body > div > a.geItem { background-color: #ffffff; color: #707070; border-top: 1px solid lightgray; border-left: 1px solid lightgray; }html body .geMenubarContainer { border-bottom:1px solid lightgray;background-color:#ffffff; }html body .mxWindow button.geBtn { font-size:12px !important; margin-left: 0; }html body .geSidebarContainer *:not(svg *) { font-size:9pt; }html body table.mxWindow td.mxWindowPane div.mxWindowPane *:not(svg *) { font-size:9pt; }table.mxWindow * :not(svg *) { font-size:13px; }html body .mxWindow { z-index: 3; }html body div.diagramContainer button, html body button.geBtn { font-size:14px; font-weight:700; border-radius: 5px; }html body button.geBtn:active { opacity: 0.6; }html body a.geMenuItem { opacity: 0.75; cursor: pointer; user-select: none; }html body a.geMenuItem[disabled] { opacity: 0.2; }html body a.geMenuItem[disabled]:active { opacity: 0.2; }html body div.geActivePage { opacity: 0.7; }html body a.geMenuItem:active { opacity: 0.2; }html body .geToolbarButton { opacity: 0.3; }html body .geToolbarButton:active { opacity: 0.15; }html body .geStatus:active { opacity: 0.5; }.geStatus > div { box-sizing: border-box; max-width: 100%; text-overflow: ellipsis; }html body .geMenubarContainer .geStatus { margin-top: 0px !important; }html table.mxPopupMenu tr.mxPopupMenuItemHover:active { opacity: 0.7; }html body .geDialog input, html body .geToolbarContainer input, html body .mxWindow input {padding: 2px; display: inline-block; }html body .mxWindow input[type="checkbox"] {padding: 0px; }div.geDialog { border-radius: 5px; }html body div.geDialog button.geBigButton { color: '+
@@ -3947,101 +3947,101 @@ Editor.darkHelpImage:Editor.lightHelpImage;Editor.checkmarkImage=Editor.isDarkMo
(Editor.isDarkMode()?Editor.darkColor:"rgb(249, 249, 249)")+" !important; color: #A0A0A0 !important; } html div.geActivePage { background: "+(Editor.isDarkMode()?Editor.darkColor:"#fff")+" !important; "+(Editor.isDarkMode()?"":"color: #353535 !important; } ")+"html div.mxRubberband { border:1px solid; border-color: #29b6f2 !important; background:rgba(41,182,242,0.4) !important; } html body div.mxPopupMenu { border-radius:5px; border:1px solid #c0c0c0; padding:5px 0 5px 0; box-shadow: 0px 4px 17px -4px rgba(96,96,96,1); } html table.mxPopupMenu td.mxPopupMenuItem { color: "+
(Editor.isDarkMode()?"#cccccc":"#353535")+"; font-size: 14px; padding-top: 4px; padding-bottom: 4px; }html table.mxPopupMenu tr.mxPopupMenuItemHover { background-color: "+(Editor.isDarkMode()?"#000000":"#29b6f2")+"; }html tr.mxPopupMenuItemHover td.mxPopupMenuItem, html tr.mxPopupMenuItemHover td.mxPopupMenuItem span { color: "+(Editor.isDarkMode()?"#cccccc":"#ffffff")+" !important; }html tr.mxPopupMenuItem, html td.mxPopupMenuItem { transition-property: none !important; }html table.mxPopupMenu hr { height: 2px; background-color: rgba(0,0,0,.07); margin: 5px 0; }html body td.mxWindowTitle { padding-right: 14px; }html td.mxWindowTitle div { top: 0px !important; }"+
(mxClient.IS_IOS?"html input[type=checkbox], html input[type=radio] { height:12px; }":"")+("1"==urlParams.sketch?"a.geStatus > div { overflow: hidden; text-overflow: ellipsis; max-width: 100%; }":"")};var d=document.createElement("style");d.type="text/css";d.innerHTML=Editor.createMinimalCss();document.getElementsByTagName("head")[0].appendChild(d);Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var f=EditorUi.prototype.updateTabContainer;
-EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(N,
-Y){null!=Y.shortcut&&900>n&&!mxClient.IS_IOS?N.firstChild.nextSibling.setAttribute("title",Y.shortcut):m.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var N=this.userElement;N.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+N.style.display;N.className="geToolbarButton";N.innerText="";N.style.backgroundImage="url("+Editor.userImage+")";N.style.backgroundPosition="center center";
-N.style.backgroundRepeat="no-repeat";N.style.backgroundSize="24px 24px";N.style.height="24px";N.style.width="24px";N.style.cssFloat="right";N.setAttribute("title",mxResources.get("changeUser"));if("none"!=N.style.display){N.style.display="inline-block";var Y=this.getCurrentFile();if(null!=Y&&Y.isRealtimeEnabled()&&Y.isRealtimeSupported()){var ea=document.createElement("img");ea.setAttribute("border","0");ea.style.position="absolute";ea.style.left="18px";ea.style.top="2px";ea.style.width="12px";ea.style.height=
-"12px";var ka=Y.getRealtimeError();Y=Y.getRealtimeState();var ja=mxResources.get("realtimeCollaboration");1==Y?(ea.src=Editor.syncImage,ja+=" ("+mxResources.get("online")+")"):(ea.src=Editor.syncProblemImage,ja=null!=ka&&null!=ka.message?ja+(" ("+ka.message+")"):ja+(" ("+mxResources.get("disconnected")+")"));ea.setAttribute("title",ja);N.style.paddingRight="4px";N.appendChild(ea)}}}};var y=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){y.apply(this,arguments);if(null!=
-this.shareButton){var N=this.shareButton;N.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";N.className="geToolbarButton";N.innerText="";N.style.backgroundImage="url("+Editor.shareImage+")";N.style.backgroundPosition="center center";N.style.backgroundRepeat="no-repeat";N.style.backgroundSize="24px 24px";N.style.height="24px";N.style.width="24px";"1"==urlParams.sketch&&(this.shareButton.style.display="none")}null!=this.buttonContainer&&(this.buttonContainer.style.marginTop=
-"-2px",this.buttonContainer.style.paddingTop="4px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer&&"1"!=urlParams.embedInline){var N=document.createElement("div");N.style.display="inline-block";N.style.position="relative";N.style.marginTop="6px";N.style.marginRight="4px";var Y=document.createElement("a");Y.className="geMenuItem gePrimaryBtn";Y.style.marginLeft="8px";Y.style.padding="6px";if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var ea="1"==urlParams.publishClose?
-mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(Y,ea);Y.setAttribute("title",ea);mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));N.appendChild(Y)}}else mxUtils.write(Y,mxResources.get("save")),Y.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),N.appendChild(Y),"1"==urlParams.saveAndExit&&(Y=document.createElement("a"),
-mxUtils.write(Y,mxResources.get("saveAndExit")),Y.setAttribute("title",mxResources.get("saveAndExit")),Y.className="geMenuItem",Y.style.marginLeft="6px",Y.style.padding="6px",mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),N.appendChild(Y));"1"!=urlParams.noExitBtn&&(Y=document.createElement("a"),ea="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(Y,ea),Y.setAttribute("title",ea),Y.className="geMenuItem",
-Y.style.marginLeft="6px",Y.style.padding="6px",mxEvent.addListener(Y,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),N.appendChild(Y));this.buttonContainer.appendChild(N);this.buttonContainer.style.top="6px";this.editor.fireEvent(new mxEventObject("statusChanged"))}};var F=Sidebar.prototype.getTooltipOffset;Sidebar.prototype.getTooltipOffset=function(N,Y){if(null==this.editorUi.sidebarWindow||mxUtils.isAncestorNode(this.editorUi.picker,N)){var ea=mxUtils.getOffset(this.editorUi.picker);
-ea.x+=this.editorUi.picker.offsetWidth+4;ea.y+=N.offsetTop-Y.height/2+16;return ea}var ka=F.apply(this,arguments);ea=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);ka.x+=ea.x-16;ka.y+=ea.y;return ka};var C=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(N,Y,ea){var ka=this.editorUi.editor.graph;N.smartSeparators=!0;C.apply(this,arguments);"1"==urlParams.sketch?ka.isEnabled()&&(N.addSeparator(),1==ka.getSelectionCount()&&this.addMenuItems(N,["-","lockUnlock"],null,
-ea)):1==ka.getSelectionCount()?(ka.isCellFoldable(ka.getSelectionCell())&&this.addMenuItems(N,ka.isCellCollapsed(Y)?["expand"]:["collapse"],null,ea),this.addMenuItems(N,["collapsible","-","lockUnlock","enterGroup"],null,ea),N.addSeparator(),this.addSubmenu("layout",N)):ka.isSelectionEmpty()&&ka.isEnabled()?(N.addSeparator(),this.addMenuItems(N,["editData"],null,ea),N.addSeparator(),this.addSubmenu("layout",N),this.addSubmenu("insert",N),this.addMenuItems(N,["-","exitGroup"],null,ea)):ka.isEnabled()&&
-this.addMenuItems(N,["-","lockUnlock"],null,ea)};var I=Menus.prototype.addPopupMenuEditItems;Menus.prototype.addPopupMenuEditItems=function(N,Y,ea){I.apply(this,arguments);this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(N,["copyAsImage"],null,ea)};EditorUi.prototype.toggleFormatPanel=function(N){null!=this.formatWindow?this.formatWindow.window.setVisible(null!=N?N:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};
+EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom="1"==urlParams.sketch?"0px":this.tabContainerHeight+"px");f.apply(this,arguments)};var g=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){g.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(Q,
+X){null!=X.shortcut&&900>n&&!mxClient.IS_IOS?Q.firstChild.nextSibling.setAttribute("title",X.shortcut):m.apply(this,arguments)};var q=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){q.apply(this,arguments);if(null!=this.userElement){var Q=this.userElement;Q.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+Q.style.display;Q.className="geToolbarButton";Q.innerText="";Q.style.backgroundImage="url("+Editor.userImage+")";Q.style.backgroundPosition="center center";
+Q.style.backgroundRepeat="no-repeat";Q.style.backgroundSize="24px 24px";Q.style.height="24px";Q.style.width="24px";Q.style.cssFloat="right";Q.setAttribute("title",mxResources.get("changeUser"));if("none"!=Q.style.display){Q.style.display="inline-block";var X=this.getCurrentFile();if(null!=X&&X.isRealtimeEnabled()&&X.isRealtimeSupported()){var fa=document.createElement("img");fa.setAttribute("border","0");fa.style.position="absolute";fa.style.left="18px";fa.style.top="2px";fa.style.width="12px";fa.style.height=
+"12px";var ka=X.getRealtimeError();X=X.getRealtimeState();var ia=mxResources.get("realtimeCollaboration");1==X?(fa.src=Editor.syncImage,ia+=" ("+mxResources.get("online")+")"):(fa.src=Editor.syncProblemImage,ia=null!=ka&&null!=ka.message?ia+(" ("+ka.message+")"):ia+(" ("+mxResources.get("disconnected")+")"));fa.setAttribute("title",ia);Q.style.paddingRight="4px";Q.appendChild(fa)}}}};var y=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){y.apply(this,arguments);if(null!=
+this.shareButton){var Q=this.shareButton;Q.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";Q.className="geToolbarButton";Q.innerText="";Q.style.backgroundImage="url("+Editor.shareImage+")";Q.style.backgroundPosition="center center";Q.style.backgroundRepeat="no-repeat";Q.style.backgroundSize="24px 24px";Q.style.height="24px";Q.style.width="24px";"1"==urlParams.sketch&&(this.shareButton.style.display="none")}null!=this.buttonContainer&&(this.buttonContainer.style.marginTop=
+"-2px",this.buttonContainer.style.paddingTop="4px")};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer&&"1"!=urlParams.embedInline){var Q=document.createElement("div");Q.style.display="inline-block";Q.style.position="relative";Q.style.marginTop="6px";Q.style.marginRight="4px";var X=document.createElement("a");X.className="geMenuItem gePrimaryBtn";X.style.marginLeft="8px";X.style.padding="6px";if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var fa="1"==urlParams.publishClose?
+mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(X,fa);X.setAttribute("title",fa);mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));Q.appendChild(X)}}else mxUtils.write(X,mxResources.get("save")),X.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),Q.appendChild(X),"1"==urlParams.saveAndExit&&(X=document.createElement("a"),
+mxUtils.write(X,mxResources.get("saveAndExit")),X.setAttribute("title",mxResources.get("saveAndExit")),X.className="geMenuItem",X.style.marginLeft="6px",X.style.padding="6px",mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),Q.appendChild(X));"1"!=urlParams.noExitBtn&&(X=document.createElement("a"),fa="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(X,fa),X.setAttribute("title",fa),X.className="geMenuItem",
+X.style.marginLeft="6px",X.style.padding="6px",mxEvent.addListener(X,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),Q.appendChild(X));this.buttonContainer.appendChild(Q);this.buttonContainer.style.top="6px";this.editor.fireEvent(new mxEventObject("statusChanged"))}};var F=Sidebar.prototype.getTooltipOffset;Sidebar.prototype.getTooltipOffset=function(Q,X){if(null==this.editorUi.sidebarWindow||mxUtils.isAncestorNode(this.editorUi.picker,Q)){var fa=mxUtils.getOffset(this.editorUi.picker);
+fa.x+=this.editorUi.picker.offsetWidth+4;fa.y+=Q.offsetTop-X.height/2+16;return fa}var ka=F.apply(this,arguments);fa=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);ka.x+=fa.x-16;ka.y+=fa.y;return ka};var C=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(Q,X,fa){var ka=this.editorUi.editor.graph;Q.smartSeparators=!0;C.apply(this,arguments);"1"==urlParams.sketch?ka.isEnabled()&&(Q.addSeparator(),1==ka.getSelectionCount()&&this.addMenuItems(Q,["-","lockUnlock"],null,
+fa)):1==ka.getSelectionCount()?(ka.isCellFoldable(ka.getSelectionCell())&&this.addMenuItems(Q,ka.isCellCollapsed(X)?["expand"]:["collapse"],null,fa),this.addMenuItems(Q,["collapsible","-","lockUnlock","enterGroup"],null,fa),Q.addSeparator(),this.addSubmenu("layout",Q)):ka.isSelectionEmpty()&&ka.isEnabled()?(Q.addSeparator(),this.addMenuItems(Q,["editData"],null,fa),Q.addSeparator(),this.addSubmenu("layout",Q),this.addSubmenu("insert",Q),this.addMenuItems(Q,["-","exitGroup"],null,fa)):ka.isEnabled()&&
+this.addMenuItems(Q,["-","lockUnlock"],null,fa)};var I=Menus.prototype.addPopupMenuEditItems;Menus.prototype.addPopupMenuEditItems=function(Q,X,fa){I.apply(this,arguments);this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(Q,["copyAsImage"],null,fa)};EditorUi.prototype.toggleFormatPanel=function(Q){null!=this.formatWindow?this.formatWindow.window.setVisible(null!=Q?Q:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};
var G=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&
(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);null!=this.menus.findReplaceWindow&&(this.menus.findReplaceWindow.window.setVisible(!1),this.menus.findReplaceWindow.window.destroy(),
-this.menus.findReplaceWindow=null);G.apply(this,arguments)};var aa=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(N){aa.apply(this,arguments);if(N){var Y=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;1E3<=Y&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=Y||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),
-null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var ca=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(N){N=ca.apply(this,arguments);var Y=this.editorUi,ea=Y.editor.graph;if(ea.isEnabled()&&"1"==urlParams.sketch){var ka=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(ja,V){Y.setSketchMode(!Editor.sketchMode);null!=V&&mxEvent.isShiftDown(V)||ea.updateCellStyles({sketch:ja?
-"1":null},ea.getVerticesAndEdges())},{install:function(ja){this.listener=function(){ja(Editor.sketchMode)};Y.addListener("sketchModeChanged",this.listener)},destroy:function(){Y.removeListener(this.listener)}});N.appendChild(ka)}return N};var ba=Menus.prototype.init;Menus.prototype.init=function(){ba.apply(this,arguments);var N=this.editorUi,Y=N.editor.graph;N.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";N.actions.get("createShape").label=mxResources.get("shape")+"...";N.actions.get("outline").label=
-mxResources.get("outline")+"...";N.actions.get("layers").label=mxResources.get("layers")+"...";N.actions.get("tags").label=mxResources.get("tags")+"...";N.actions.get("comments").label=mxResources.get("comments")+"...";var ea=N.actions.put("toggleDarkMode",new Action(mxResources.get("dark"),function(S){N.setDarkMode(!Editor.darkMode)}));ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.isDarkMode()});ea=N.actions.put("toggleSketchMode",new Action(mxResources.get("sketch"),function(S){N.setSketchMode(!Editor.sketchMode)}));
-ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.sketchMode});ea=N.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(S){N.setPagesVisible(!Editor.pagesVisible)}));ea.setToggleAction(!0);ea.setSelectedCallback(function(){return Editor.pagesVisible});N.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){Y.popupMenuHandler.hideMenu();N.showImportCsvDialog()}));N.actions.put("importText",new Action(mxResources.get("text")+"...",
-function(){var S=new ParseDialog(N,"Insert from Text");N.showDialog(S.container,620,420,!0,!1);S.init()}));N.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var S=new ParseDialog(N,"Insert from Text","formatSql");N.showDialog(S.container,620,420,!0,!1);S.init()}));N.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){k(N)},null,null,Editor.ctrlKey+"+Shift+K"));N.actions.put("toggleFormat",new Action(mxResources.get("format")+
-"...",function(){b(N)})).shortcut=N.actions.get("formatPanel").shortcut;EditorUi.enablePlantUml&&!N.isOffline()&&N.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var S=new ParseDialog(N,mxResources.get("plantUml")+"...","plantUml");N.showDialog(S.container,620,420,!0,!1);S.init()}));N.actions.put("mermaid",new Action(mxResources.get("mermaid")+"...",function(){var S=new ParseDialog(N,mxResources.get("mermaid")+"...","mermaid");N.showDialog(S.container,620,420,!0,!1);
-S.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(S,ha){var la=this.editorUi.editor.graph,u=la.getSelectionCell();ka.call(this,S,u,null,ha);this.addMenuItems(S,["editTooltip"],ha);la.model.isVertex(u)&&this.addMenuItems(S,["editGeometry"],ha);this.addMenuItems(S,["-","edit"],ha)})));this.addPopupMenuCellEditItems=function(S,ha,la,u){S.addSeparator();this.addSubmenu("editCell",S,u,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
-function(S,ha){var la=N.getCurrentFile();N.menus.addMenuItems(S,["new"],ha);N.menus.addSubmenu("openFrom",S,ha);isLocalStorage&&this.addSubmenu("openRecent",S,ha);S.addSeparator(ha);null!=la&&la.constructor==DriveFile?N.menus.addMenuItems(S,["save","rename","makeCopy","moveToFolder"],ha):(N.menus.addMenuItems(S,["save","saveAs","-","rename"],ha),N.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(S,["upload"],ha):N.menus.addMenuItems(S,["makeCopy"],
-ha));S.addSeparator(ha);null!=la&&(la.isRevisionHistorySupported()&&N.menus.addMenuItems(S,["revisionHistory"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||N.menus.addMenuItems(S,["synchronize"],ha));N.menus.addMenuItems(S,["autosave"],ha);if(null!=la&&(S.addSeparator(ha),la.constructor==DriveFile&&N.menus.addMenuItems(S,["share"],ha),null!=N.fileNode&&"1"!=urlParams.embedInline)){var u=null!=la.getTitle()?la.getTitle():N.defaultFilename;(la.constructor==
-DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(u)&&!/(\.svg)$/i.test(u))&&this.addMenuItems(S,["-","properties"],ha)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(S,ha){var la=N.getCurrentFile();N.menus.addSubmenu("extras",S,ha,mxResources.get("preferences"));S.addSeparator(ha);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)N.menus.addMenuItems(S,"new open - synchronize - save saveAs -".split(" "),ha);else if("1"==urlParams.embed||N.mode==App.MODE_ATLAS){"1"!=
-urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&N.menus.addMenuItems(S,["-","save"],ha);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||N.mode==App.MODE_ATLAS)N.menus.addMenuItems(S,["saveAndExit"],ha),null!=la&&la.isRevisionHistorySupported()&&N.menus.addMenuItems(S,["revisionHistory"],ha);S.addSeparator(ha)}else N.mode==App.MODE_ATLAS?N.menus.addMenuItems(S,["save","synchronize","-"],ha):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(N.menus.addMenuItems(S,
-["new"],ha),N.menus.addSubmenu("openFrom",S,ha),isLocalStorage&&this.addSubmenu("openRecent",S,ha),S.addSeparator(ha),null!=la&&(la.constructor==DriveFile&&N.menus.addMenuItems(S,["share"],ha),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||N.menus.addMenuItems(S,["synchronize"],ha)),S.addSeparator(ha),N.menus.addSubmenu("save",S,ha)):N.menus.addSubmenu("file",S,ha));N.menus.addSubmenu("exportAs",S,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?N.menus.addMenuItems(S,
-["import"],ha):"1"!=urlParams.noFileMenu&&N.menus.addSubmenu("importFrom",S,ha);N.commentsSupported()&&N.menus.addMenuItems(S,["-","comments"],ha);N.menus.addMenuItems(S,"- findReplace outline layers tags - pageSetup".split(" "),ha);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||N.menus.addMenuItems(S,["print"],ha);"1"!=urlParams.sketch&&null!=la&&null!=N.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():N.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
-this.addMenuItems(S,["-","properties"]));S.addSeparator(ha);N.menus.addSubmenu("help",S,ha);"1"==urlParams.embed||N.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||N.mode==App.MODE_ATLAS)&&N.menus.addMenuItems(S,["-","exit"],ha):"1"!=urlParams.noFileMenu&&N.menus.addMenuItems(S,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(S,ha){var la=N.getCurrentFile();null!=la&&la.constructor==DriveFile?N.menus.addMenuItems(S,["save","makeCopy","-","rename","moveToFolder"],ha):(N.menus.addMenuItems(S,
-["save","saveAs","-","rename"],ha),N.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(S,["upload"],ha):N.menus.addMenuItems(S,["makeCopy"],ha));N.menus.addMenuItems(S,["-","autosave"],ha);null!=la&&la.isRevisionHistorySupported()&&N.menus.addMenuItems(S,["-","revisionHistory"],ha)})));var ja=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(S,ha){ja.funct(S,ha);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||N.menus.addMenuItems(S,
-["publishLink"],ha);N.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(S.addSeparator(ha),N.menus.addSubmenu("embed",S,ha))})));var V=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(S,ha){N.menus.addInsertTableCellItem(S,ha)})));if("1"==urlParams.sketch){var J=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(S,ha){J.funct(S,ha);this.addMenuItems(S,["-","pageScale","-","ruler"],ha)})))}this.put("extras",new Menu(mxUtils.bind(this,function(S,ha){null!=V&&
-N.menus.addSubmenu("language",S,ha);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&N.mode!=App.MODE_ATLAS&&N.menus.addSubmenu("theme",S,ha);N.menus.addSubmenu("units",S,ha);S.addSeparator(ha);"1"!=urlParams.sketch&&N.menus.addMenuItems(S,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ha);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&N.mode!=App.MODE_ATLAS&&N.menus.addMenuItems(S,["-","showStartScreen",
-"search","scratchpad"],ha);S.addSeparator(ha);"1"==urlParams.sketch?N.menus.addMenuItems(S,"configuration - copyConnect collapseExpand tooltips -".split(" "),ha):(N.mode!=App.MODE_ATLAS&&N.menus.addMenuItem(S,"configuration",ha),!N.isOfflineApp()&&isLocalStorage&&N.mode!=App.MODE_ATLAS&&N.menus.addMenuItem(S,"plugins",ha));EditorUi.isElectronApp&&N.menus.addMenuItems(S,["-","spellCheck","autoBkp","drafts","-"],ha);var la=N.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&
-this.addMenuItems(S,["-","showRemoteCursors","shareCursor","-"],ha);S.addSeparator(ha);N.mode!=App.MODE_ATLAS&&this.addMenuItems(S,["fullscreen"],ha);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(S,["toggleDarkMode"],ha);S.addSeparator(ha)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(S,ha){N.menus.addMenuItems(S,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ha)})));mxUtils.bind(this,
-function(){var S=this.get("insert"),ha=S.funct;S.funct=function(la,u){"1"==urlParams.sketch?(N.insertTemplateEnabled&&!N.isOffline()&&N.menus.addMenuItems(la,["insertTemplate"],u),N.menus.addMenuItems(la,["insertImage","insertLink","-"],u),N.menus.addSubmenu("insertAdvanced",la,u,mxResources.get("advanced")),N.menus.addSubmenu("layout",la,u)):(ha.apply(this,arguments),N.menus.addSubmenu("table",la,u))}})();var W="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
-Q=function(S,ha,la,u){S.addItem(la,null,mxUtils.bind(this,function(){var H=new CreateGraphDialog(N,la,u);N.showDialog(H.container,620,420,!0,!1);H.init()}),ha)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(S,ha){for(var la=0;la<W.length;la++)"-"==W[la]?S.addSeparator(ha):Q(S,ha,mxResources.get(W[la])+"...",W[la])})))};EditorUi.prototype.installFormatToolbar=function(N){var Y=this.editor.graph,ea=document.createElement("div");ea.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
-Y.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(ka,ja){0<Y.getSelectionCount()?(N.appendChild(ea),ea.innerHTML="Selected: "+Y.getSelectionCount()):null!=ea.parentNode&&ea.parentNode.removeChild(ea)}))};var Z=!1;EditorUi.prototype.initFormatWindow=function(){if(!Z&&null!=this.formatWindow){Z=!0;this.formatWindow.window.setClosable(!1);var N=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){N.apply(this,arguments);this.minimized?
-(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(Y){mxEvent.getSource(Y)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var qa=EditorUi.prototype.init;EditorUi.prototype.init=
-function(){function N(va,ya,Na){var Ja=V.menus.get(va),Pa=S.addMenu(mxResources.get(va),mxUtils.bind(this,function(){Ja.funct.apply(this,arguments)}),Q);Pa.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";Pa.style.display="inline-block";Pa.style.boxSizing="border-box";Pa.style.top="6px";Pa.style.marginRight="6px";Pa.style.height="30px";Pa.style.paddingTop="6px";Pa.style.paddingBottom="6px";Pa.style.cursor="pointer";Pa.setAttribute("title",mxResources.get(va));V.menus.menuCreated(Ja,
-Pa,"geMenuItem");null!=Na?(Pa.style.backgroundImage="url("+Na+")",Pa.style.backgroundPosition="center center",Pa.style.backgroundRepeat="no-repeat",Pa.style.backgroundSize="24px 24px",Pa.style.width="34px",Pa.innerText=""):ya||(Pa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Pa.style.backgroundPosition="right 6px center",Pa.style.backgroundRepeat="no-repeat",Pa.style.paddingRight="22px");return Pa}function Y(va,ya,Na,Ja,Pa,Ya){var cb=document.createElement("a");cb.className=
-"1"==urlParams.sketch?"geToolbarButton":"geMenuItem";cb.style.display="inline-block";cb.style.boxSizing="border-box";cb.style.height="30px";cb.style.padding="6px";cb.style.position="relative";cb.style.verticalAlign="top";cb.style.top="0px";"1"==urlParams.sketch&&(cb.style.borderStyle="none",cb.style.boxShadow="none",cb.style.padding="6px",cb.style.margin="0px");null!=V.statusContainer?W.insertBefore(cb,V.statusContainer):W.appendChild(cb);null!=Ya?(cb.style.backgroundImage="url("+Ya+")",cb.style.backgroundPosition=
-"center center",cb.style.backgroundRepeat="no-repeat",cb.style.backgroundSize="24px 24px",cb.style.width="34px"):mxUtils.write(cb,va);mxEvent.addListener(cb,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(fb){fb.preventDefault()}));mxEvent.addListener(cb,"click",function(fb){"disabled"!=cb.getAttribute("disabled")&&ya(fb);mxEvent.consume(fb)});null==Na&&(cb.style.marginRight="4px");null!=Ja&&cb.setAttribute("title",Ja);null!=Pa&&(va=function(){Pa.isEnabled()?(cb.removeAttribute("disabled"),
-cb.style.cursor="pointer"):(cb.setAttribute("disabled","disabled"),cb.style.cursor="default")},Pa.addListener("stateChanged",va),J.addListener("enabledChanged",va),va());return cb}function ea(va,ya,Na){Na=document.createElement("div");Na.className="geMenuItem";Na.style.display="inline-block";Na.style.verticalAlign="top";Na.style.marginRight="6px";Na.style.padding="0 4px 0 4px";Na.style.height="30px";Na.style.position="relative";Na.style.top="0px";"1"==urlParams.sketch&&(Na.style.boxShadow="none");
-for(var Ja=0;Ja<va.length;Ja++)null!=va[Ja]&&("1"==urlParams.sketch&&(va[Ja].style.padding="10px 8px",va[Ja].style.width="30px"),va[Ja].style.margin="0px",va[Ja].style.boxShadow="none",Na.appendChild(va[Ja]));null!=ya&&mxUtils.setOpacity(Na,ya);null!=V.statusContainer&&"1"!=urlParams.sketch?W.insertBefore(Na,V.statusContainer):W.appendChild(Na);return Na}function ka(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(da.style.left=58>R.offsetTop-R.offsetHeight/2?"70px":"10px");else{for(var va=
-W.firstChild;null!=va;){var ya=va.nextSibling;"geMenuItem"!=va.className&&"geItem"!=va.className||va.parentNode.removeChild(va);va=ya}Q=W.firstChild;n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;va=1E3>n||"1"==urlParams.sketch;var Na=null;va||(Na=N("diagram"));ya=va?N("diagram",null,Editor.drawLogoImage):null;null!=ya&&(Na=ya);ea([Na,Y(mxResources.get("shapes"),V.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),V.actions.get("image"),va?Editor.shapesImage:
-null),Y(mxResources.get("format"),V.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+V.actions.get("formatPanel").shortcut+")",V.actions.get("image"),va?Editor.formatImage:null)],va?60:null);ya=N("insert",!0,va?O:null);ea([ya,Y(mxResources.get("delete"),V.actions.get("delete").funct,null,mxResources.get("delete"),V.actions.get("delete"),va?Editor.trashImage:null)],va?60:null);411<=n&&(ea([z,L],60),520<=n&&ea([za,640<=n?Y("",Sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+
-" +)",Sa,Editor.zoomInImage):null,640<=n?Y("",$a.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",$a,Editor.zoomOutImage):null],60))}null!=Na&&(mxEvent.disableContextMenu(Na),mxEvent.addGestureListeners(Na,mxUtils.bind(this,function(Ja){(mxEvent.isShiftDown(Ja)||mxEvent.isAltDown(Ja)||mxEvent.isMetaDown(Ja)||mxEvent.isControlDown(Ja)||mxEvent.isPopupTrigger(Ja))&&V.appIconClicked(Ja)}),null,null));ya=V.menus.get("language");null!=ya&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=
-n&&"1"!=urlParams.sketch?(null==Ma&&(ya=S.addMenu("",ya.funct),ya.setAttribute("title",mxResources.get("language")),ya.className="geToolbarButton",ya.style.backgroundImage="url("+Editor.globeImage+")",ya.style.backgroundPosition="center center",ya.style.backgroundRepeat="no-repeat",ya.style.backgroundSize="24px 24px",ya.style.position="absolute",ya.style.height="24px",ya.style.width="24px",ya.style.zIndex="1",ya.style.right="8px",ya.style.cursor="pointer",ya.style.top="1"==urlParams.embed?"12px":
-"11px",W.appendChild(ya),Ma=ya),V.buttonContainer.style.paddingRight="34px"):(V.buttonContainer.style.paddingRight="4px",null!=Ma&&(Ma.parentNode.removeChild(Ma),Ma=null))}qa.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 ja=document.createElement("div");ja.style.cssText=
-"position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";ja.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(ja);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=
+this.menus.findReplaceWindow=null);G.apply(this,arguments)};var Z=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(Q){Z.apply(this,arguments);if(Q){var X=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;1E3<=X&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=X||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),
+null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var ca=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(Q){Q=ca.apply(this,arguments);var X=this.editorUi,fa=X.editor.graph;if(fa.isEnabled()&&"1"==urlParams.sketch){var ka=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(ia,V){X.setSketchMode(!Editor.sketchMode);null!=V&&mxEvent.isShiftDown(V)||fa.updateCellStyles({sketch:ia?
+"1":null},fa.getVerticesAndEdges())},{install:function(ia){this.listener=function(){ia(Editor.sketchMode)};X.addListener("sketchModeChanged",this.listener)},destroy:function(){X.removeListener(this.listener)}});Q.appendChild(ka)}return Q};var aa=Menus.prototype.init;Menus.prototype.init=function(){aa.apply(this,arguments);var Q=this.editorUi,X=Q.editor.graph;Q.actions.get("editDiagram").label=mxResources.get("formatXml")+"...";Q.actions.get("createShape").label=mxResources.get("shape")+"...";Q.actions.get("outline").label=
+mxResources.get("outline")+"...";Q.actions.get("layers").label=mxResources.get("layers")+"...";Q.actions.get("tags").label=mxResources.get("tags")+"...";Q.actions.get("comments").label=mxResources.get("comments")+"...";var fa=Q.actions.put("toggleDarkMode",new Action(mxResources.get("dark"),function(N){Q.setDarkMode(!Editor.darkMode)}));fa.setToggleAction(!0);fa.setSelectedCallback(function(){return Editor.isDarkMode()});fa=Q.actions.put("toggleSketchMode",new Action(mxResources.get("sketch"),function(N){Q.setSketchMode(!Editor.sketchMode)}));
+fa.setToggleAction(!0);fa.setSelectedCallback(function(){return Editor.sketchMode});fa=Q.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(N){Q.setPagesVisible(!Editor.pagesVisible)}));fa.setToggleAction(!0);fa.setSelectedCallback(function(){return Editor.pagesVisible});Q.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){X.popupMenuHandler.hideMenu();Q.showImportCsvDialog()}));Q.actions.put("importText",new Action(mxResources.get("text")+"...",
+function(){var N=new ParseDialog(Q,"Insert from Text");Q.showDialog(N.container,620,420,!0,!1);N.init()}));Q.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var N=new ParseDialog(Q,"Insert from Text","formatSql");Q.showDialog(N.container,620,420,!0,!1);N.init()}));Q.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){k(Q)},null,null,Editor.ctrlKey+"+Shift+K"));Q.actions.put("toggleFormat",new Action(mxResources.get("format")+
+"...",function(){b(Q)})).shortcut=Q.actions.get("formatPanel").shortcut;EditorUi.enablePlantUml&&!Q.isOffline()&&Q.actions.put("plantUml",new Action(mxResources.get("plantUml")+"...",function(){var N=new ParseDialog(Q,mxResources.get("plantUml")+"...","plantUml");Q.showDialog(N.container,620,420,!0,!1);N.init()}));Q.actions.put("mermaid",new Action(mxResources.get("mermaid")+"...",function(){var N=new ParseDialog(Q,mxResources.get("mermaid")+"...","mermaid");Q.showDialog(N.container,620,420,!0,!1);
+N.init()}));var ka=this.addPopupMenuCellEditItems;this.put("editCell",new Menu(mxUtils.bind(this,function(N,ba){var la=this.editorUi.editor.graph,u=la.getSelectionCell();ka.call(this,N,u,null,ba);this.addMenuItems(N,["editTooltip"],ba);la.model.isVertex(u)&&this.addMenuItems(N,["editGeometry"],ba);this.addMenuItems(N,["-","edit"],ba)})));this.addPopupMenuCellEditItems=function(N,ba,la,u){N.addSeparator();this.addSubmenu("editCell",N,u,mxResources.get("edit"))};this.put("file",new Menu(mxUtils.bind(this,
+function(N,ba){var la=Q.getCurrentFile();Q.menus.addMenuItems(N,["new"],ba);Q.menus.addSubmenu("openFrom",N,ba);isLocalStorage&&this.addSubmenu("openRecent",N,ba);N.addSeparator(ba);null!=la&&la.constructor==DriveFile?Q.menus.addMenuItems(N,["save","rename","makeCopy","moveToFolder"],ba):(Q.menus.addMenuItems(N,["save","saveAs","-","rename"],ba),Q.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(N,["upload"],ba):Q.menus.addMenuItems(N,["makeCopy"],
+ba));N.addSeparator(ba);null!=la&&(la.isRevisionHistorySupported()&&Q.menus.addMenuItems(N,["revisionHistory"],ba),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile&&null==la.fileHandle||Q.menus.addMenuItems(N,["synchronize"],ba));Q.menus.addMenuItems(N,["autosave"],ba);if(null!=la&&(N.addSeparator(ba),la.constructor==DriveFile&&Q.menus.addMenuItems(N,["share"],ba),null!=Q.fileNode&&"1"!=urlParams.embedInline)){var u=null!=la.getTitle()?la.getTitle():Q.defaultFilename;(la.constructor==
+DriveFile&&null!=la.sync&&la.sync.isConnected()||!/(\.html)$/i.test(u)&&!/(\.svg)$/i.test(u))&&this.addMenuItems(N,["-","properties"],ba)}})));this.put("diagram",new Menu(mxUtils.bind(this,function(N,ba){var la=Q.getCurrentFile();Q.menus.addSubmenu("extras",N,ba,mxResources.get("preferences"));N.addSeparator(ba);if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)Q.menus.addMenuItems(N,"new open - synchronize - save saveAs -".split(" "),ba);else if("1"==urlParams.embed||Q.mode==App.MODE_ATLAS){"1"!=
+urlParams.noSaveBtn&&"1"!=urlParams.embedInline&&Q.menus.addMenuItems(N,["-","save"],ba);if("1"==urlParams.saveAndExit||"1"==urlParams.noSaveBtn&&"0"!=urlParams.saveAndExit||Q.mode==App.MODE_ATLAS)Q.menus.addMenuItems(N,["saveAndExit"],ba),null!=la&&la.isRevisionHistorySupported()&&Q.menus.addMenuItems(N,["revisionHistory"],ba);N.addSeparator(ba)}else Q.mode==App.MODE_ATLAS?Q.menus.addMenuItems(N,["save","synchronize","-"],ba):"1"!=urlParams.noFileMenu&&("1"!=urlParams.sketch?(Q.menus.addMenuItems(N,
+["new"],ba),Q.menus.addSubmenu("openFrom",N,ba),isLocalStorage&&this.addSubmenu("openRecent",N,ba),N.addSeparator(ba),null!=la&&(la.constructor==DriveFile&&Q.menus.addMenuItems(N,["share"],ba),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||la.constructor==LocalFile||Q.menus.addMenuItems(N,["synchronize"],ba)),N.addSeparator(ba),Q.menus.addSubmenu("save",N,ba)):Q.menus.addSubmenu("file",N,ba));Q.menus.addSubmenu("exportAs",N,ba);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?Q.menus.addMenuItems(N,
+["import"],ba):"1"!=urlParams.noFileMenu&&Q.menus.addSubmenu("importFrom",N,ba);Q.commentsSupported()&&Q.menus.addMenuItems(N,["-","comments"],ba);Q.menus.addMenuItems(N,"- findReplace outline layers tags - pageSetup".split(" "),ba);"1"==urlParams.noFileMenu||mxClient.IS_IOS&&navigator.standalone||Q.menus.addMenuItems(N,["print"],ba);"1"!=urlParams.sketch&&null!=la&&null!=Q.fileNode&&"1"!=urlParams.embedInline&&(la=null!=la.getTitle()?la.getTitle():Q.defaultFilename,/(\.html)$/i.test(la)||/(\.svg)$/i.test(la)||
+this.addMenuItems(N,["-","properties"]));N.addSeparator(ba);Q.menus.addSubmenu("help",N,ba);"1"==urlParams.embed||Q.mode==App.MODE_ATLAS?("1"!=urlParams.noExitBtn||Q.mode==App.MODE_ATLAS)&&Q.menus.addMenuItems(N,["-","exit"],ba):"1"!=urlParams.noFileMenu&&Q.menus.addMenuItems(N,["-","close"])})));this.put("save",new Menu(mxUtils.bind(this,function(N,ba){var la=Q.getCurrentFile();null!=la&&la.constructor==DriveFile?Q.menus.addMenuItems(N,["save","makeCopy","-","rename","moveToFolder"],ba):(Q.menus.addMenuItems(N,
+["save","saveAs","-","rename"],ba),Q.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(N,["upload"],ba):Q.menus.addMenuItems(N,["makeCopy"],ba));Q.menus.addMenuItems(N,["-","autosave"],ba);null!=la&&la.isRevisionHistorySupported()&&Q.menus.addMenuItems(N,["-","revisionHistory"],ba)})));var ia=this.get("exportAs");this.put("exportAs",new Menu(mxUtils.bind(this,function(N,ba){ia.funct(N,ba);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||Q.menus.addMenuItems(N,
+["publishLink"],ba);Q.mode!=App.MODE_ATLAS&&"1"!=urlParams.extAuth&&(N.addSeparator(ba),Q.menus.addSubmenu("embed",N,ba))})));var V=this.get("language");this.put("table",new Menu(mxUtils.bind(this,function(N,ba){Q.menus.addInsertTableCellItem(N,ba)})));if("1"==urlParams.sketch){var L=this.get("units");this.put("units",new Menu(mxUtils.bind(this,function(N,ba){L.funct(N,ba);this.addMenuItems(N,["-","pageScale","-","ruler"],ba)})))}this.put("extras",new Menu(mxUtils.bind(this,function(N,ba){null!=V&&
+Q.menus.addSubmenu("language",N,ba);"1"!=urlParams.embed&&"1"!=urlParams.extAuth&&Q.mode!=App.MODE_ATLAS&&Q.menus.addSubmenu("theme",N,ba);Q.menus.addSubmenu("units",N,ba);N.addSeparator(ba);"1"!=urlParams.sketch&&Q.menus.addMenuItems(N,"pageScale ruler scrollbars - tooltips copyConnect collapseExpand".split(" "),ba);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&Q.mode!=App.MODE_ATLAS&&Q.menus.addMenuItems(N,["-","showStartScreen",
+"search","scratchpad"],ba);N.addSeparator(ba);"1"==urlParams.sketch?Q.menus.addMenuItems(N,"configuration - copyConnect collapseExpand tooltips -".split(" "),ba):(Q.mode!=App.MODE_ATLAS&&Q.menus.addMenuItem(N,"configuration",ba),!Q.isOfflineApp()&&isLocalStorage&&Q.mode!=App.MODE_ATLAS&&Q.menus.addMenuItem(N,"plugins",ba));EditorUi.isElectronApp&&Q.menus.addMenuItems(N,["-","spellCheck","autoBkp","drafts","-"],ba);var la=Q.getCurrentFile();null!=la&&la.isRealtimeEnabled()&&la.isRealtimeSupported()&&
+this.addMenuItems(N,["-","showRemoteCursors","shareCursor","-"],ba);N.addSeparator(ba);Q.mode!=App.MODE_ATLAS&&this.addMenuItems(N,["fullscreen"],ba);("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(N,["toggleDarkMode"],ba);N.addSeparator(ba)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(N,ba){Q.menus.addMenuItems(N,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),ba)})));mxUtils.bind(this,
+function(){var N=this.get("insert"),ba=N.funct;N.funct=function(la,u){"1"==urlParams.sketch?(Q.insertTemplateEnabled&&!Q.isOffline()&&Q.menus.addMenuItems(la,["insertTemplate"],u),Q.menus.addMenuItems(la,["insertImage","insertLink","-"],u),Q.menus.addSubmenu("insertAdvanced",la,u,mxResources.get("advanced")),Q.menus.addSubmenu("layout",la,u)):(ba.apply(this,arguments),Q.menus.addSubmenu("table",la,u))}})();var ea="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),
+O=function(N,ba,la,u){N.addItem(la,null,mxUtils.bind(this,function(){var H=new CreateGraphDialog(Q,la,u);Q.showDialog(H.container,620,420,!0,!1);H.init()}),ba)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(N,ba){for(var la=0;la<ea.length;la++)"-"==ea[la]?N.addSeparator(ba):O(N,ba,mxResources.get(ea[la])+"...",ea[la])})))};EditorUi.prototype.installFormatToolbar=function(Q){var X=this.editor.graph,fa=document.createElement("div");fa.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
+X.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(ka,ia){0<X.getSelectionCount()?(Q.appendChild(fa),fa.innerHTML="Selected: "+X.getSelectionCount()):null!=fa.parentNode&&fa.parentNode.removeChild(fa)}))};var Y=!1;EditorUi.prototype.initFormatWindow=function(){if(!Y&&null!=this.formatWindow){Y=!0;this.formatWindow.window.setClosable(!1);var Q=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){Q.apply(this,arguments);this.minimized?
+(this.div.style.width="90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(X){mxEvent.getSource(X)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var qa=EditorUi.prototype.init;EditorUi.prototype.init=
+function(){function Q(va,ya,Na){var Ja=V.menus.get(va),Qa=N.addMenu(mxResources.get(va),mxUtils.bind(this,function(){Ja.funct.apply(this,arguments)}),O);Qa.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";Qa.style.display="inline-block";Qa.style.boxSizing="border-box";Qa.style.top="6px";Qa.style.marginRight="6px";Qa.style.height="30px";Qa.style.paddingTop="6px";Qa.style.paddingBottom="6px";Qa.style.cursor="pointer";Qa.setAttribute("title",mxResources.get(va));V.menus.menuCreated(Ja,
+Qa,"geMenuItem");null!=Na?(Qa.style.backgroundImage="url("+Na+")",Qa.style.backgroundPosition="center center",Qa.style.backgroundRepeat="no-repeat",Qa.style.backgroundSize="24px 24px",Qa.style.width="34px",Qa.innerText=""):ya||(Qa.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Qa.style.backgroundPosition="right 6px center",Qa.style.backgroundRepeat="no-repeat",Qa.style.paddingRight="22px");return Qa}function X(va,ya,Na,Ja,Qa,Za){var cb=document.createElement("a");cb.className=
+"1"==urlParams.sketch?"geToolbarButton":"geMenuItem";cb.style.display="inline-block";cb.style.boxSizing="border-box";cb.style.height="30px";cb.style.padding="6px";cb.style.position="relative";cb.style.verticalAlign="top";cb.style.top="0px";"1"==urlParams.sketch&&(cb.style.borderStyle="none",cb.style.boxShadow="none",cb.style.padding="6px",cb.style.margin="0px");null!=V.statusContainer?ea.insertBefore(cb,V.statusContainer):ea.appendChild(cb);null!=Za?(cb.style.backgroundImage="url("+Za+")",cb.style.backgroundPosition=
+"center center",cb.style.backgroundRepeat="no-repeat",cb.style.backgroundSize="24px 24px",cb.style.width="34px"):mxUtils.write(cb,va);mxEvent.addListener(cb,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(fb){fb.preventDefault()}));mxEvent.addListener(cb,"click",function(fb){"disabled"!=cb.getAttribute("disabled")&&ya(fb);mxEvent.consume(fb)});null==Na&&(cb.style.marginRight="4px");null!=Ja&&cb.setAttribute("title",Ja);null!=Qa&&(va=function(){Qa.isEnabled()?(cb.removeAttribute("disabled"),
+cb.style.cursor="pointer"):(cb.setAttribute("disabled","disabled"),cb.style.cursor="default")},Qa.addListener("stateChanged",va),L.addListener("enabledChanged",va),va());return cb}function fa(va,ya,Na){Na=document.createElement("div");Na.className="geMenuItem";Na.style.display="inline-block";Na.style.verticalAlign="top";Na.style.marginRight="6px";Na.style.padding="0 4px 0 4px";Na.style.height="30px";Na.style.position="relative";Na.style.top="0px";"1"==urlParams.sketch&&(Na.style.boxShadow="none");
+for(var Ja=0;Ja<va.length;Ja++)null!=va[Ja]&&("1"==urlParams.sketch&&(va[Ja].style.padding="10px 8px",va[Ja].style.width="30px"),va[Ja].style.margin="0px",va[Ja].style.boxShadow="none",Na.appendChild(va[Ja]));null!=ya&&mxUtils.setOpacity(Na,ya);null!=V.statusContainer&&"1"!=urlParams.sketch?ea.insertBefore(Na,V.statusContainer):ea.appendChild(Na);return Na}function ka(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(da.style.left=58>S.offsetTop-S.offsetHeight/2?"70px":"10px");else{for(var va=
+ea.firstChild;null!=va;){var ya=va.nextSibling;"geMenuItem"!=va.className&&"geItem"!=va.className||va.parentNode.removeChild(va);va=ya}O=ea.firstChild;n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;va=1E3>n||"1"==urlParams.sketch;var Na=null;va||(Na=Q("diagram"));ya=va?Q("diagram",null,Editor.drawLogoImage):null;null!=ya&&(Na=ya);fa([Na,X(mxResources.get("shapes"),V.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),V.actions.get("image"),va?Editor.shapesImage:
+null),X(mxResources.get("format"),V.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+V.actions.get("formatPanel").shortcut+")",V.actions.get("image"),va?Editor.formatImage:null)],va?60:null);ya=Q("insert",!0,va?P:null);fa([ya,X(mxResources.get("delete"),V.actions.get("delete").funct,null,mxResources.get("delete"),V.actions.get("delete"),va?Editor.trashImage:null)],va?60:null);411<=n&&(fa([z,K],60),520<=n&&fa([za,640<=n?X("",Oa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+
+" +)",Oa,Editor.zoomInImage):null,640<=n?X("",Xa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",Xa,Editor.zoomOutImage):null],60))}null!=Na&&(mxEvent.disableContextMenu(Na),mxEvent.addGestureListeners(Na,mxUtils.bind(this,function(Ja){(mxEvent.isShiftDown(Ja)||mxEvent.isAltDown(Ja)||mxEvent.isMetaDown(Ja)||mxEvent.isControlDown(Ja)||mxEvent.isPopupTrigger(Ja))&&V.appIconClicked(Ja)}),null,null));ya=V.menus.get("language");null!=ya&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=
+n&&"1"!=urlParams.sketch?(null==Ma&&(ya=N.addMenu("",ya.funct),ya.setAttribute("title",mxResources.get("language")),ya.className="geToolbarButton",ya.style.backgroundImage="url("+Editor.globeImage+")",ya.style.backgroundPosition="center center",ya.style.backgroundRepeat="no-repeat",ya.style.backgroundSize="24px 24px",ya.style.position="absolute",ya.style.height="24px",ya.style.width="24px",ya.style.zIndex="1",ya.style.right="8px",ya.style.cursor="pointer",ya.style.top="1"==urlParams.embed?"12px":
+"11px",ea.appendChild(ya),Ma=ya),V.buttonContainer.style.paddingRight="34px"):(V.buttonContainer.style.paddingRight="4px",null!=Ma&&(Ma.parentNode.removeChild(Ma),Ma=null))}qa.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 ia=document.createElement("div");ia.style.cssText=
+"position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";ia.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(ia);"1"==urlParams.sketch&&null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=
urlParams.sketch&&1E3<=n||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])k(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),this.sidebar.showEntries("search"));var V=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==V.embedViewport)mxUtils.fit(this.div);else{var va=parseInt(this.div.offsetLeft),ya=parseInt(this.div.offsetWidth),Na=V.embedViewport.x+
-V.embedViewport.width,Ja=parseInt(this.div.offsetTop),Pa=parseInt(this.div.offsetHeight),Ya=V.embedViewport.y+V.embedViewport.height;this.div.style.left=Math.max(V.embedViewport.x,Math.min(va,Na-ya))+"px";this.div.style.top=Math.max(V.embedViewport.y,Math.min(Ja,Ya-Pa))+"px";this.div.style.height=Math.min(V.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(V.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",
-!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),ja=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>n||708>ja)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));V=this;var J=V.editor.graph;V.toolbar=this.createToolbar(V.createDiv("geToolbar"));V.defaultLibraryName=
-mxResources.get("untitledLibrary");var W=document.createElement("div");W.className="geMenubarContainer";var Q=null,S=new Menubar(V,W);V.statusContainer=V.createStatusContainer();V.statusContainer.style.position="relative";V.statusContainer.style.maxWidth="";V.statusContainer.style.marginTop="7px";V.statusContainer.style.marginLeft="6px";V.statusContainer.style.color="gray";V.statusContainer.style.cursor="default";var ha=V.hideCurrentMenu;V.hideCurrentMenu=function(){ha.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
-var la=V.descriptorChanged;V.descriptorChanged=function(){la.apply(this,arguments);var va=V.getCurrentFile();if(null!=va&&null!=va.getTitle()){var ya=va.getMode();"google"==ya?ya="googleDrive":"github"==ya?ya="gitHub":"gitlab"==ya?ya="gitLab":"onedrive"==ya&&(ya="oneDrive");ya=mxResources.get(ya);W.setAttribute("title",va.getTitle()+(null!=ya?" ("+ya+")":""))}else W.removeAttribute("title")};V.setStatusText(V.editor.getStatus());W.appendChild(V.statusContainer);V.buttonContainer=document.createElement("div");
-V.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";W.appendChild(V.buttonContainer);V.menubarContainer=V.buttonContainer;V.tabContainer=document.createElement("div");V.tabContainer.className="geTabContainer";V.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";ja=V.diagramContainer.parentNode;var u=document.createElement("div");
+V.embedViewport.width,Ja=parseInt(this.div.offsetTop),Qa=parseInt(this.div.offsetHeight),Za=V.embedViewport.y+V.embedViewport.height;this.div.style.left=Math.max(V.embedViewport.x,Math.min(va,Na-ya))+"px";this.div.style.top=Math.max(V.embedViewport.y,Math.min(Ja,Za-Qa))+"px";this.div.style.height=Math.min(V.embedViewport.height,parseInt(this.div.style.height))+"px";this.div.style.width=Math.min(V.embedViewport.width,parseInt(this.div.style.width))+"px"}};this.keyHandler.bindAction(75,!0,"toggleShapes",
+!0);EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&(b(this,!0),"1"==urlParams.sketch?(this.initFormatWindow(),ia=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,null!=this.formatWindow&&(1200>n||708>ia)?this.formatWindow.window.toggleMinimized():this.formatWindow.window.setVisible(!0)):this.formatWindow.window.setVisible(!0));V=this;var L=V.editor.graph;V.toolbar=this.createToolbar(V.createDiv("geToolbar"));V.defaultLibraryName=
+mxResources.get("untitledLibrary");var ea=document.createElement("div");ea.className="geMenubarContainer";var O=null,N=new Menubar(V,ea);V.statusContainer=V.createStatusContainer();V.statusContainer.style.position="relative";V.statusContainer.style.maxWidth="";V.statusContainer.style.marginTop="7px";V.statusContainer.style.marginLeft="6px";V.statusContainer.style.color="gray";V.statusContainer.style.cursor="default";var ba=V.hideCurrentMenu;V.hideCurrentMenu=function(){ba.apply(this,arguments);this.editor.graph.popupMenuHandler.hideMenu()};
+var la=V.descriptorChanged;V.descriptorChanged=function(){la.apply(this,arguments);var va=V.getCurrentFile();if(null!=va&&null!=va.getTitle()){var ya=va.getMode();"google"==ya?ya="googleDrive":"github"==ya?ya="gitHub":"gitlab"==ya?ya="gitLab":"onedrive"==ya&&(ya="oneDrive");ya=mxResources.get(ya);ea.setAttribute("title",va.getTitle()+(null!=ya?" ("+ya+")":""))}else ea.removeAttribute("title")};V.setStatusText(V.editor.getStatus());ea.appendChild(V.statusContainer);V.buttonContainer=document.createElement("div");
+V.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";ea.appendChild(V.buttonContainer);V.menubarContainer=V.buttonContainer;V.tabContainer=document.createElement("div");V.tabContainer.className="geTabContainer";V.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";ia=V.diagramContainer.parentNode;var u=document.createElement("div");
u.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";V.diagramContainer.style.top="1"==urlParams.sketch?"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){u.style.top="20px";V.titlebar=document.createElement("div");V.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var H=document.createElement("div");H.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;";
-V.titlebar.appendChild(H);ja.appendChild(V.titlebar)}H=V.menus.get("viewZoom");var O="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,T="1"==urlParams.sketch?document.createElement("div"):null,R="1"==urlParams.sketch?document.createElement("div"):null,da="1"==urlParams.sketch?document.createElement("div"):null,P=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();J.refresh();J.view.validateBackground()});V.addListener("darkModeChanged",P);V.addListener("sketchModeChanged",
-P);var ma=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)da.style.left="10px",da.style.top="10px",R.style.left="10px",R.style.top="60px",T.style.top="10px",T.style.right="12px",T.style.left="",V.diagramContainer.setAttribute("data-bounds",V.diagramContainer.style.top+" "+V.diagramContainer.style.left+" "+V.diagramContainer.style.width+" "+V.diagramContainer.style.height),V.diagramContainer.style.top="0px",V.diagramContainer.style.left="0px",V.diagramContainer.style.bottom="0px",V.diagramContainer.style.right=
-"0px",V.diagramContainer.style.width="",V.diagramContainer.style.height="";else{var va=V.diagramContainer.getAttribute("data-bounds");if(null!=va){V.diagramContainer.style.background="transparent";V.diagramContainer.removeAttribute("data-bounds");var ya=J.getGraphBounds();va=va.split(" ");V.diagramContainer.style.top=va[0];V.diagramContainer.style.left=va[1];V.diagramContainer.style.width=ya.width+50+"px";V.diagramContainer.style.height=ya.height+46+"px";V.diagramContainer.style.bottom="";V.diagramContainer.style.right=
-"";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",rect:V.diagramContainer.getBoundingClientRect()}),"*");V.refresh()}da.style.left=V.diagramContainer.offsetLeft+"px";da.style.top=V.diagramContainer.offsetTop-da.offsetHeight-4+"px";R.style.display="";R.style.left=V.diagramContainer.offsetLeft-R.offsetWidth-4+"px";R.style.top=V.diagramContainer.offsetTop+"px";T.style.left=V.diagramContainer.offsetLeft+V.diagramContainer.offsetWidth-T.offsetWidth+"px";T.style.top=da.style.top;
+V.titlebar.appendChild(H);ia.appendChild(V.titlebar)}H=V.menus.get("viewZoom");var P="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,T="1"==urlParams.sketch?document.createElement("div"):null,S="1"==urlParams.sketch?document.createElement("div"):null,da="1"==urlParams.sketch?document.createElement("div"):null,R=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();L.refresh();L.view.validateBackground()});V.addListener("darkModeChanged",R);V.addListener("sketchModeChanged",
+R);var ma=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)da.style.left="10px",da.style.top="10px",S.style.left="10px",S.style.top="60px",T.style.top="10px",T.style.right="12px",T.style.left="",V.diagramContainer.setAttribute("data-bounds",V.diagramContainer.style.top+" "+V.diagramContainer.style.left+" "+V.diagramContainer.style.width+" "+V.diagramContainer.style.height),V.diagramContainer.style.top="0px",V.diagramContainer.style.left="0px",V.diagramContainer.style.bottom="0px",V.diagramContainer.style.right=
+"0px",V.diagramContainer.style.width="",V.diagramContainer.style.height="";else{var va=V.diagramContainer.getAttribute("data-bounds");if(null!=va){V.diagramContainer.style.background="transparent";V.diagramContainer.removeAttribute("data-bounds");var ya=L.getGraphBounds();va=va.split(" ");V.diagramContainer.style.top=va[0];V.diagramContainer.style.left=va[1];V.diagramContainer.style.width=ya.width+50+"px";V.diagramContainer.style.height=ya.height+46+"px";V.diagramContainer.style.bottom="";V.diagramContainer.style.right=
+"";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",rect:V.diagramContainer.getBoundingClientRect()}),"*");V.refresh()}da.style.left=V.diagramContainer.offsetLeft+"px";da.style.top=V.diagramContainer.offsetTop-da.offsetHeight-4+"px";S.style.display="";S.style.left=V.diagramContainer.offsetLeft-S.offsetWidth-4+"px";S.style.top=V.diagramContainer.offsetTop+"px";T.style.left=V.diagramContainer.offsetLeft+V.diagramContainer.offsetWidth-T.offsetWidth+"px";T.style.top=da.style.top;
T.style.right="";V.bottomResizer.style.left=V.diagramContainer.offsetLeft+(V.diagramContainer.offsetWidth-V.bottomResizer.offsetWidth)/2+"px";V.bottomResizer.style.top=V.diagramContainer.offsetTop+V.diagramContainer.offsetHeight-V.bottomResizer.offsetHeight/2-1+"px";V.rightResizer.style.left=V.diagramContainer.offsetLeft+V.diagramContainer.offsetWidth-V.rightResizer.offsetWidth/2-1+"px";V.rightResizer.style.top=V.diagramContainer.offsetTop+(V.diagramContainer.offsetHeight-V.bottomResizer.offsetHeight)/
-2+"px"}V.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";V.rightResizer.style.visibility=V.bottomResizer.style.visibility;W.style.display="none";da.style.visibility="";T.style.visibility=""}),ra=mxUtils.bind(this,function(){M.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ma()});P=mxUtils.bind(this,
-function(){ra();b(V,!0);V.initFormatWindow();var va=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(va.x+va.width+4,va.y)});V.addListener("inlineFullscreenChanged",ra);V.addListener("editInlineStart",P);"1"==urlParams.embedInline&&V.addListener("darkModeChanged",P);V.addListener("editInlineStop",mxUtils.bind(this,function(va){V.diagramContainer.style.width="10px";V.diagramContainer.style.height="10px";V.diagramContainer.style.border="";V.bottomResizer.style.visibility=
-"hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";R.style.display="none"}));if(null!=V.hoverIcons){var xa=V.hoverIcons.update;V.hoverIcons.update=function(){J.freehand.isDrawing()||xa.apply(this,arguments)}}if(null!=J.freehand){var ta=J.freehand.createStyle;J.freehand.createStyle=function(va){return ta.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){R.className="geToolbarContainer";T.className="geToolbarContainer";da.className=
-"geToolbarContainer";W.className="geToolbarContainer";V.picker=R;var Aa=!1;"1"!=urlParams.embed&&"atlassian"!=V.getServiceName()&&(mxEvent.addListener(W,"mouseenter",function(){V.statusContainer.style.display="inline-block"}),mxEvent.addListener(W,"mouseleave",function(){Aa||(V.statusContainer.style.display="none")}));var Ca=mxUtils.bind(this,function(va){null!=V.notificationBtn&&(null!=va?V.notificationBtn.setAttribute("title",va):V.notificationBtn.removeAttribute("title"))});W.style.visibility=
-20>W.clientWidth?"hidden":"";V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus());if("1"!=urlParams.embed&&"atlassian"!=V.getServiceName())if(V.statusContainer.style.display="inline-block",Aa=!0,1==V.statusContainer.children.length&&""==V.editor.getStatus())W.style.visibility="hidden";else{if(0==V.statusContainer.children.length||1==V.statusContainer.children.length&&"function"===typeof V.statusContainer.firstChild.getAttribute&&null==V.statusContainer.firstChild.getAttribute("class")){var va=
+2+"px"}V.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";V.rightResizer.style.visibility=V.bottomResizer.style.visibility;ea.style.display="none";da.style.visibility="";T.style.visibility=""}),ra=mxUtils.bind(this,function(){M.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ma()});R=mxUtils.bind(this,
+function(){ra();b(V,!0);V.initFormatWindow();var va=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(va.x+va.width+4,va.y)});V.addListener("inlineFullscreenChanged",ra);V.addListener("editInlineStart",R);"1"==urlParams.embedInline&&V.addListener("darkModeChanged",R);V.addListener("editInlineStop",mxUtils.bind(this,function(va){V.diagramContainer.style.width="10px";V.diagramContainer.style.height="10px";V.diagramContainer.style.border="";V.bottomResizer.style.visibility=
+"hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";S.style.display="none"}));if(null!=V.hoverIcons){var xa=V.hoverIcons.update;V.hoverIcons.update=function(){L.freehand.isDrawing()||xa.apply(this,arguments)}}if(null!=L.freehand){var ta=L.freehand.createStyle;L.freehand.createStyle=function(va){return ta.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){S.className="geToolbarContainer";T.className="geToolbarContainer";da.className=
+"geToolbarContainer";ea.className="geToolbarContainer";V.picker=S;var Aa=!1;"1"!=urlParams.embed&&"atlassian"!=V.getServiceName()&&(mxEvent.addListener(ea,"mouseenter",function(){V.statusContainer.style.display="inline-block"}),mxEvent.addListener(ea,"mouseleave",function(){Aa||(V.statusContainer.style.display="none")}));var Ca=mxUtils.bind(this,function(va){null!=V.notificationBtn&&(null!=va?V.notificationBtn.setAttribute("title",va):V.notificationBtn.removeAttribute("title"))});ea.style.visibility=
+20>ea.clientWidth?"hidden":"";V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus());if("1"!=urlParams.embed&&"atlassian"!=V.getServiceName())if(V.statusContainer.style.display="inline-block",Aa=!0,1==V.statusContainer.children.length&&""==V.editor.getStatus())ea.style.visibility="hidden";else{if(0==V.statusContainer.children.length||1==V.statusContainer.children.length&&"function"===typeof V.statusContainer.firstChild.getAttribute&&null==V.statusContainer.firstChild.getAttribute("class")){var va=
null!=V.statusContainer.firstChild&&"function"===typeof V.statusContainer.firstChild.getAttribute?V.statusContainer.firstChild.getAttribute("title"):V.editor.getStatus();Ca(va);var ya=V.getCurrentFile();ya=null!=ya?ya.savingStatusKey:DrawioFile.prototype.savingStatusKey;va==mxResources.get(ya)+"..."?(V.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(ya))+'..."src="'+Editor.tailSpin+'">',V.statusContainer.style.display="inline-block",Aa=!0):6<V.buttonContainer.clientWidth&&
-(V.statusContainer.style.display="none",Aa=!1)}else V.statusContainer.style.display="inline-block",Ca(null),Aa=!0;W.style.visibility=20>W.clientWidth&&!Aa?"hidden":""}}));pa=N("diagram",null,Editor.menuImage);pa.style.boxShadow="none";pa.style.padding="6px";pa.style.margin="0px";da.appendChild(pa);mxEvent.disableContextMenu(pa);mxEvent.addGestureListeners(pa,mxUtils.bind(this,function(va){(mxEvent.isShiftDown(va)||mxEvent.isAltDown(va)||mxEvent.isMetaDown(va)||mxEvent.isControlDown(va)||mxEvent.isPopupTrigger(va))&&
+(V.statusContainer.style.display="none",Aa=!1)}else V.statusContainer.style.display="inline-block",Ca(null),Aa=!0;ea.style.visibility=20>ea.clientWidth&&!Aa?"hidden":""}}));pa=Q("diagram",null,Editor.menuImage);pa.style.boxShadow="none";pa.style.padding="6px";pa.style.margin="0px";da.appendChild(pa);mxEvent.disableContextMenu(pa);mxEvent.addGestureListeners(pa,mxUtils.bind(this,function(va){(mxEvent.isShiftDown(va)||mxEvent.isAltDown(va)||mxEvent.isMetaDown(va)||mxEvent.isControlDown(va)||mxEvent.isPopupTrigger(va))&&
this.appIconClicked(va)}),null,null);V.statusContainer.style.position="";V.statusContainer.style.display="none";V.statusContainer.style.margin="0px";V.statusContainer.style.padding="6px 0px";V.statusContainer.style.maxWidth=Math.min(n-240,280)+"px";V.statusContainer.style.display="inline-block";V.statusContainer.style.textOverflow="ellipsis";V.buttonContainer.style.position="";V.buttonContainer.style.paddingRight="0px";V.buttonContainer.style.display="inline-block";var Ba=document.createElement("a");
-Ba.style.padding="0px";Ba.style.boxShadow="none";Ba.className="geMenuItem";Ba.style.display="inline-block";Ba.style.width="40px";Ba.style.height="12px";Ba.style.marginBottom="-2px";Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Ba.style.backgroundPosition="top center";Ba.style.backgroundRepeat="no-repeat";Ba.setAttribute("title","Minimize");var sa=!1,Oa=mxUtils.bind(this,function(){R.innerText="";if(!sa){var va=function(Ja,Pa,Ya){Ja=Y("",Ja.funct,null,Pa,Ja,Ya);Ja.style.width=
-"40px";Ja.style.opacity="0.7";return ya(Ja,null,"pointer")},ya=function(Ja,Pa,Ya){null!=Pa&&Ja.setAttribute("title",Pa);Ja.style.cursor=null!=Ya?Ya:"default";Ja.style.margin="2px 0px";R.appendChild(Ja);mxUtils.br(R);return Ja};ya(V.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)");ya(V.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"));ya(V.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ya(V.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var Ja=new mxCell("",new mxGeometry(0,0,J.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");
-Ja.geometry.setTerminalPoint(new mxPoint(0,0),!0);Ja.geometry.setTerminalPoint(new mxPoint(Ja.geometry.width,0),!1);Ja.geometry.points=[];Ja.geometry.relative=!0;Ja.edge=!0;ya(V.sidebar.createEdgeTemplateFromCells([Ja],Ja.geometry.width,Ja.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));Ja=Ja.clone();Ja.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";Ja.geometry.width=J.defaultEdgeLength+20;Ja.geometry.setTerminalPoint(new mxPoint(0,
+Ba.style.padding="0px";Ba.style.boxShadow="none";Ba.className="geMenuItem";Ba.style.display="inline-block";Ba.style.width="40px";Ba.style.height="12px";Ba.style.marginBottom="-2px";Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Ba.style.backgroundPosition="top center";Ba.style.backgroundRepeat="no-repeat";Ba.setAttribute("title","Minimize");var sa=!1,Pa=mxUtils.bind(this,function(){S.innerText="";if(!sa){var va=function(Ja,Qa,Za){Ja=X("",Ja.funct,null,Qa,Ja,Za);Ja.style.width=
+"40px";Ja.style.opacity="0.7";return ya(Ja,null,"pointer")},ya=function(Ja,Qa,Za){null!=Qa&&Ja.setAttribute("title",Qa);Ja.style.cursor=null!=Za?Za:"default";Ja.style.margin="2px 0px";S.appendChild(Ja);mxUtils.br(S);return Ja};ya(V.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)");ya(V.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"));ya(V.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");ya(V.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var Ja=new mxCell("",new mxGeometry(0,0,L.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");
+Ja.geometry.setTerminalPoint(new mxPoint(0,0),!0);Ja.geometry.setTerminalPoint(new mxPoint(Ja.geometry.width,0),!1);Ja.geometry.points=[];Ja.geometry.relative=!0;Ja.edge=!0;ya(V.sidebar.createEdgeTemplateFromCells([Ja],Ja.geometry.width,Ja.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));Ja=Ja.clone();Ja.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";Ja.geometry.width=L.defaultEdgeLength+20;Ja.geometry.setTerminalPoint(new mxPoint(0,
20),!0);Ja.geometry.setTerminalPoint(new mxPoint(Ja.geometry.width,20),!1);Ja=ya(V.sidebar.createEdgeTemplateFromCells([Ja],Ja.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));Ja.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");Ja.style.paddingBottom="14px";Ja.style.marginBottom="14px"})();va(V.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var Na=V.actions.get("toggleShapes");va(Na,mxResources.get("shapes")+
-" ("+Na.shortcut+")",O);pa=N("table",null,Editor.calendarImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer");pa=N("insert",null,Editor.plusImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer")}"1"!=urlParams.embedInline&&R.appendChild(Ba)});mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){sa?(mxUtils.setPrefixedStyle(R.style,
-"transform","translate(0, -50%)"),R.style.padding="8px 6px 4px",R.style.top="50%",R.style.bottom="",R.style.height="",Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Ba.style.width="40px",Ba.style.height="12px",Ba.setAttribute("title","Minimize"),sa=!1,Oa()):(R.innerText="",R.appendChild(Ba),mxUtils.setPrefixedStyle(R.style,"transform","translate(0, 0)"),R.style.top="",R.style.bottom="12px",R.style.padding="0px",R.style.height="24px",Ba.style.height="24px",Ba.style.backgroundImage=
-"url("+Editor.plusImage+")",Ba.setAttribute("title",mxResources.get("insert")),Ba.style.width="24px",sa=!0)}));Oa();V.addListener("darkModeChanged",Oa);V.addListener("sketchModeChanged",Oa)}else V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus())}));if(null!=H){var Ta=function(va){mxEvent.isShiftDown(va)?(V.hideCurrentMenu(),V.actions.get("smartFit").funct(),mxEvent.consume(va)):mxEvent.isAltDown(va)&&(V.hideCurrentMenu(),V.actions.get("customZoom").funct(),
-mxEvent.consume(va))},Sa=V.actions.get("zoomIn"),$a=V.actions.get("zoomOut"),Ga=V.actions.get("resetView");P=V.actions.get("fullscreen");var eb=V.actions.get("undo"),bb=V.actions.get("redo"),z=Y("",eb.funct,null,mxResources.get("undo")+" ("+eb.shortcut+")",eb,Editor.undoImage),L=Y("",bb.funct,null,mxResources.get("redo")+" ("+bb.shortcut+")",bb,Editor.redoImage),M=Y("",P.funct,null,mxResources.get("fullscreen"),P,Editor.fullscreenImage);if(null!=T){Ga=function(){ua.style.display=null!=V.pages&&("0"!=
-urlParams.pages||1<V.pages.length||Editor.pagesVisible)?"inline-block":"none"};var U=function(){ua.innerText="";if(null!=V.currentPage){mxUtils.write(ua,V.currentPage.getName());var va=null!=V.pages?V.pages.length:1,ya=V.getPageIndex(V.currentPage);ya=null!=ya?ya+1:1;var Na=V.currentPage.getId();ua.setAttribute("title",V.currentPage.getName()+" ("+ya+"/"+va+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var X=V.actions.get("delete"),fa=Y("",X.funct,null,mxResources.get("delete"),X,Editor.trashImage);
-fa.style.opacity="0.1";da.appendChild(fa);X.addListener("stateChanged",function(){fa.style.opacity=X.enabled?"":"0.1"});var na=function(){z.style.display=0<V.editor.undoManager.history.length||J.isEditing()?"inline-block":"none";L.style.display=z.style.display;z.style.opacity=eb.enabled?"":"0.1";L.style.opacity=bb.enabled?"":"0.1"};da.appendChild(z);da.appendChild(L);eb.addListener("stateChanged",na);bb.addListener("stateChanged",na);na();var ua=this.createPageMenuTab(!1,!0);ua.style.display="none";
+" ("+Na.shortcut+")",P);pa=Q("table",null,Editor.calendarImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer");pa=Q("insert",null,Editor.plusImage);pa.style.boxShadow="none";pa.style.opacity="0.7";pa.style.padding="6px";pa.style.margin="0px";pa.style.width="37px";ya(pa,null,"pointer")}"1"!=urlParams.embedInline&&S.appendChild(Ba)});mxEvent.addListener(Ba,"click",mxUtils.bind(this,function(){sa?(mxUtils.setPrefixedStyle(S.style,
+"transform","translate(0, -50%)"),S.style.padding="8px 6px 4px",S.style.top="50%",S.style.bottom="",S.style.height="",Ba.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",Ba.style.width="40px",Ba.style.height="12px",Ba.setAttribute("title","Minimize"),sa=!1,Pa()):(S.innerText="",S.appendChild(Ba),mxUtils.setPrefixedStyle(S.style,"transform","translate(0, 0)"),S.style.top="",S.style.bottom="12px",S.style.padding="0px",S.style.height="24px",Ba.style.height="24px",Ba.style.backgroundImage=
+"url("+Editor.plusImage+")",Ba.setAttribute("title",mxResources.get("insert")),Ba.style.width="24px",sa=!0)}));Pa();V.addListener("darkModeChanged",Pa);V.addListener("sketchModeChanged",Pa)}else V.editor.addListener("statusChanged",mxUtils.bind(this,function(){V.setStatusText(V.editor.getStatus())}));if(null!=H){var Ta=function(va){mxEvent.isShiftDown(va)?(V.hideCurrentMenu(),V.actions.get("smartFit").funct(),mxEvent.consume(va)):mxEvent.isAltDown(va)&&(V.hideCurrentMenu(),V.actions.get("customZoom").funct(),
+mxEvent.consume(va))},Oa=V.actions.get("zoomIn"),Xa=V.actions.get("zoomOut"),Ga=V.actions.get("resetView");R=V.actions.get("fullscreen");var eb=V.actions.get("undo"),bb=V.actions.get("redo"),z=X("",eb.funct,null,mxResources.get("undo")+" ("+eb.shortcut+")",eb,Editor.undoImage),K=X("",bb.funct,null,mxResources.get("redo")+" ("+bb.shortcut+")",bb,Editor.redoImage),M=X("",R.funct,null,mxResources.get("fullscreen"),R,Editor.fullscreenImage);if(null!=T){Ga=function(){ua.style.display=null!=V.pages&&("0"!=
+urlParams.pages||1<V.pages.length||Editor.pagesVisible)?"inline-block":"none"};var U=function(){ua.innerText="";if(null!=V.currentPage){mxUtils.write(ua,V.currentPage.getName());var va=null!=V.pages?V.pages.length:1,ya=V.getPageIndex(V.currentPage);ya=null!=ya?ya+1:1;var Na=V.currentPage.getId();ua.setAttribute("title",V.currentPage.getName()+" ("+ya+"/"+va+")"+(null!=Na?" ["+Na+"]":""))}};M.parentNode.removeChild(M);var W=V.actions.get("delete"),ha=X("",W.funct,null,mxResources.get("delete"),W,Editor.trashImage);
+ha.style.opacity="0.1";da.appendChild(ha);W.addListener("stateChanged",function(){ha.style.opacity=W.enabled?"":"0.1"});var na=function(){z.style.display=0<V.editor.undoManager.history.length||L.isEditing()?"inline-block":"none";K.style.display=z.style.display;z.style.opacity=eb.enabled?"":"0.1";K.style.opacity=bb.enabled?"":"0.1"};da.appendChild(z);da.appendChild(K);eb.addListener("stateChanged",na);bb.addListener("stateChanged",na);na();var ua=this.createPageMenuTab(!1,!0);ua.style.display="none";
ua.style.position="";ua.style.marginLeft="";ua.style.top="";ua.style.left="";ua.style.height="100%";ua.style.lineHeight="";ua.style.borderStyle="none";ua.style.padding="3px 0";ua.style.margin="0px";ua.style.background="";ua.style.border="";ua.style.boxShadow="none";ua.style.verticalAlign="top";ua.style.width="auto";ua.style.maxWidth="160px";ua.style.position="relative";ua.style.padding="6px";ua.style.textOverflow="ellipsis";ua.style.opacity="0.8";T.appendChild(ua);V.editor.addListener("pagesPatched",
-U);V.editor.addListener("pageSelected",U);V.editor.addListener("pageRenamed",U);V.editor.addListener("fileLoaded",U);U();V.addListener("fileDescriptorChanged",Ga);V.addListener("pagesVisibleChanged",Ga);V.editor.addListener("pagesPatched",Ga);Ga();Ga=Y("",$a.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",$a,Editor.zoomOutImage);T.appendChild(Ga);var pa=S.addMenu("100%",H.funct);pa.setAttribute("title",mxResources.get("zoom"));pa.innerHTML="100%";pa.style.display="inline-block";
-pa.style.color="inherit";pa.style.cursor="pointer";pa.style.textAlign="center";pa.style.whiteSpace="nowrap";pa.style.paddingRight="10px";pa.style.textDecoration="none";pa.style.verticalAlign="top";pa.style.padding="6px 0";pa.style.fontSize="14px";pa.style.width="40px";pa.style.opacity="0.4";T.appendChild(pa);H=Y("",Sa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Sa,Editor.zoomInImage);T.appendChild(H);P.visible&&(T.appendChild(M),mxEvent.addListener(document,"fullscreenchange",
-function(){M.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(H=V.actions.get("exit"),T.appendChild(Y("",H.funct,null,mxResources.get("exit"),H,Editor.closeImage)));V.tabContainer.style.visibility="hidden";W.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;";
-da.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;";T.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;";u.appendChild(da);u.appendChild(T);R.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-mxClient.IS_POINTER&&(R.style.touchAction="none");u.appendChild(R);window.setTimeout(function(){mxUtils.setPrefixedStyle(R.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(u)}else{var za=Y("",Ta,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",Ga,Editor.zoomFitImage);W.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";pa=S.addMenu("100%",
+U);V.editor.addListener("pageSelected",U);V.editor.addListener("pageRenamed",U);V.editor.addListener("fileLoaded",U);U();V.addListener("fileDescriptorChanged",Ga);V.addListener("pagesVisibleChanged",Ga);V.editor.addListener("pagesPatched",Ga);Ga();Ga=X("",Xa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",Xa,Editor.zoomOutImage);T.appendChild(Ga);var pa=N.addMenu("100%",H.funct);pa.setAttribute("title",mxResources.get("zoom"));pa.innerHTML="100%";pa.style.display="inline-block";
+pa.style.color="inherit";pa.style.cursor="pointer";pa.style.textAlign="center";pa.style.whiteSpace="nowrap";pa.style.paddingRight="10px";pa.style.textDecoration="none";pa.style.verticalAlign="top";pa.style.padding="6px 0";pa.style.fontSize="14px";pa.style.width="40px";pa.style.opacity="0.4";T.appendChild(pa);H=X("",Oa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",Oa,Editor.zoomInImage);T.appendChild(H);R.visible&&(T.appendChild(M),mxEvent.addListener(document,"fullscreenchange",
+function(){M.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(H=V.actions.get("exit"),T.appendChild(X("",H.funct,null,mxResources.get("exit"),H,Editor.closeImage)));V.tabContainer.style.visibility="hidden";ea.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;";
+da.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;";T.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;";u.appendChild(da);u.appendChild(T);S.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+mxClient.IS_POINTER&&(S.style.touchAction="none");u.appendChild(S);window.setTimeout(function(){mxUtils.setPrefixedStyle(S.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(u)}else{var za=X("",Ta,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",Ga,Editor.zoomFitImage);ea.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";pa=N.addMenu("100%",
H.funct);pa.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");pa.style.whiteSpace="nowrap";pa.style.paddingRight="10px";pa.style.textDecoration="none";pa.style.textDecoration="none";pa.style.overflow="hidden";pa.style.visibility="hidden";pa.style.textAlign="center";pa.style.cursor="pointer";pa.style.height=parseInt(V.tabContainerHeight)-1+"px";pa.style.lineHeight=parseInt(V.tabContainerHeight)+1+"px";pa.style.position="absolute";pa.style.display="block";pa.style.fontSize="12px";pa.style.width=
"59px";pa.style.right="0px";pa.style.bottom="0px";pa.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";pa.style.backgroundPosition="right 6px center";pa.style.backgroundRepeat="no-repeat";u.appendChild(pa)}(function(va){mxEvent.addListener(va,"click",Ta);var ya=mxUtils.bind(this,function(){va.innerText="";mxUtils.write(va,Math.round(100*V.editor.graph.view.scale)+"%")});V.editor.graph.view.addListener(mxEvent.EVENT_SCALE,ya);V.editor.addListener("resetGraphView",ya);V.editor.addListener("pageSelected",
-ya)})(pa);var Da=V.setGraphEnabled;V.setGraphEnabled=function(){Da.apply(this,arguments);null!=this.tabContainer&&(pa.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==T?this.tabContainerHeight+"px":"0px")}}u.appendChild(W);u.appendChild(V.diagramContainer);ja.appendChild(u);V.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&b(this,!0);null==T&&u.appendChild(V.tabContainer);
+ya)})(pa);var Da=V.setGraphEnabled;V.setGraphEnabled=function(){Da.apply(this,arguments);null!=this.tabContainer&&(pa.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==T?this.tabContainerHeight+"px":"0px")}}u.appendChild(ea);u.appendChild(V.diagramContainer);ia.appendChild(u);V.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=n)&&"1"!=urlParams.embedInline&&b(this,!0);null==T&&u.appendChild(V.tabContainer);
var Ma=null;ka();mxEvent.addListener(window,"resize",function(){ka();null!=V.sidebarWindow&&V.sidebarWindow.window.fit();null!=V.formatWindow&&V.formatWindow.window.fit();null!=V.actions.outlineWindow&&V.actions.outlineWindow.window.fit();null!=V.actions.layersWindow&&V.actions.layersWindow.window.fit();null!=V.menus.tagsWindow&&V.menus.tagsWindow.window.fit();null!=V.menus.findWindow&&V.menus.findWindow.window.fit();null!=V.menus.findReplaceWindow&&V.menus.findReplaceWindow.window.fit()});if("1"==
-urlParams.embedInline){document.body.style.cursor="text";R.style.transform="";mxEvent.addGestureListeners(V.diagramContainer.parentNode,function(va){mxEvent.getSource(va)==V.diagramContainer.parentNode&&(V.embedExitPoint=new mxPoint(mxEvent.getClientX(va),mxEvent.getClientY(va)),V.sendEmbeddedSvgExport())});ja=document.createElement("div");ja.style.position="absolute";ja.style.width="10px";ja.style.height="10px";ja.style.borderRadius="5px";ja.style.border="1px solid gray";ja.style.background="#ffffff";
-ja.style.cursor="row-resize";V.diagramContainer.parentNode.appendChild(ja);V.bottomResizer=ja;var La=null,Ua=null,Ra=null,Fa=null;mxEvent.addGestureListeners(ja,function(va){Fa=parseInt(V.diagramContainer.style.height);Ua=mxEvent.getClientY(va);J.popupMenuHandler.hideMenu();mxEvent.consume(va)});ja=ja.cloneNode(!1);ja.style.cursor="col-resize";V.diagramContainer.parentNode.appendChild(ja);V.rightResizer=ja;mxEvent.addGestureListeners(ja,function(va){Ra=parseInt(V.diagramContainer.style.width);La=
-mxEvent.getClientX(va);J.popupMenuHandler.hideMenu();mxEvent.consume(va)});mxEvent.addGestureListeners(document.body,null,function(va){var ya=!1;null!=La&&(V.diagramContainer.style.width=Math.max(20,Ra+mxEvent.getClientX(va)-La)+"px",ya=!0);null!=Ua&&(V.diagramContainer.style.height=Math.max(20,Fa+mxEvent.getClientY(va)-Ua)+"px",ya=!0);ya&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:V.diagramContainer.getBoundingClientRect()}),
-"*"),ma(),V.refresh())},function(va){null==La&&null==Ua||mxEvent.consume(va);Ua=La=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";V.bottomResizer.style.visibility="hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";R.style.display="none"}"1"==urlParams.prefetchFonts&&V.editor.loadFonts()}}};
+urlParams.embedInline){document.body.style.cursor="text";S.style.transform="";mxEvent.addGestureListeners(V.diagramContainer.parentNode,function(va){mxEvent.getSource(va)==V.diagramContainer.parentNode&&(V.embedExitPoint=new mxPoint(mxEvent.getClientX(va),mxEvent.getClientY(va)),V.sendEmbeddedSvgExport())});ia=document.createElement("div");ia.style.position="absolute";ia.style.width="10px";ia.style.height="10px";ia.style.borderRadius="5px";ia.style.border="1px solid gray";ia.style.background="#ffffff";
+ia.style.cursor="row-resize";V.diagramContainer.parentNode.appendChild(ia);V.bottomResizer=ia;var La=null,Ua=null,Sa=null,Fa=null;mxEvent.addGestureListeners(ia,function(va){Fa=parseInt(V.diagramContainer.style.height);Ua=mxEvent.getClientY(va);L.popupMenuHandler.hideMenu();mxEvent.consume(va)});ia=ia.cloneNode(!1);ia.style.cursor="col-resize";V.diagramContainer.parentNode.appendChild(ia);V.rightResizer=ia;mxEvent.addGestureListeners(ia,function(va){Sa=parseInt(V.diagramContainer.style.width);La=
+mxEvent.getClientX(va);L.popupMenuHandler.hideMenu();mxEvent.consume(va)});mxEvent.addGestureListeners(document.body,null,function(va){var ya=!1;null!=La&&(V.diagramContainer.style.width=Math.max(20,Sa+mxEvent.getClientX(va)-La)+"px",ya=!0);null!=Ua&&(V.diagramContainer.style.height=Math.max(20,Fa+mxEvent.getClientY(va)-Ua)+"px",ya=!0);ya&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:V.diagramContainer.getBoundingClientRect()}),
+"*"),ma(),V.refresh())},function(va){null==La&&null==Ua||mxEvent.consume(va);Ua=La=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";V.bottomResizer.style.visibility="hidden";V.rightResizer.style.visibility="hidden";da.style.visibility="hidden";T.style.visibility="hidden";S.style.display="none"}"1"==urlParams.prefetchFonts&&V.editor.loadFonts()}}};
(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,e,k,n,D,t,E){this.file=b;this.id=e;this.content=k;this.modifiedDate=n;this.createdDate=D;this.isResolved=t;this.user=E;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,k,n,D){e()};DrawioComment.prototype.editComment=function(b,e,k){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DrawioUser=function(b,e,k,n,D){this.id=b;this.email=e;this.displayName=k;this.pictureUrl=n;this.locale=D};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nbeta=beta\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\nrealtimeCollaboration=Real-Time Collaboration\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareCursor=Share Mouse Cursor\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowRemoteCursors=Show Remote Mouse Cursors\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\ncreateODFile=Create OneDrive File\npickGDriveFile=Pick Google Drive File\ncreateGDriveFile=Create Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\nnotInOffline=Not supported while offline\nnotInDesktop=Not supported in Desktop App\nconfConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.\nconfACleanOldVerStarted=Cleaning old diagram draft versions started\nconfACleanOldVerDone=Cleaning old diagram draft versions finished\nconfACleaningFile=Cleaning diagram draft "{1}" old versions\nconfAFileCleaned=Cleaning diagram draft "{1}" done\nconfAFileCleanFailed=Cleaning diagram draft "{1}" failed\nconfACleanOnly=Clean Diagram Drafts Only\nbrush=Brush\nopenDevTools=Open Developer Tools\nautoBkp=Automatic Backup\nconfAIgnoreCollectErr=Ignore collecting current pages errors\ndrafts=Drafts\ndraftSaveInt=Draft save interval [sec] (0 to disable)\npluginsDisabled=External plugins disabled.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,e,k){this.init(b,e,k)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
@@ -4054,7 +4054,7 @@ this.graphConfig.responsive:this.responsive)&&!this.zoomEnabled&&!mxClient.NO_FO
this.graphConfig["toolbar-nohide"]&&(this.editor.defaultGraphOverflow="visible");this.xmlNode=this.editor.extractGraphModel(this.xmlNode,!0);this.xmlNode!=e&&(this.xml=mxUtils.getXml(this.xmlNode),this.xmlDocument=this.xmlNode.ownerDocument);var d=this;this.graph.getImageFromBundles=function(I){return d.getImageUrl(I)};mxClient.IS_SVG&&this.graph.addSvgShadow(this.graph.view.canvas.ownerSVGElement,null,!0);if("mxfile"==this.xmlNode.nodeName){var f=this.xmlNode.getElementsByTagName("diagram");if(0<
f.length){if(null!=this.pageId)for(var g=0;g<f.length;g++)if(this.pageId==f[g].getAttribute("id")){this.currentPage=g;break}var m=this.graph.getGlobalVariable;d=this;this.graph.getGlobalVariable=function(I){var G=f[d.currentPage];return"page"==I?G.getAttribute("name")||"Page-"+(d.currentPage+1):"pagenumber"==I?d.currentPage+1:"pagecount"==I?f.length:m.apply(this,arguments)}}}this.diagrams=[];var q=null;this.selectPage=function(I){this.handlingResize||(this.currentPage=mxUtils.mod(I,this.diagrams.length),
this.updateGraphXml(Editor.parseDiagramNode(this.diagrams[this.currentPage])))};this.selectPageById=function(I){I=this.getIndexById(I);var G=0<=I;G&&this.selectPage(I);return G};g=mxUtils.bind(this,function(){if(null==this.xmlNode||"mxfile"!=this.xmlNode.nodeName)this.diagrams=[];this.xmlNode!=q&&(this.diagrams=this.xmlNode.getElementsByTagName("diagram"),q=this.xmlNode)});var y=this.graph.setBackgroundImage;this.graph.setBackgroundImage=function(I){if(null!=I&&Graph.isPageLink(I.src)){var G=I.src,
-aa=G.indexOf(",");0<aa&&(aa=d.getIndexById(G.substring(aa+1)),0<=aa&&(I=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[aa])),I.originalSrc=G))}y.apply(this,arguments)};var F=this.graph.getGraphBounds;this.graph.getGraphBounds=function(I){var G=F.apply(this,arguments);I=this.backgroundImage;if(null!=I){var aa=this.view.translate,ca=this.view.scale;G=mxRectangle.fromRectangle(G);G.add(new mxRectangle((aa.x+I.x)*ca,(aa.y+I.y)*ca,I.width*ca,I.height*ca))}return G};this.addListener("xmlNodeChanged",
+Z=G.indexOf(",");0<Z&&(Z=d.getIndexById(G.substring(Z+1)),0<=Z&&(I=d.getImageForGraphModel(Editor.parseDiagramNode(d.diagrams[Z])),I.originalSrc=G))}y.apply(this,arguments)};var F=this.graph.getGraphBounds;this.graph.getGraphBounds=function(I){var G=F.apply(this,arguments);I=this.backgroundImage;if(null!=I){var Z=this.view.translate,ca=this.view.scale;G=mxRectangle.fromRectangle(G);G.add(new mxRectangle((Z.x+I.x)*ca,(Z.y+I.y)*ca,I.width*ca,I.height*ca))}return G};this.addListener("xmlNodeChanged",
g);g();urlParams.page=d.currentPage;g=null;this.graph.getModel().beginUpdate();try{urlParams.nav=0!=this.graphConfig.nav?"1":"0",this.editor.setGraphXml(this.xmlNode),this.graph.view.scale=this.graphConfig.zoom||1,g=this.setLayersVisible(),this.responsive||(this.graph.border=null!=this.graphConfig.border?this.graphConfig.border:8)}finally{this.graph.getModel().endUpdate()}this.responsive||(this.graph.panningHandler.isForcePanningEvent=function(I){return!mxEvent.isPopupTrigger(I.getEvent())&&"auto"==
this.graph.container.style.overflow},this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.panningHandler.ignoreCell=!0,this.graph.panningHandler.usePopupTrigger=!1,this.graph.panningHandler.pinchEnabled=!1);this.graph.setPanning(!1);null!=this.graphConfig.toolbar?this.addToolbar():null!=this.graphConfig.title&&this.showTitleAsTooltip&&b.setAttribute("title",this.graphConfig.title);this.responsive||this.addSizeHandler();!this.showLayers(this.graph)||this.forceCenter||this.layersEnabled&&
!this.autoCrop||this.crop();this.addClickHandler(this.graph);this.graph.setTooltips(0!=this.graphConfig.tooltips);this.graph.initialViewState={translate:this.graph.view.translate.clone(),scale:this.graph.view.scale};null!=g&&this.setLayersVisible(g);this.graph.customLinkClicked=function(I){if(Graph.isPageLink(I)){var G=I.indexOf(",");d.selectPageById(I.substring(G+1))||alert(mxResources.get("pageNotFound")||"Page not found")}else this.handleCustomLink(I);return!0};var C=this.graph.foldTreeCell;this.graph.foldTreeCell=
@@ -4077,26 +4077,26 @@ null!=d||0!=this.graphConfig.resize||""==b.style.height?(d=null!=d?d:new mxPoint
GraphViewer.prototype.crop=function(){var b=this.graph,e=b.getGraphBounds(),k=b.border,n=b.view.scale;b.view.setTranslate(null!=e.x?Math.floor(b.view.translate.x-e.x/n+k):k,null!=e.y?Math.floor(b.view.translate.y-e.y/n+k):k)};GraphViewer.prototype.updateContainerWidth=function(b,e){b.style.width=e+"px"};GraphViewer.prototype.updateContainerHeight=function(b,e){if(this.forceCenter||this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||8==document.documentMode)b.style.height=e+"px"};
GraphViewer.prototype.showLayers=function(b,e){var k=this.graphConfig.layers;k=null!=k&&0<k.length?k.split(" "):[];var n=this.graphConfig.layerIds,D=null!=n&&0<n.length,t=!1;if(0<k.length||D||null!=e){e=null!=e?e.getModel():null;b=b.getModel();b.beginUpdate();try{var E=b.getChildCount(b.root);if(null==e){e=!1;t={};if(D)for(var d=0;d<n.length;d++){var f=b.getCell(n[d]);null!=f&&(e=!0,t[f.id]=!0)}else for(d=0;d<k.length;d++)f=b.getChildAt(b.root,parseInt(k[d])),null!=f&&(e=!0,t[f.id]=!0);for(d=0;e&&
d<E;d++)f=b.getChildAt(b.root,d),b.setVisible(f,t[f.id]||!1)}else for(d=0;d<E;d++)b.setVisible(b.getChildAt(b.root,d),e.isVisible(e.getChildAt(e.root,d)))}finally{b.endUpdate()}t=!0}return t};
-GraphViewer.prototype.addToolbar=function(){function b(ea,ka,ja,V){var J=document.createElement("div");J.style.borderRight="1px solid #d0d0d0";J.style.padding="3px 6px 3px 6px";mxEvent.addListener(J,"click",ea);null!=ja&&J.setAttribute("title",ja);J.style.display="inline-block";ea=document.createElement("img");ea.setAttribute("border","0");ea.setAttribute("src",ka);ea.style.width="18px";null==V||V?(mxEvent.addListener(J,"mouseenter",function(){J.style.backgroundColor="#ddd"}),mxEvent.addListener(J,
-"mouseleave",function(){J.style.backgroundColor="#eee"}),mxUtils.setOpacity(ea,60),J.style.cursor="pointer"):mxUtils.setOpacity(J,30);J.appendChild(ea);k.appendChild(J);m++;return J}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
-"border-box";k.style.whiteSpace="nowrap";k.style.textAlign="left";k.style.zIndex=this.toolbarZIndex;k.style.backgroundColor="#eee";k.style.height=this.toolbarHeight+"px";this.toolbar=k;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(k.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(k,30);var n=null,D=null,t=mxUtils.bind(this,function(ea){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,
-function(){mxUtils.setOpacity(k,0);n=null;D=window.setTimeout(mxUtils.bind(this,function(){k.style.display="none";D=null}),100)}),ea||200)}),E=mxUtils.bind(this,function(ea){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);k.style.display="";mxUtils.setOpacity(k,ea||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(ea){mxEvent.isTouchEvent(ea)||(E(30),t())}));mxEvent.addListener(k,
-mxClient.IS_POINTER?"pointermove":"mousemove",function(ea){mxEvent.consume(ea)});mxEvent.addListener(k,"mouseenter",mxUtils.bind(this,function(ea){E(100)}));mxEvent.addListener(k,"mousemove",mxUtils.bind(this,function(ea){E(100);mxEvent.consume(ea)}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(ea){mxEvent.isTouchEvent(ea)||E(30)}));var d=this.graph,f=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(ea,ka){this.startX=ka.getGraphX();
-this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(ea,ka){},mouseUp:function(ea,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,m=0,q=null,y=null,F=null,C=null,I=0;I<g.length;I++){var G=
-g[I];if("pages"==G){C=e.ownerDocument.createElement("div");C.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(C,70);var aa=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");aa.style.borderRightStyle="none";aa.style.paddingLeft="0px";aa.style.paddingRight="0px";k.appendChild(C);var ca=
-b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");ca.style.paddingLeft="0px";ca.style.paddingRight="0px";G=mxUtils.bind(this,function(){C.innerText="";mxUtils.write(C,this.currentPage+1+" / "+this.diagrams.length);C.style.display=1<this.diagrams.length?"inline-block":"none";aa.style.display=C.style.display;ca.style.display=C.style.display});this.addListener("graphChanged",G);G()}else if("zoom"==G)this.zoomEnabled&&(b(mxUtils.bind(this,
-function(){this.graph.zoomOut()}),Editor.zoomOutImage,mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==G){if(this.layersEnabled){var ba=this.graph.getModel(),
-Z=b(mxUtils.bind(this,function(ea){if(null!=q)q.parentNode.removeChild(q),q=null;else{q=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var ja=this.graph.getGraphBounds(),V=this.graph.view;0>ja.x||0>ja.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale}):null!=this.graph.originalViewState&&0<ja.x/V.scale+this.graph.originalViewState.translate.x-
-V.translate.x&&0<ja.y/V.scale+this.graph.originalViewState.translate.y-V.translate.y&&(V.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale})}}));mxEvent.addListener(q,"mouseleave",function(){q.parentNode.removeChild(q);q=null});ea=Z.getBoundingClientRect();q.style.width="140px";q.style.padding="2px 0px 2px 0px";q.style.border="1px solid #d0d0d0";
-q.style.backgroundColor="#eee";q.style.fontFamily=Editor.defaultHtmlFont;q.style.fontSize="11px";q.style.overflowY="auto";q.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";q.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(q,80);var ka=mxUtils.getDocumentScrollOrigin(document);q.style.left=ka.x+ea.left-1+"px";q.style.top=ka.y+ea.bottom-2+"px";document.body.appendChild(q)}}),Editor.layersImage,mxResources.get("layers")||"Layers");ba.addListener(mxEvent.CHANGE,function(){Z.style.display=
-1<ba.getChildCount(ba.root)?"inline-block":"none"});Z.style.display=1<ba.getChildCount(ba.root)?"inline-block":"none"}}else if("tags"==G){if(this.tagsEnabled){var qa=b(mxUtils.bind(this,function(ea){null==y&&(y=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),y.div.getElementsByTagName("div")[0].style.position="",y.div.style.maxHeight="160px",y.div.style.maxWidth="120px",y.div.style.padding="2px",y.div.style.overflow="auto",y.div.style.height="auto",y.div.style.position="fixed",
-y.div.style.fontFamily=Editor.defaultHtmlFont,y.div.style.fontSize="11px",y.div.style.backgroundColor="#eee",y.div.style.color="#000",y.div.style.border="1px solid #d0d0d0",y.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(y.div,80));if(null!=F)F.parentNode.removeChild(F),F=null;else{F=y.div;mxEvent.addListener(F,"mouseleave",function(){F.parentNode.removeChild(F);F=null});ea=qa.getBoundingClientRect();var ka=mxUtils.getDocumentScrollOrigin(document);F.style.left=ka.x+ea.left-1+"px";F.style.top=
-ka.y+ea.bottom-2+"px";document.body.appendChild(F);y.refresh()}}),Editor.tagsImage,mxResources.get("tags")||"Tags");ba.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==G?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&
+GraphViewer.prototype.addToolbar=function(){function b(fa,ka,ia,V){var L=document.createElement("div");L.style.borderRight="1px solid #d0d0d0";L.style.padding="3px 6px 3px 6px";mxEvent.addListener(L,"click",fa);null!=ia&&L.setAttribute("title",ia);L.style.display="inline-block";fa=document.createElement("img");fa.setAttribute("border","0");fa.setAttribute("src",ka);fa.style.width="18px";null==V||V?(mxEvent.addListener(L,"mouseenter",function(){L.style.backgroundColor="#ddd"}),mxEvent.addListener(L,
+"mouseleave",function(){L.style.backgroundColor="#eee"}),mxUtils.setOpacity(fa,60),L.style.cursor="pointer"):mxUtils.setOpacity(L,30);L.appendChild(fa);k.appendChild(L);m++;return L}var e=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?e.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(e.style.marginTop=this.toolbarHeight+"px");var k=e.ownerDocument.createElement("div");k.style.position="absolute";k.style.overflow="hidden";k.style.boxSizing=
+"border-box";k.style.whiteSpace="nowrap";k.style.textAlign="left";k.style.zIndex=this.toolbarZIndex;k.style.backgroundColor="#eee";k.style.height=this.toolbarHeight+"px";this.toolbar=k;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(k.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(k,30);var n=null,D=null,t=mxUtils.bind(this,function(fa){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);n=window.setTimeout(mxUtils.bind(this,
+function(){mxUtils.setOpacity(k,0);n=null;D=window.setTimeout(mxUtils.bind(this,function(){k.style.display="none";D=null}),100)}),fa||200)}),E=mxUtils.bind(this,function(fa){null!=n&&(window.clearTimeout(n),fadeThead=null);null!=D&&(window.clearTimeout(D),fadeThead2=null);k.style.display="";mxUtils.setOpacity(k,fa||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(fa){mxEvent.isTouchEvent(fa)||(E(30),t())}));mxEvent.addListener(k,
+mxClient.IS_POINTER?"pointermove":"mousemove",function(fa){mxEvent.consume(fa)});mxEvent.addListener(k,"mouseenter",mxUtils.bind(this,function(fa){E(100)}));mxEvent.addListener(k,"mousemove",mxUtils.bind(this,function(fa){E(100);mxEvent.consume(fa)}));mxEvent.addListener(k,"mouseleave",mxUtils.bind(this,function(fa){mxEvent.isTouchEvent(fa)||E(30)}));var d=this.graph,f=d.getTolerance();d.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(fa,ka){this.startX=ka.getGraphX();
+this.startY=ka.getGraphY();this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(fa,ka){},mouseUp:function(fa,ka){mxEvent.isTouchEvent(ka.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<f&&Math.abs(this.scrollTop-d.container.scrollTop)<f&&Math.abs(this.startX-ka.getGraphX())<f&&Math.abs(this.startY-ka.getGraphY())<f&&(0<parseFloat(k.style.opacity||0)?t():E(30))}})}for(var g=this.toolbarItems,m=0,q=null,y=null,F=null,C=null,I=0;I<g.length;I++){var G=
+g[I];if("pages"==G){C=e.ownerDocument.createElement("div");C.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(C,70);var Z=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");Z.style.borderRightStyle="none";Z.style.paddingLeft="0px";Z.style.paddingRight="0px";k.appendChild(C);var ca=
+b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");ca.style.paddingLeft="0px";ca.style.paddingRight="0px";G=mxUtils.bind(this,function(){C.innerText="";mxUtils.write(C,this.currentPage+1+" / "+this.diagrams.length);C.style.display=1<this.diagrams.length?"inline-block":"none";Z.style.display=C.style.display;ca.style.display=C.style.display});this.addListener("graphChanged",G);G()}else if("zoom"==G)this.zoomEnabled&&(b(mxUtils.bind(this,
+function(){this.graph.zoomOut()}),Editor.zoomOutImage,mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==G){if(this.layersEnabled){var aa=this.graph.getModel(),
+Y=b(mxUtils.bind(this,function(fa){if(null!=q)q.parentNode.removeChild(q),q=null;else{q=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var ia=this.graph.getGraphBounds(),V=this.graph.view;0>ia.x||0>ia.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale}):null!=this.graph.originalViewState&&0<ia.x/V.scale+this.graph.originalViewState.translate.x-
+V.translate.x&&0<ia.y/V.scale+this.graph.originalViewState.translate.y-V.translate.y&&(V.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:V.translate.clone(),scale:V.scale})}}));mxEvent.addListener(q,"mouseleave",function(){q.parentNode.removeChild(q);q=null});fa=Y.getBoundingClientRect();q.style.width="140px";q.style.padding="2px 0px 2px 0px";q.style.border="1px solid #d0d0d0";
+q.style.backgroundColor="#eee";q.style.fontFamily=Editor.defaultHtmlFont;q.style.fontSize="11px";q.style.overflowY="auto";q.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";q.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(q,80);var ka=mxUtils.getDocumentScrollOrigin(document);q.style.left=ka.x+fa.left-1+"px";q.style.top=ka.y+fa.bottom-2+"px";document.body.appendChild(q)}}),Editor.layersImage,mxResources.get("layers")||"Layers");aa.addListener(mxEvent.CHANGE,function(){Y.style.display=
+1<aa.getChildCount(aa.root)?"inline-block":"none"});Y.style.display=1<aa.getChildCount(aa.root)?"inline-block":"none"}}else if("tags"==G){if(this.tagsEnabled){var qa=b(mxUtils.bind(this,function(fa){null==y&&(y=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),y.div.getElementsByTagName("div")[0].style.position="",y.div.style.maxHeight="160px",y.div.style.maxWidth="120px",y.div.style.padding="2px",y.div.style.overflow="auto",y.div.style.height="auto",y.div.style.position="fixed",
+y.div.style.fontFamily=Editor.defaultHtmlFont,y.div.style.fontSize="11px",y.div.style.backgroundColor="#eee",y.div.style.color="#000",y.div.style.border="1px solid #d0d0d0",y.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(y.div,80));if(null!=F)F.parentNode.removeChild(F),F=null;else{F=y.div;mxEvent.addListener(F,"mouseleave",function(){F.parentNode.removeChild(F);F=null});fa=qa.getBoundingClientRect();var ka=mxUtils.getDocumentScrollOrigin(document);F.style.left=ka.x+fa.left-1+"px";F.style.top=
+ka.y+fa.bottom-2+"px";document.body.appendChild(F);y.refresh()}}),Editor.tagsImage,mxResources.get("tags")||"Tags");aa.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));qa.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==G?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&
(G=this.graphConfig["toolbar-buttons"][G],null!=G&&(G.elem=b(null==G.enabled||G.enabled?G.handler:function(){},G.image,G.title,G.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*m);null!=this.graphConfig.title&&(g=e.ownerDocument.createElement("div"),g.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",g.setAttribute("title",this.graphConfig.title),
-mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*m;var N=e.style.border,Y=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var ea=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
-{left:-ka.x,top:-ka.y};ea={left:ea.left-ka.left,top:ea.top-ka.top,bottom:ea.bottom-ka.top,right:ea.right-ka.left};k.style.left=ea.left+"px";"bottom"==this.graphConfig["toolbar-position"]?k.style.top=ea.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(k.style.marginTop=-this.toolbarHeight+"px",k.style.top=ea.top+1+"px"):k.style.top=ea.top+"px";"1px solid transparent"==N&&(e.style.border="1px solid #d0d0d0");document.body.appendChild(k);var ja=mxUtils.bind(this,function(){null!=k.parentNode&&
-k.parentNode.removeChild(k);null!=q&&(q.parentNode.removeChild(q),q=null);e.style.border=N});mxEvent.addListener(document,"mousemove",function(V){for(V=mxEvent.getSource(V);null!=V;){if(V==e||V==k||V==q)return;V=V.parentNode}ja()});mxEvent.addListener(document.body,"mouseleave",function(V){ja()})}else k.style.top=-this.toolbarHeight+"px",e.appendChild(k)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(e,"mouseenter",Y):Y();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=
-k.parentNode&&Y()})).observe(e)};GraphViewer.prototype.disableButton=function(b){var e=this.graphConfig["toolbar-buttons"]?this.graphConfig["toolbar-buttons"][b]:null;null!=e&&(mxUtils.setOpacity(e.elem,30),mxEvent.removeListener(e.elem,"click",e.handler),mxEvent.addListener(e.elem,"mouseenter",function(){e.elem.style.backgroundColor="#eee"}))};
+mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),k.appendChild(g),this.filename=g);this.minToolbarWidth=34*m;var Q=e.style.border,X=mxUtils.bind(this,function(){k.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,e.offsetWidth)+"px";k.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var fa=e.getBoundingClientRect(),ka=mxUtils.getScrollOrigin(document.body);ka="relative"===document.body.style.position?document.body.getBoundingClientRect():
+{left:-ka.x,top:-ka.y};fa={left:fa.left-ka.left,top:fa.top-ka.top,bottom:fa.bottom-ka.top,right:fa.right-ka.left};k.style.left=fa.left+"px";"bottom"==this.graphConfig["toolbar-position"]?k.style.top=fa.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(k.style.marginTop=-this.toolbarHeight+"px",k.style.top=fa.top+1+"px"):k.style.top=fa.top+"px";"1px solid transparent"==Q&&(e.style.border="1px solid #d0d0d0");document.body.appendChild(k);var ia=mxUtils.bind(this,function(){null!=k.parentNode&&
+k.parentNode.removeChild(k);null!=q&&(q.parentNode.removeChild(q),q=null);e.style.border=Q});mxEvent.addListener(document,"mousemove",function(V){for(V=mxEvent.getSource(V);null!=V;){if(V==e||V==k||V==q)return;V=V.parentNode}ia()});mxEvent.addListener(document.body,"mouseleave",function(V){ia()})}else k.style.top=-this.toolbarHeight+"px",e.appendChild(k)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(e,"mouseenter",X):X();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=
+k.parentNode&&X()})).observe(e)};GraphViewer.prototype.disableButton=function(b){var e=this.graphConfig["toolbar-buttons"]?this.graphConfig["toolbar-buttons"][b]:null;null!=e&&(mxUtils.setOpacity(e.elem,30),mxEvent.removeListener(e.elem,"click",e.handler),mxEvent.addListener(e.elem,"mouseenter",function(){e.elem.style.backgroundColor="#eee"}))};
GraphViewer.prototype.addClickHandler=function(b,e){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(k,n){if(null==n)for(var D=mxEvent.getSource(k);D!=b.container&&null!=D&&null==n;)"a"==D.nodeName.toLowerCase()&&(n=D.getAttribute("href")),D=D.parentNode;null!=e?null==n||b.isCustomLink(n)?mxEvent.consume(k):b.isExternalProtocol(n)||b.isBlankLink(n)||window.setTimeout(function(){e.destroy()},0):null!=n&&null==e&&b.isCustomLink(n)&&
(mxEvent.isTouchEvent(k)||!mxEvent.isPopupTrigger(k))&&b.customLinkClicked(n)&&(mxUtils.clearSelection(),mxEvent.consume(k))}),mxUtils.bind(this,function(k){null!=e||!this.lightboxClickEnabled||mxEvent.isTouchEvent(k)&&0!=this.toolbarItems.length||this.showLightbox()}))};
GraphViewer.prototype.showLightbox=function(b,e,k){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){b=null!=b?b:null!=this.graphConfig.editable?this.graphConfig.editable:!0;k={client:1,target:null!=k?k:"blank"};b&&(k.edit=this.graphConfig.edit||"_blank");if(null!=e?e:1)k.close=1;this.layersEnabled&&(k.layers=1);this.tagsEnabled&&(k.tags={});null!=this.graphConfig&&0!=this.graphConfig.nav&&(k.nav=1);null!=this.graphConfig&&null!=
@@ -4117,7 +4117,7 @@ GraphViewer.initCss=function(){try{var b=document.createElement("style");b.type=
GraphViewer.cachedUrls={};GraphViewer.getUrl=function(b,e,k){if(null!=GraphViewer.cachedUrls[b])e(GraphViewer.cachedUrls[b]);else{var n=null!=navigator.userAgent&&0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;n.open("GET",b);n.onload=function(){e(null!=n.getText?n.getText():n.responseText)};n.onerror=k;n.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(k){return window.setTimeout(k,20)},e=function(k,n){function D(){this.q=[];this.add=function(F){this.q.push(F)};var q,y;this.call=function(){q=0;for(y=this.q.length;q<y;q++)this.q[q].call()}}function t(q,y){return q.currentStyle?q.currentStyle[y]:window.getComputedStyle?window.getComputedStyle(q,null).getPropertyValue(y):q.style[y]}function E(q,y){if(!q.resizedAttached)q.resizedAttached=
new D,q.resizedAttached.add(y);else if(q.resizedAttached){q.resizedAttached.add(y);return}q.resizeSensor=document.createElement("div");q.resizeSensor.className="resize-sensor";q.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";q.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
-q.appendChild(q.resizeSensor);"static"==t(q,"position")&&(q.style.position="relative");var F=q.resizeSensor.childNodes[0],C=F.childNodes[0],I=q.resizeSensor.childNodes[1],G=function(){C.style.width="100000px";C.style.height="100000px";F.scrollLeft=1E5;F.scrollTop=1E5;I.scrollLeft=1E5;I.scrollTop=1E5};G();var aa=!1,ca=function(){q.resizedAttached&&(aa&&(q.resizedAttached.call(),aa=!1),b(ca))};b(ca);var ba,Z,qa,N;y=function(){if((qa=q.offsetWidth)!=ba||(N=q.offsetHeight)!=Z)aa=!0,ba=qa,Z=N;G()};var Y=
-function(ea,ka,ja){ea.attachEvent?ea.attachEvent("on"+ka,ja):ea.addEventListener(ka,ja)};Y(F,"scroll",y);Y(I,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var m=k.length;f<m;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<
-y;q++)e.detach(k[q]);else e.detach(k)}};e.detach=function(k){k.resizeSensor&&(k.removeChild(k.resizeSensor),delete k.resizeSensor,delete k.resizedAttached)};window.ResizeSensor=e})();
+q.appendChild(q.resizeSensor);"static"==t(q,"position")&&(q.style.position="relative");var F=q.resizeSensor.childNodes[0],C=F.childNodes[0],I=q.resizeSensor.childNodes[1],G=function(){C.style.width="100000px";C.style.height="100000px";F.scrollLeft=1E5;F.scrollTop=1E5;I.scrollLeft=1E5;I.scrollTop=1E5};G();var Z=!1,ca=function(){q.resizedAttached&&(Z&&(q.resizedAttached.call(),Z=!1),b(ca))};b(ca);var aa,Y,qa,Q;y=function(){if((qa=q.offsetWidth)!=aa||(Q=q.offsetHeight)!=Y)Z=!0,aa=qa,Y=Q;G()};var X=function(fa,
+ka,ia){fa.attachEvent?fa.attachEvent("on"+ka,ia):fa.addEventListener(ka,ia)};X(F,"scroll",y);X(I,"scroll",y)}var d=function(){GraphViewer.resizeSensorEnabled&&n()},f=Object.prototype.toString.call(k),g="[object Array]"===f||"[object NodeList]"===f||"[object HTMLCollection]"===f||"undefined"!==typeof jQuery&&k instanceof jQuery||"undefined"!==typeof Elements&&k instanceof Elements;if(g){f=0;for(var m=k.length;f<m;f++)E(k[f],d)}else E(k,d);this.detach=function(){if(g)for(var q=0,y=k.length;q<y;q++)e.detach(k[q]);
+else e.detach(k)}};e.detach=function(k){k.resizeSensor&&(k.removeChild(k.resizeSensor),delete k.resizeSensor,delete k.resizedAttached)};window.ResizeSensor=e})();
(function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})();
diff --git a/src/main/webapp/mxgraph/mxClient.js b/src/main/webapp/mxgraph/mxClient.js
index dfd5111a..39dcc795 100644
--- a/src/main/webapp/mxgraph/mxClient.js
+++ b/src/main/webapp/mxgraph/mxClient.js
@@ -1,4 +1,4 @@
-var mxClient={VERSION:"20.0.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/"),
+var mxClient={VERSION:"20.0.1",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]"!==
diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt
index 0a9acb17..c44bc4c0 100644
--- a/src/main/webapp/resources/dia_pt-br.txt
+++ b/src/main/webapp/resources/dia_pt-br.txt
@@ -126,7 +126,7 @@ clearWaypoints=Limpar pontos intermediários
clipart=Clipart
close=Fechar
closingFile=Fechando o arquivo
-realtimeCollaboration=Real-Time Collaboration
+realtimeCollaboration=Colaboração em tempo real
collaborator=Colaborador
collaborators=Colaboradores
collapse=Ocultar
@@ -429,7 +429,7 @@ ios=iOS
italic=Itálico
kennedy=Kennedy
keyboardShortcuts=Atalhos de teclado
-labels=Labels
+labels=RĂłtulos
layers=Camadas
landscape=Paisagem
language=Idioma
@@ -688,12 +688,12 @@ shadow=Sombra
shape=Forma
shapes=Formas
share=Compartilhar
-shareCursor=Share Mouse Cursor
+shareCursor=Compartilhar o ponteiro do mouse
shareLink=Link para edição compartilhada
sharingAvailable=O compartilhamento Ă© disponĂ­vel para arquivos salvos em Google Drive ou em OneDrive.
sharp=Quadrado
show=Mostrar
-showRemoteCursors=Show Remote Mouse Cursors
+showRemoteCursors=Mostrar os ponteiros do mouse de outras pessoas
showStartScreen=Mostrar tela de boas-vindas
sidebarTooltip=Clique para expandir. Arraste e solte as formas dentro do diagrama. Shift+clique para alterar a seleção. Alt+clique para inserir e conectar.
signs=Sinais
@@ -819,8 +819,8 @@ showLess=Mostrar menos
myDiagrams=Meus diagramas
allDiagrams=Todos os diagramas
recentlyUsed=Usados recentemente
-listView=List view
-gridView=Grid view
+listView=Visualização em lista
+gridView=Visualização em grade
resultsFor=Resultados para '{1}'
oneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / \ { | }
oneDriveInvalidDeviceName=The specified device name is invalid
@@ -1094,7 +1094,7 @@ selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Erro inesperado. NĂŁo foi possĂ­vel mostrar o diagrama
noRecentDiags=Nenhum diagrama recente encontrado
fetchingRecentFailed=Falha ao buscar os diagramas recentes
-useSrch2FindDiags=Use the search box to find draw.io diagrams
+useSrch2FindDiags=Use a caixa de pesquisa para encontrar diagramas draw.io
cantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.
cantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.
searchFailed=Searching failed. Please try again later.
@@ -1183,22 +1183,22 @@ spellCheck=Verificação ortográfica
noChange=Nenhuma alteração
lblToSvg=Converter textos para SVG
txtSettings=Configurações de texto
-LinksLost=Links will be lost
+LinksLost=Links serĂŁo descartados
arcSize=Arc Size
editConnectionPoints=Editar pontos de conexĂŁo
notInOffline=Not supported while offline
notInDesktop=Not supported in Desktop App
confConfigSpaceArchived=draw.io Configuration space (DRAWIOCONFIG) is archived. Please restore it first.
-confACleanOldVerStarted=Cleaning old diagram draft versions started
-confACleanOldVerDone=Cleaning old diagram draft versions finished
-confACleaningFile=Cleaning diagram draft "{1}" old versions
-confAFileCleaned=Cleaning diagram draft "{1}" done
-confAFileCleanFailed=Cleaning diagram draft "{1}" failed
-confACleanOnly=Clean Diagram Drafts Only
+confACleanOldVerStarted=Excluindo rascunhos antigos do diagrama
+confACleanOldVerDone=Rascunhos antigos do diagrama foram excluĂ­dos
+confACleaningFile=Excluindo versões antigas de rascunhos do diagrama "{1}"
+confAFileCleaned=O rascunho do diagrama "{1}" foi excluĂ­do
+confAFileCleanFailed=Falha ao excluir o rascunho do diagrama "{1}"
+confACleanOnly=Excluir apenas rascunhos do diagrama
brush=Brush
-openDevTools=Open Developer Tools
-autoBkp=Automatic Backup
-confAIgnoreCollectErr=Ignore collecting current pages errors
-drafts=Drafts
-draftSaveInt=Draft save interval [sec] (0 to disable)
-pluginsDisabled=External plugins disabled.
+openDevTools=Abrir as ferramentas para desenvolvedores
+autoBkp=Backup automático
+confAIgnoreCollectErr=Não coletar erros das páginas atuais
+drafts=Rascunhos
+draftSaveInt=Intervalo de salvamento de rascunhos [s] (0 para desabilitar)
+pluginsDisabled=Extensões externas desabilitadas.
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index ef353533..1ad0a70e 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 r=Promise.resolve();return i[e]||(r=new Promise((async r=>{if("document"in self){const i=document.createElement("script");i.src=e,document.head.appendChild(i),i.onload=r}else importScripts(e),r()}))),r.then((()=>{if(!i[e])throw new Error(`Module ${e} didn’t register its module`);return i[e]}))},r=(r,i)=>{Promise.all(r.map(e)).then((e=>i(1===e.length?e[0]:e)))},i={require:Promise.resolve(r)};self.define=(r,a,c)=>{i[r]||(i[r]=Promise.resolve().then((()=>{let i={};const s={uri:location.origin+r.slice(1)};return Promise.all(a.map((r=>{switch(r){case"exports":return i;case"module":return s;default:return e(r)}}))).then((e=>{const r=c(...e);return i.default||(i.default=r),i}))})))}}define("./service-worker.js",["./workbox-7a2a8380"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"0d3bde5e706e3405a5077bb8bdd262f5"},{url:"js/extensions.min.js",revision:"45df373f567b94c1dce78ba61b591983"},{url:"js/stencils.min.js",revision:"4dbdbc7cee6fc00d1b8c6fe1022a0989"},{url:"js/shapes-14-6-5.min.js",revision:"f0e1d4c09054df2f3ea3793491e9fe08"},{url:"js/math-print.js",revision:"8495f0dfe75795fcfbebea97060e1a17"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"4f2c07c4585347249c95cd9158872fb2"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"1d89a77a36e79daeb1686deab633048e"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"c96db1790184cb35781f791e8d1dafd9"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"7bb9525fbd4504dd6855663605476f56"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"e00ad51fc16b87c362d6eaf930ab1fa5"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"80d3c5ec6575b41d271eb6f7a6efe40b"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"fab9a95f19a57bb836e42f67a1c0078b"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"d089f12446d443ca01752a5115456fcc"},{url:"connect/confluence/viewer-init.js",revision:"2bd677096ebffd3aa5cab0c347851e3f"},{url:"connect/confluence/viewer.js",revision:"96cc3ed26b8ae45de1316e8a6684ee7e"},{url:"connect/confluence/viewer-1-4-42.html",revision:"4c58f3a1a4c99b1c4264593b6e05100b"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"7e198d0456c3075b4b305da188f09714"},{url:"connect/confluence/includeDiagram.html",revision:"5cefef0227d058cf716d1f51f2cf202f"},{url:"connect/confluence/macro-editor.js",revision:"412bc4b87e630b697a40f247c579d398"},{url:"math/es5/startup.js",revision:"dc7130cdc866593293dbb5dde11ceb40"},{url:"math/es5/core.js",revision:"f71bc0bfb7d2ac8261747f97a5d47dd4"},{url:"math/es5/output/svg.js",revision:"4f55967d16197ebb01b86356d8ab179a"},{url:"math/es5/input/tex.js",revision:"5c4f470da2ccb1acf85041fcecd6fff6"},{url:"math/es5/input/asciimath.js",revision:"c2d4076dd8e26d509bfe3a378e71cfa7"},{url:"resources/dia.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_am.txt",revision:"53e607067f1bf082d45edb8f8c30ad41"},{url:"resources/dia_ar.txt",revision:"992bdb4618731d50779bdda355318ca8"},{url:"resources/dia_bg.txt",revision:"932af7b9ee4870f7d52af33a06090b5f"},{url:"resources/dia_bn.txt",revision:"c1642ee22863d7ee601556723cd724e0"},{url:"resources/dia_bs.txt",revision:"509ef42a090def18ff23310cddeba7a1"},{url:"resources/dia_ca.txt",revision:"148bd2ba9c231b19f2f6fd1d9d558373"},{url:"resources/dia_cs.txt",revision:"ff841958f2440fec8189b801076015a2"},{url:"resources/dia_da.txt",revision:"265e6805e8adf5cf4db47477bfacfdac"},{url:"resources/dia_de.txt",revision:"49a4f2a4face0c3de722465237c8418d"},{url:"resources/dia_el.txt",revision:"1340e09f3423c374113c77c1870e54ef"},{url:"resources/dia_eo.txt",revision:"7cf08f9a404fa22c294d505fc86facd0"},{url:"resources/dia_es.txt",revision:"86955530e14ff702e590f3740d104dc8"},{url:"resources/dia_et.txt",revision:"979178af5eb62fae543b0bf931680a9f"},{url:"resources/dia_eu.txt",revision:"9cfe5c260d288e4983fa7908ae54e47f"},{url:"resources/dia_fa.txt",revision:"e08d629ddf1700ac8ca32c3b9f88f4a6"},{url:"resources/dia_fi.txt",revision:"d6914775046d3ac05d906bdbaf623d68"},{url:"resources/dia_fil.txt",revision:"574e2eaf0e290c91b130d59cac596312"},{url:"resources/dia_fr.txt",revision:"dcdd70d54e512ba1384ec66eaecbdb28"},{url:"resources/dia_gl.txt",revision:"7015d14c37ca26ab7caa2287a6eaa2df"},{url:"resources/dia_gu.txt",revision:"38d005642da4000e9e3f790039ca0916"},{url:"resources/dia_he.txt",revision:"094779320bbe89974bf991f78ddb6aea"},{url:"resources/dia_hi.txt",revision:"1d59e10218733d8e8a9d34447b269129"},{url:"resources/dia_hr.txt",revision:"372e38797a55b025da019877659bf1dd"},{url:"resources/dia_hu.txt",revision:"a3384b975b9d32b1b161599201cbfeb4"},{url:"resources/dia_id.txt",revision:"2e805efa18b29798becf33836024f3ab"},{url:"resources/dia_it.txt",revision:"80fc0815aa5d1bf2fcf34071d18334e8"},{url:"resources/dia_ja.txt",revision:"9cabb887e0f3474269a5ee67d0bed22f"},{url:"resources/dia_kn.txt",revision:"de6fc20419970fc2bd140104945ed3a1"},{url:"resources/dia_ko.txt",revision:"a5a89ff13b234ed926252600effd7d1f"},{url:"resources/dia_lt.txt",revision:"612b77e39dcfc76dc27bc9af361542a0"},{url:"resources/dia_lv.txt",revision:"c41d7178a021760ffe150df30a23326c"},{url:"resources/dia_ml.txt",revision:"ae34ca265b1ee668f8ced0911436fb85"},{url:"resources/dia_mr.txt",revision:"4b49edeb9d201adb5cb4262f93e75f8c"},{url:"resources/dia_ms.txt",revision:"87e267b6126063cc07cb4aab2e3726d7"},{url:"resources/dia_my.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_nl.txt",revision:"dc026fa06102da7dc7e1a3bcdcf745e5"},{url:"resources/dia_no.txt",revision:"e1c6f82893a4d13085c367d30d142bea"},{url:"resources/dia_pl.txt",revision:"19c06809138dadaa33e5afdb530ca503"},{url:"resources/dia_pt-br.txt",revision:"df58b42d81918fe5fe923793533388ea"},{url:"resources/dia_pt.txt",revision:"c9688d96c887b5b962cfc844ecd7f0fe"},{url:"resources/dia_ro.txt",revision:"33376bcb7f79553c020d649996c099b6"},{url:"resources/dia_ru.txt",revision:"f0987890664b06a813a941b019c5a01f"},{url:"resources/dia_si.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_sk.txt",revision:"970f2922db33c2a5b36d9c1f828a52a8"},{url:"resources/dia_sl.txt",revision:"df2eafd678af33891f15a0bee7df20d2"},{url:"resources/dia_sr.txt",revision:"1a98e9d86b207b629c04e939cc3a5928"},{url:"resources/dia_sv.txt",revision:"408f84debcea459b390adf5e0485746b"},{url:"resources/dia_sw.txt",revision:"5844365571c556db1bdc02924ab889b3"},{url:"resources/dia_ta.txt",revision:"c4c82fc78958023800c463ef1a9969ff"},{url:"resources/dia_te.txt",revision:"1f8e4ed9acb705d8be85f9156e622964"},{url:"resources/dia_th.txt",revision:"737b6af0751c5626785439dcd4471707"},{url:"resources/dia_tr.txt",revision:"4e5e5d05c301b3228cc5715502ff489d"},{url:"resources/dia_uk.txt",revision:"7b866d10e50a838a1c23ab4ae3b34967"},{url:"resources/dia_vi.txt",revision:"cc272ead4afb30e17ed43d76f21cf2b5"},{url:"resources/dia_zh-tw.txt",revision:"b165d55938f02caefc7e1f4926cdf867"},{url:"resources/dia_zh.txt",revision:"4e03583f54880244cf56bf98522a293b"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
+if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let r=Promise.resolve();return i[e]||(r=new Promise((async r=>{if("document"in self){const i=document.createElement("script");i.src=e,document.head.appendChild(i),i.onload=r}else importScripts(e),r()}))),r.then((()=>{if(!i[e])throw new Error(`Module ${e} didn’t register its module`);return i[e]}))},r=(r,i)=>{Promise.all(r.map(e)).then((e=>i(1===e.length?e[0]:e)))},i={require:Promise.resolve(r)};self.define=(r,a,c)=>{i[r]||(i[r]=Promise.resolve().then((()=>{let i={};const s={uri:location.origin+r.slice(1)};return Promise.all(a.map((r=>{switch(r){case"exports":return i;case"module":return s;default:return e(r)}}))).then((e=>{const r=c(...e);return i.default||(i.default=r),i}))})))}}define("./service-worker.js",["./workbox-7a2a8380"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"7430102c859edeea156be9222dc6a7c7"},{url:"js/extensions.min.js",revision:"45df373f567b94c1dce78ba61b591983"},{url:"js/stencils.min.js",revision:"4dbdbc7cee6fc00d1b8c6fe1022a0989"},{url:"js/shapes-14-6-5.min.js",revision:"f0e1d4c09054df2f3ea3793491e9fe08"},{url:"js/math-print.js",revision:"8495f0dfe75795fcfbebea97060e1a17"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"4f2c07c4585347249c95cd9158872fb2"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"3f45b14ab84babb173e51078296cc235"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"c96db1790184cb35781f791e8d1dafd9"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"7bb9525fbd4504dd6855663605476f56"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"e00ad51fc16b87c362d6eaf930ab1fa5"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"80d3c5ec6575b41d271eb6f7a6efe40b"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"fab9a95f19a57bb836e42f67a1c0078b"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"d089f12446d443ca01752a5115456fcc"},{url:"connect/confluence/viewer-init.js",revision:"2bd677096ebffd3aa5cab0c347851e3f"},{url:"connect/confluence/viewer.js",revision:"96cc3ed26b8ae45de1316e8a6684ee7e"},{url:"connect/confluence/viewer-1-4-42.html",revision:"4c58f3a1a4c99b1c4264593b6e05100b"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"7e198d0456c3075b4b305da188f09714"},{url:"connect/confluence/includeDiagram.html",revision:"5cefef0227d058cf716d1f51f2cf202f"},{url:"connect/confluence/macro-editor.js",revision:"412bc4b87e630b697a40f247c579d398"},{url:"math/es5/startup.js",revision:"dc7130cdc866593293dbb5dde11ceb40"},{url:"math/es5/core.js",revision:"f71bc0bfb7d2ac8261747f97a5d47dd4"},{url:"math/es5/output/svg.js",revision:"4f55967d16197ebb01b86356d8ab179a"},{url:"math/es5/input/tex.js",revision:"5c4f470da2ccb1acf85041fcecd6fff6"},{url:"math/es5/input/asciimath.js",revision:"c2d4076dd8e26d509bfe3a378e71cfa7"},{url:"resources/dia.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_am.txt",revision:"53e607067f1bf082d45edb8f8c30ad41"},{url:"resources/dia_ar.txt",revision:"992bdb4618731d50779bdda355318ca8"},{url:"resources/dia_bg.txt",revision:"932af7b9ee4870f7d52af33a06090b5f"},{url:"resources/dia_bn.txt",revision:"c1642ee22863d7ee601556723cd724e0"},{url:"resources/dia_bs.txt",revision:"509ef42a090def18ff23310cddeba7a1"},{url:"resources/dia_ca.txt",revision:"148bd2ba9c231b19f2f6fd1d9d558373"},{url:"resources/dia_cs.txt",revision:"ff841958f2440fec8189b801076015a2"},{url:"resources/dia_da.txt",revision:"265e6805e8adf5cf4db47477bfacfdac"},{url:"resources/dia_de.txt",revision:"49a4f2a4face0c3de722465237c8418d"},{url:"resources/dia_el.txt",revision:"1340e09f3423c374113c77c1870e54ef"},{url:"resources/dia_eo.txt",revision:"7cf08f9a404fa22c294d505fc86facd0"},{url:"resources/dia_es.txt",revision:"86955530e14ff702e590f3740d104dc8"},{url:"resources/dia_et.txt",revision:"979178af5eb62fae543b0bf931680a9f"},{url:"resources/dia_eu.txt",revision:"9cfe5c260d288e4983fa7908ae54e47f"},{url:"resources/dia_fa.txt",revision:"e08d629ddf1700ac8ca32c3b9f88f4a6"},{url:"resources/dia_fi.txt",revision:"d6914775046d3ac05d906bdbaf623d68"},{url:"resources/dia_fil.txt",revision:"574e2eaf0e290c91b130d59cac596312"},{url:"resources/dia_fr.txt",revision:"dcdd70d54e512ba1384ec66eaecbdb28"},{url:"resources/dia_gl.txt",revision:"7015d14c37ca26ab7caa2287a6eaa2df"},{url:"resources/dia_gu.txt",revision:"38d005642da4000e9e3f790039ca0916"},{url:"resources/dia_he.txt",revision:"094779320bbe89974bf991f78ddb6aea"},{url:"resources/dia_hi.txt",revision:"1d59e10218733d8e8a9d34447b269129"},{url:"resources/dia_hr.txt",revision:"372e38797a55b025da019877659bf1dd"},{url:"resources/dia_hu.txt",revision:"a3384b975b9d32b1b161599201cbfeb4"},{url:"resources/dia_id.txt",revision:"2e805efa18b29798becf33836024f3ab"},{url:"resources/dia_it.txt",revision:"80fc0815aa5d1bf2fcf34071d18334e8"},{url:"resources/dia_ja.txt",revision:"9cabb887e0f3474269a5ee67d0bed22f"},{url:"resources/dia_kn.txt",revision:"de6fc20419970fc2bd140104945ed3a1"},{url:"resources/dia_ko.txt",revision:"a5a89ff13b234ed926252600effd7d1f"},{url:"resources/dia_lt.txt",revision:"612b77e39dcfc76dc27bc9af361542a0"},{url:"resources/dia_lv.txt",revision:"c41d7178a021760ffe150df30a23326c"},{url:"resources/dia_ml.txt",revision:"ae34ca265b1ee668f8ced0911436fb85"},{url:"resources/dia_mr.txt",revision:"4b49edeb9d201adb5cb4262f93e75f8c"},{url:"resources/dia_ms.txt",revision:"87e267b6126063cc07cb4aab2e3726d7"},{url:"resources/dia_my.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_nl.txt",revision:"dc026fa06102da7dc7e1a3bcdcf745e5"},{url:"resources/dia_no.txt",revision:"e1c6f82893a4d13085c367d30d142bea"},{url:"resources/dia_pl.txt",revision:"19c06809138dadaa33e5afdb530ca503"},{url:"resources/dia_pt-br.txt",revision:"fffcdfcb5dcc3034468796aaaaa5851f"},{url:"resources/dia_pt.txt",revision:"c9688d96c887b5b962cfc844ecd7f0fe"},{url:"resources/dia_ro.txt",revision:"33376bcb7f79553c020d649996c099b6"},{url:"resources/dia_ru.txt",revision:"f0987890664b06a813a941b019c5a01f"},{url:"resources/dia_si.txt",revision:"2956f21bac002468735a100038cb676c"},{url:"resources/dia_sk.txt",revision:"970f2922db33c2a5b36d9c1f828a52a8"},{url:"resources/dia_sl.txt",revision:"df2eafd678af33891f15a0bee7df20d2"},{url:"resources/dia_sr.txt",revision:"1a98e9d86b207b629c04e939cc3a5928"},{url:"resources/dia_sv.txt",revision:"408f84debcea459b390adf5e0485746b"},{url:"resources/dia_sw.txt",revision:"5844365571c556db1bdc02924ab889b3"},{url:"resources/dia_ta.txt",revision:"c4c82fc78958023800c463ef1a9969ff"},{url:"resources/dia_te.txt",revision:"1f8e4ed9acb705d8be85f9156e622964"},{url:"resources/dia_th.txt",revision:"737b6af0751c5626785439dcd4471707"},{url:"resources/dia_tr.txt",revision:"4e5e5d05c301b3228cc5715502ff489d"},{url:"resources/dia_uk.txt",revision:"7b866d10e50a838a1c23ab4ae3b34967"},{url:"resources/dia_vi.txt",revision:"cc272ead4afb30e17ed43d76f21cf2b5"},{url:"resources/dia_zh-tw.txt",revision:"b165d55938f02caefc7e1f4926cdf867"},{url:"resources/dia_zh.txt",revision:"4e03583f54880244cf56bf98522a293b"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
//# sourceMappingURL=service-worker.js.map
diff --git a/src/main/webapp/service-worker.js.map b/src/main/webapp/service-worker.js.map
index f78e73fc..a29b569a 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/d5409d1be53cbdaaaaee26df4bdf1b91/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.19.3/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"0d3bde5e706e3405a5077bb8bdd262f5\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"45df373f567b94c1dce78ba61b591983\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"4dbdbc7cee6fc00d1b8c6fe1022a0989\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"f0e1d4c09054df2f3ea3793491e9fe08\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"8495f0dfe75795fcfbebea97060e1a17\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"4f2c07c4585347249c95cd9158872fb2\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"1d89a77a36e79daeb1686deab633048e\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"c96db1790184cb35781f791e8d1dafd9\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"7bb9525fbd4504dd6855663605476f56\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"e00ad51fc16b87c362d6eaf930ab1fa5\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"80d3c5ec6575b41d271eb6f7a6efe40b\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"fab9a95f19a57bb836e42f67a1c0078b\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"d089f12446d443ca01752a5115456fcc\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"2bd677096ebffd3aa5cab0c347851e3f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"96cc3ed26b8ae45de1316e8a6684ee7e\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"4c58f3a1a4c99b1c4264593b6e05100b\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"7e198d0456c3075b4b305da188f09714\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"5cefef0227d058cf716d1f51f2cf202f\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"412bc4b87e630b697a40f247c579d398\"\n },\n {\n \"url\": \"math/es5/startup.js\",\n \"revision\": \"dc7130cdc866593293dbb5dde11ceb40\"\n },\n {\n \"url\": \"math/es5/core.js\",\n \"revision\": \"f71bc0bfb7d2ac8261747f97a5d47dd4\"\n },\n {\n \"url\": \"math/es5/output/svg.js\",\n \"revision\": \"4f55967d16197ebb01b86356d8ab179a\"\n },\n {\n \"url\": \"math/es5/input/tex.js\",\n \"revision\": \"5c4f470da2ccb1acf85041fcecd6fff6\"\n },\n {\n \"url\": \"math/es5/input/asciimath.js\",\n \"revision\": \"c2d4076dd8e26d509bfe3a378e71cfa7\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"53e607067f1bf082d45edb8f8c30ad41\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"992bdb4618731d50779bdda355318ca8\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"932af7b9ee4870f7d52af33a06090b5f\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"c1642ee22863d7ee601556723cd724e0\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"509ef42a090def18ff23310cddeba7a1\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"148bd2ba9c231b19f2f6fd1d9d558373\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"ff841958f2440fec8189b801076015a2\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"265e6805e8adf5cf4db47477bfacfdac\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"49a4f2a4face0c3de722465237c8418d\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"1340e09f3423c374113c77c1870e54ef\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"7cf08f9a404fa22c294d505fc86facd0\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"86955530e14ff702e590f3740d104dc8\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"979178af5eb62fae543b0bf931680a9f\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"9cfe5c260d288e4983fa7908ae54e47f\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"e08d629ddf1700ac8ca32c3b9f88f4a6\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"d6914775046d3ac05d906bdbaf623d68\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"574e2eaf0e290c91b130d59cac596312\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"dcdd70d54e512ba1384ec66eaecbdb28\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"7015d14c37ca26ab7caa2287a6eaa2df\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"38d005642da4000e9e3f790039ca0916\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"094779320bbe89974bf991f78ddb6aea\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"1d59e10218733d8e8a9d34447b269129\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"372e38797a55b025da019877659bf1dd\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"a3384b975b9d32b1b161599201cbfeb4\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"2e805efa18b29798becf33836024f3ab\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"80fc0815aa5d1bf2fcf34071d18334e8\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"9cabb887e0f3474269a5ee67d0bed22f\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"de6fc20419970fc2bd140104945ed3a1\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"a5a89ff13b234ed926252600effd7d1f\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"612b77e39dcfc76dc27bc9af361542a0\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"c41d7178a021760ffe150df30a23326c\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"ae34ca265b1ee668f8ced0911436fb85\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"4b49edeb9d201adb5cb4262f93e75f8c\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"87e267b6126063cc07cb4aab2e3726d7\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"dc026fa06102da7dc7e1a3bcdcf745e5\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"e1c6f82893a4d13085c367d30d142bea\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"19c06809138dadaa33e5afdb530ca503\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"df58b42d81918fe5fe923793533388ea\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"c9688d96c887b5b962cfc844ecd7f0fe\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"33376bcb7f79553c020d649996c099b6\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"f0987890664b06a813a941b019c5a01f\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"970f2922db33c2a5b36d9c1f828a52a8\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"df2eafd678af33891f15a0bee7df20d2\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"1a98e9d86b207b629c04e939cc3a5928\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"408f84debcea459b390adf5e0485746b\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"5844365571c556db1bdc02924ab889b3\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"c4c82fc78958023800c463ef1a9969ff\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"1f8e4ed9acb705d8be85f9156e622964\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"737b6af0751c5626785439dcd4471707\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"4e5e5d05c301b3228cc5715502ff489d\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"7b866d10e50a838a1c23ab4ae3b34967\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"cc272ead4afb30e17ed43d76f21cf2b5\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"b165d55938f02caefc7e1f4926cdf867\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"4e03583f54880244cf56bf98522a293b\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,YACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC"} \ No newline at end of file
+{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/1f5d40af2dd470e5a3b422be6f08923e/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.19.3/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"7430102c859edeea156be9222dc6a7c7\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"45df373f567b94c1dce78ba61b591983\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"4dbdbc7cee6fc00d1b8c6fe1022a0989\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"f0e1d4c09054df2f3ea3793491e9fe08\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"8495f0dfe75795fcfbebea97060e1a17\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"4f2c07c4585347249c95cd9158872fb2\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"3f45b14ab84babb173e51078296cc235\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"c96db1790184cb35781f791e8d1dafd9\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"7bb9525fbd4504dd6855663605476f56\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"e00ad51fc16b87c362d6eaf930ab1fa5\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"80d3c5ec6575b41d271eb6f7a6efe40b\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"fab9a95f19a57bb836e42f67a1c0078b\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"d089f12446d443ca01752a5115456fcc\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"2bd677096ebffd3aa5cab0c347851e3f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"96cc3ed26b8ae45de1316e8a6684ee7e\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"4c58f3a1a4c99b1c4264593b6e05100b\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"7e198d0456c3075b4b305da188f09714\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"5cefef0227d058cf716d1f51f2cf202f\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"412bc4b87e630b697a40f247c579d398\"\n },\n {\n \"url\": \"math/es5/startup.js\",\n \"revision\": \"dc7130cdc866593293dbb5dde11ceb40\"\n },\n {\n \"url\": \"math/es5/core.js\",\n \"revision\": \"f71bc0bfb7d2ac8261747f97a5d47dd4\"\n },\n {\n \"url\": \"math/es5/output/svg.js\",\n \"revision\": \"4f55967d16197ebb01b86356d8ab179a\"\n },\n {\n \"url\": \"math/es5/input/tex.js\",\n \"revision\": \"5c4f470da2ccb1acf85041fcecd6fff6\"\n },\n {\n \"url\": \"math/es5/input/asciimath.js\",\n \"revision\": \"c2d4076dd8e26d509bfe3a378e71cfa7\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"53e607067f1bf082d45edb8f8c30ad41\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"992bdb4618731d50779bdda355318ca8\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"932af7b9ee4870f7d52af33a06090b5f\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"c1642ee22863d7ee601556723cd724e0\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"509ef42a090def18ff23310cddeba7a1\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"148bd2ba9c231b19f2f6fd1d9d558373\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"ff841958f2440fec8189b801076015a2\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"265e6805e8adf5cf4db47477bfacfdac\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"49a4f2a4face0c3de722465237c8418d\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"1340e09f3423c374113c77c1870e54ef\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"7cf08f9a404fa22c294d505fc86facd0\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"86955530e14ff702e590f3740d104dc8\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"979178af5eb62fae543b0bf931680a9f\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"9cfe5c260d288e4983fa7908ae54e47f\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"e08d629ddf1700ac8ca32c3b9f88f4a6\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"d6914775046d3ac05d906bdbaf623d68\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"574e2eaf0e290c91b130d59cac596312\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"dcdd70d54e512ba1384ec66eaecbdb28\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"7015d14c37ca26ab7caa2287a6eaa2df\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"38d005642da4000e9e3f790039ca0916\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"094779320bbe89974bf991f78ddb6aea\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"1d59e10218733d8e8a9d34447b269129\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"372e38797a55b025da019877659bf1dd\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"a3384b975b9d32b1b161599201cbfeb4\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"2e805efa18b29798becf33836024f3ab\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"80fc0815aa5d1bf2fcf34071d18334e8\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"9cabb887e0f3474269a5ee67d0bed22f\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"de6fc20419970fc2bd140104945ed3a1\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"a5a89ff13b234ed926252600effd7d1f\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"612b77e39dcfc76dc27bc9af361542a0\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"c41d7178a021760ffe150df30a23326c\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"ae34ca265b1ee668f8ced0911436fb85\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"4b49edeb9d201adb5cb4262f93e75f8c\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"87e267b6126063cc07cb4aab2e3726d7\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"dc026fa06102da7dc7e1a3bcdcf745e5\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"e1c6f82893a4d13085c367d30d142bea\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"19c06809138dadaa33e5afdb530ca503\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"fffcdfcb5dcc3034468796aaaaa5851f\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"c9688d96c887b5b962cfc844ecd7f0fe\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"33376bcb7f79553c020d649996c099b6\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"f0987890664b06a813a941b019c5a01f\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"2956f21bac002468735a100038cb676c\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"970f2922db33c2a5b36d9c1f828a52a8\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"df2eafd678af33891f15a0bee7df20d2\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"1a98e9d86b207b629c04e939cc3a5928\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"408f84debcea459b390adf5e0485746b\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"5844365571c556db1bdc02924ab889b3\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"c4c82fc78958023800c463ef1a9969ff\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"1f8e4ed9acb705d8be85f9156e622964\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"737b6af0751c5626785439dcd4471707\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"4e5e5d05c301b3228cc5715502ff489d\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"7b866d10e50a838a1c23ab4ae3b34967\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"cc272ead4afb30e17ed43d76f21cf2b5\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"b165d55938f02caefc7e1f4926cdf867\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"4e03583f54880244cf56bf98522a293b\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,YACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC"} \ No newline at end of file